1С:Заказы — Как исправить ошибку получения клиентов при синхронизации?

Системный администратор 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Синхронизация мобильного приложения 1С:Заказы с основной базой 1С:Управление торговлей 11 — это процесс, который задействует множество звеньев: мобильное устройство, интернет-канал, веб-сервер и саму базу данных. Ошибка при получении клиентов является одной из самых распространенных, так как справочник Партнеры (или Контрагенты) обычно является самым объемным в системе. Разберем детально, почему это происходит и как настроить стабильный обмен данными.

Проверка синхронизации времени на сервере и устройстве

Первым делом проанализируем базовый, но критически важный фактор — системное время. В протоколах обмена данными и при работе с SSL-сертификатами разница во времени между клиентом (смартфоном) и сервером даже в несколько минут может привести к разрыву соединения или отказу в авторизации. Убедимся, что на обоих устройствах включена автоматическая синхронизация времени по сети (NTP). Это исключит простейшую причину ошибки, когда сервер считает сессию устаревшей сразу после ее начала.

Настройка таймаутов веб-сервера (IIS или Apache)

Если мелкие справочники (например, склады или виды цен) загружаются успешно, а на справочнике «Клиенты» процесс прерывается через 5–10 минут, мы имеем дело с таймаутом выполнения операции. Справочник клиентов может содержать тысячи записей, и серверу требуется время на их упаковку в XML или JSON. Рассмотрим, как увеличить время ожидания на примере IIS:

  1. Откроем диспетчер служб IIS и выберем наш опубликованный сайт.
  2. Перейдем в раздел Настройки пределов (Limits) и увеличим параметр connectionTimeout (время ожидания подключения). По умолчанию там может стоять 120 секунд — для первичной синхронизации этого часто недостаточно.
  3. Проанализируем файл 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. Запустим 1С:УТ в режиме «Предприятие».
  2. Перейдем в раздел Администрирование — Обслуживание — Журнал регистрации.
  3. Установим фильтр по событию «Ошибки» и проанализируем записи, созданные в момент сбоя синхронизации.

Если в журнале мы видим запись вида Недостаточно памяти, это сигнал к тому, что серверу 1С не хватает ресурсов для обработки запроса. В этом случае поможет только секционирование данных (выгрузка частями) или увеличение оперативной памяти на сервере приложений.

Стабильность интернет-соединения и локальная проверка

Как отмечалось в обсуждении, для первого запуска синхронизации, когда данных передается больше всего, рекомендуется использовать стабильное соединение. Попробуем выполнить первую загрузку, находясь в одной локальной сети с сервером через Wi-Fi. Это позволит исключить проблемы нестабильных мобильных сетей (3G/LTE), где кратковременная потеря пакетов может привести к обрыву длительной HTTP-сессии. Если в локальной сети ошибка не воспроизводится, значит, проблема в сетевом оборудовании или настройках безопасности (Firewall/Antivirus), которые разрывают «подозрительно длинные» соединения.

Версия платформы и SSL-сертификаты

Проанализируем программную среду. Убедимся, что версия мобильного приложения соответствует требованиям релиза конфигурации 11.4.6.207. При использовании протокола HTTPS выясним, является ли сертификат доверенным. Если используется самоподписанный сертификат, его необходимо предварительно установить на мобильное устройство, иначе система безопасности Android или iOS заблокирует передачу данных сразу после установки соединения.

Подводя итог, можно сказать: решение проблемы лежит в плоскости увеличения лимитов ожидания веб-сервера и разумного ограничения объема выгружаемых клиентов. Совместное применение этих мер позволяет добиться стабильной работы мобильного рабочего места даже при наличии больших справочников.

← На главную