В процессе эксплуатации мобильных приложений, работающих в связке с настольными конфигурациями 1С, мы часто сталкиваемся с проблемами обмена данными. Одной из наиболее распространенных и при этом сбивающих с толку ошибок является сообщение о нарушении порядка следования сообщений. В этой статье мы подробно разберем ситуацию, когда мобильное приложение «1С:Мой бизнес» перестает синхронизироваться с конфигурацией «1С:Управление нашей фирмой 3.0», выдавая длинный стек ошибок в журнале регистрации.
Давайте посмотрим на исходные данные проблемы. У нас имеется развернутая база 1С:УНФ 3.0 (например, версии 3.0.6.210) на платформе 8.3.23. В качестве веб-сервера используется Apache 2.4. Пользователь пытается настроить обмен с приложением «1С:Мой бизнес», но получает отказ.
В журнале регистрации мы видим следующую ключевую информацию:
Нарушен порядок следования сообщений обмена.
Не удалось выполнить отправку данных.
{ОбщийМодуль.ОбменМобильноеПриложениеОбщее.Модуль(431)}:ПроверитьОчередьСообщенийОбмена(УзелОбмена, НомерПринятого);
Также в логах фигурирует ошибка выполнения фонового задания с идентификатором (GUID) и исключение, вызванное из встроенного языка. Важно отметить деталь: стандартное мобильное приложение 1С:УНФ может работать корректно, в то время как приложение «1С:Мой бизнес» выдает ошибку. Это указывает на то, что проблема может крыться не только в настройках сервера, но и в специфике конкретного узла обмена.
Разберем механику обмена. Обмен между 1С и мобильным устройством происходит пакетами. У каждого пакета есть порядковый номер.
Поскольку ошибка связана с рассинхронизацией счетчиков, попытки «починить» текущее соединение программно зачастую нецелесообразны. Самый эффективный способ — пересоздать пару «Устройство — Сервер».
Давайте выполним следующие шаги:
Перейдите в раздел Настройки (или Администрирование), затем выберите пункт Интеграции или Обмен с мобильными приложениями.
В открывшемся списке найдите запись, соответствующую именно тому устройству, с которым возникла проблема. Обратите внимание: если у вас подключено несколько устройств, ориентируйтесь на дату последней активности или наименование.
Если сброс узла не помог, или проблема повторяется регулярно, давайте проверим настройки веб-сервера. Веб-сервер Apache имеет специфические особенности при работе с заголовками авторизации 1С, особенно если используется кириллица или нестандартные методы аутентификации мобильных приложений.
Рассмотрим конфигурационный файл httpd.conf. Нам необходимо убедиться, что заголовки авторизации корректно передаются в процесс 1С.
Откройте файл конфигурации Apache и добавьте следующую строку, если её там нет:
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
После внесения изменений обязательно перезапустите службу Apache. Это часто решает проблемы, когда мобильное приложение не может пройти аутентификацию на определенном этапе обмена, что косвенно приводит к сбоям в очереди сообщений.
В тексте ошибки, приведенном автором, есть строка:
ВызватьИсключение(НСтр("ru='Не удалось выполнить отправку данных. Подробности см. в Журнале регистрации информационной базы.'"));
Это означает, что мы видим лишь «верхушку айсберга». Реальная причина ошибки (почему именно не удалось сформировать сообщение) произошла раньше и была «обернута» в это общее исключение.
Давайте научимся находить первопричину. Для этого:
7693c9a0-6baa-467f-8b0f-8bf39a84261b).Комментарий, если GUID записан туда).Просмотрев записи, предшествующие финальной ошибке (буквально за доли секунды до нее), вы можете обнаружить реальную проблему:
В вопросе указана версия платформы 8.3.23.1997. Стоит отметить, что в ветке 8.3.23 наблюдались проблемы с работой HTTP-сервисов и сериализацией JSON, которые активно используются мобильными приложениями.
Если предыдущие методы не дали стабильного результата, настоятельно рекомендуется:
Ошибка синхронизации «Нарушен порядок следования сообщений» в 90% случаев решается полной переинициализацией обмена (удалением и созданием нового узла). Это связано с тем, что механизмы обмена 1С жестко контролируют целостность пакетов данных. Не тратьте время на попытки «подкрутить» номера сообщений вручную — это небезопасно для данных. Действуйте радикально: удалите настройку и подключитесь заново, предварительно проверив настройки веб-сервера.