Синхронизация мобильного приложения 1С:Заказы с основной базой 1С:Управление торговлей 11 — это процесс, который задействует множество звеньев: мобильное устройство, интернет-канал, веб-сервер и саму базу данных. Ошибка при получении клиентов является одной из самых распространенных, так как справочник Партнеры (или Контрагенты) обычно является самым объемным в системе. Разберем детально, почему это происходит и как настроить стабильный обмен данными.
Первым делом проанализируем базовый, но критически важный фактор — системное время. В протоколах обмена данными и при работе с SSL-сертификатами разница во времени между клиентом (смартфоном) и сервером даже в несколько минут может привести к разрыву соединения или отказу в авторизации. Убедимся, что на обоих устройствах включена автоматическая синхронизация времени по сети (NTP). Это исключит простейшую причину ошибки, когда сервер считает сессию устаревшей сразу после ее начала.
Если мелкие справочники (например, склады или виды цен) загружаются успешно, а на справочнике «Клиенты» процесс прерывается через 5–10 минут, мы имеем дело с таймаутом выполнения операции. Справочник клиентов может содержать тысячи записей, и серверу требуется время на их упаковку в XML или JSON. Рассмотрим, как увеличить время ожидания на примере IIS:
connectionTimeout (время ожидания подключения). По умолчанию там может стоять 120 секунд — для первичной синхронизации этого часто недостаточно.web.config, который находится в папке с публикацией базы. Нам необходимо добавить или изменить параметры в секции system.web:
<system.web>
<httpRuntime executionTimeout="1200" maxRequestLength="102400" />
</system.web>
В данном примере мы установили executionTimeout в значение 1200 секунд (20 минут), что позволит серверу завершить формирование тяжелого пакета данных без принудительного разрыва соединения.
Рассмотрим ситуацию, когда база данных слишком велика для мобильного устройства. Пытаться выгрузить 50 000 клиентов в телефон — плохая практика. Проанализируем настройки синхронизации в самой 1С:Управлении торговлей. Выясним, можно ли сократить объем данных:
Иногда процесс формирования пакета данных «спотыкается» о конкретную запись в справочнике. Выясним, нет ли в базе некорректных данных. Спецсимволы (невидимые управляющие символы ASCII), попавшие в наименование клиента при копировании из внешних файлов, могут привести к тому, что сформированный XML-файл станет невалидным. Проанализируем справочник с помощью несложной обработки или запроса, чтобы найти символы с кодами меньше 32 (кроме перевода строки).
Также важно проверить битые ссылки. Если у клиента указан менеджер или основной договор, который был физически удален из базы (объект не найден), механизм сериализации 1С может выдать ошибку при попытке обращения к свойствам этого объекта.
Когда в мобильном приложении мы видим лаконичное сообщение «Ошибка получения клиентов», на стороне сервера 1С фиксируется гораздо больше информации. Разберем по шагам, как найти причину:
Если в журнале мы видим запись вида Недостаточно памяти, это сигнал к тому, что серверу 1С не хватает ресурсов для обработки запроса. В этом случае поможет только секционирование данных (выгрузка частями) или увеличение оперативной памяти на сервере приложений.
Как отмечалось в обсуждении, для первого запуска синхронизации, когда данных передается больше всего, рекомендуется использовать стабильное соединение. Попробуем выполнить первую загрузку, находясь в одной локальной сети с сервером через Wi-Fi. Это позволит исключить проблемы нестабильных мобильных сетей (3G/LTE), где кратковременная потеря пакетов может привести к обрыву длительной HTTP-сессии. Если в локальной сети ошибка не воспроизводится, значит, проблема в сетевом оборудовании или настройках безопасности (Firewall/Antivirus), которые разрывают «подозрительно длинные» соединения.
Проанализируем программную среду. Убедимся, что версия мобильного приложения соответствует требованиям релиза конфигурации 11.4.6.207. При использовании протокола HTTPS выясним, является ли сертификат доверенным. Если используется самоподписанный сертификат, его необходимо предварительно установить на мобильное устройство, иначе система безопасности Android или iOS заблокирует передачу данных сразу после установки соединения.
Подводя итог, можно сказать: решение проблемы лежит в плоскости увеличения лимитов ожидания веб-сервера и разумного ограничения объема выгружаемых клиентов. Совместное применение этих мер позволяет добиться стабильной работы мобильного рабочего места даже при наличии больших справочников.