Мобильная разработка за неделю #648: заказ агента пропал без сети
Заказ торгового агента пропадает, когда приложение отправило его в 1С, связь оборвалась, а подтверждения о приёме не было. Лечится тремя вещами: очередью отправки на телефоне, уникальным номером документа, чтобы 1С не создала дубль, и статусом «принят 1С» на экране агента. Покупать телефоны мощнее не нужно: проблема в логике обмена.
Выпуск #648 за 28 сентября — 4 октября посвящён ситуации, которую заказчики мобильных приложений описывают почти одинаково: «агент говорит, что отправил, а в 1С пусто». Разбираем, где теряются данные и как закрыть эту дыру до релиза.
Почему возникает потеря заказов в мобильном приложении с 1С 📱
Типичная картина. Агент заезжает на подземную парковку торгового центра и оформляет заказ на 14 позиций. Связь на минус втором этаже то есть, то нет. Он нажимает «Отправить», видит крутящийся индикатор, убирает телефон в карман и едет к следующему клиенту. Вечером в 1С этого заказа нет, а утром звонит клиент и спрашивает, где его товар.
Приложение считает заказ отправленным в момент нажатия кнопки, но 1С его не получила. Запрос ушёл, связь пропала на полпути, ответа нет. Поэтому агент уверен, что всё прошло, а сервер ничего не знает. Сбой выглядит одинаково, хотя причин у него три.
Запрос не дошёл
Приложение вызвало сервис 1С, соединения не было, код поймал ошибку и закрыл окно. Заказ жил только в памяти экрана и исчез вместе с ним. Так выглядит первая версия приложения, которую тестировали в офисе на Wi-Fi.
Запрос дошёл, ответ потерялся
1С записала документ, но ответ по дороге пропал. Агент видит ошибку и нажимает «Отправить» ещё раз. В 1С теперь два одинаковых заказа, и склад собирает двойную отгрузку.
1С приняла запрос, но отклонила документ
У контрагента закрыт договор, или в приложении устарел справочник цен. 1С записала ошибку в журнал, а приложение показало «успешно»: оно проверяло, что сервер ответил, а не что документ принят. Агент узнаёт о проблеме от клиента.
Что теряет бизнес. Потерянный заказ означает сорванную отгрузку и утренний звонок недовольного клиента. Дубль означает двойную сборку на складе и возврат товара. Когда данные в телефонах агентов и в учёте расходятся, руководитель отдела продаж по вечерам сверяет заказы вручную по сообщениям в Telegram. Это время, которое он мог бы потратить на продажи.
Как исправить потерю заказов: очередь, номер документа и подтверждение от 1С 🔧
Исправление держится на одном правиле: заказ нельзя считать отправленным, пока 1С не подтвердила, что приняла именно его.
- ✓Сохраняйте заказ в локальную базу телефона сразу после нажатия кнопки, до любого сетевого вызова. Закрытие приложения или перезагрузка его не стирают.
- ✓Присваивайте документу уникальный идентификатор (GUID) на самом устройстве и передавайте в 1С вместе с данными. Если запрос придёт дважды, 1С найдёт документ с таким идентификатором и не создаст второй.
- ✓Отправляйте из очереди в фоне. Паузы между повторами растут (секунды, потом минуты) и слегка отличаются у разных телефонов, иначе после восстановления связи все устройства ударят по серверу в одну секунду.
- ✓Меняйте статус только по ответу 1С: «в очереди», «принят», «проведён», «отклонён». Агент видит состояние каждого заказа.
- ✓Для отклонённого документа показывайте причину простым языком и давайте исправить заказ, а не вводить заново.
Половина работы лежит на стороне 1С. HTTP-сервис проверяет идентификатор, записывает документ одной транзакцией и возвращает понятный код ошибки. Поэтому приложение и конфигурацию лучше вести одной командой: когда их делают два подрядчика, каждый уверен, что проблема у соседа. Подробнее про такой обмен: интеграция приложения с 1С.
Какую схему обмена выбрать
Схем несколько, и у каждой своё поведение при обрыве связи.
| Схема обмена | Что с заказом при обрыве связи | Риск дублей | Когда подходит |
|---|---|---|---|
| Прямой запрос в 1С без очереди | Заказ остаётся на экране или теряется | Высокий: агент жмёт кнопку повторно | Прототип, где потеря данных не критична |
| Очередь на телефоне и HTTP-сервис 1С | Заказ лежит в очереди и уходит, когда появляется связь | Низкий, если 1С проверяет идентификатор документа | Торговые агенты, курьеры, сервисные выезды |
| Промежуточный сервер между телефонами и 1С | Заказ принимает сервер, 1С забирает его по расписанию | Низкий | Много устройств или 1С закрыта от внешних подключений |
| Автономная база на 1С:Мобильной платформе | Приложение работает с локальной базой и обменивается с 1С по правилам обмена | Зависит от настроенных правил обмена | Компания уже работает на типовых конфигурациях 1С |
Для агентов и сервисных выездов мы обычно берём вторую схему. Если в компании работают типовые конфигурации 1С и нужны стандартные сценарии, смотрят в сторону разработки на 1С:Мобильной платформе.
Что делать, если ошибка повторяется
Очередь работает, дубли пропали, но раз в неделю заказы застревают, и статус «в очереди» висит часами. Искать причину в коде приложения здесь рано. Проверьте по порядку:
- ✓Журнал HTTP-сервиса на стороне 1С: дошёл ли запрос и что вернул сервис. Если запроса в журнале нет, причина в канале связи или в сертификате.
- ✓Срок действия TLS-сертификата публикации 1С. Просроченный сертификат останавливает обмен у всех устройств сразу, и приложение молчит, если не обрабатывает эту ошибку.
- ✓Блокировки в базе в часы закрытия периода. Если в 9 утра бухгалтерия открывает месяц и обмен встаёт, запись документа ждёт, запрос упирается в таймаут, приложение уходит на повтор. Ищите блокировки, а не ошибку в приложении.
- ✓Версия приложения у агента. Телефон с приложением трёхмесячной давности шлёт документ в формате, который обновлённая конфигурация 1С не принимает. Приложению нужна проверка минимальной версии при запуске.
- ✓Энергосбережение телефона. Некоторые оболочки Android завершают фоновые процессы, и очередь не уходит, пока приложение не откроют. Лечится настройкой исключений и напоминанием агенту, что в очереди есть документы.
Если причина на стороне 1С (блокировки, публикация, конфигурация), это работа по сопровождению 1С: 3800 руб/час. Если в самом приложении, это доработка проекта.
Как предотвратить потерю данных до релиза
Этот дефект не ловится тестом в офисном Wi-Fi: там приложение ведёт себя идеально. Проверки, которые его находят:
- ✓Пройти каждый экран с заказом в режиме «в самолёте».
- ✓Оборвать связь посреди отправки: в момент нажатия, во время запроса, после ответа сервера.
- ✓Отправить один и тот же документ дважды: в 1С должен остаться один.
- ✓Заложить версию формата обмена и отказ от слишком старых версий приложения, чтобы смена конфигурации 1С не ломала телефоны.
- ✓Передавать с устройства на сервер размер очереди и сообщать ответственному в Telegram, если у агента она не пустеет заданное время.
Отдельный вопрос: локальная база на телефоне хранит контактные данные клиентов, то есть персональные данные. 152-ФЗ требует их защищать: базу на устройстве шифруют, вход закрывают PIN-кодом или биометрией, а при увольнении сотрудника доступ отзывают удалённо. Центральная база с данными граждан РФ работает на серверах в России.
Сколько стоит мобильное приложение с обменом 1С и чем наш подход отличается 💼
Мобильная разработка у нас начинается от 500 000 ₽. Итог зависит от платформ (iOS и Android), числа сценариев и объёма обмена с 1С, поэтому точную сумму называем после разбора задачи. Ставки и тарифы собраны на странице цен и тарифов.
- ✓Очередь, идентификаторы документов и статусы мы закладываем в архитектуру с первой версии, а не добавляем после первой жалобы агента.
- ✓Приложение и обмен на стороне 1С делает одна команда, поэтому вопрос «чья это ошибка» не отнимает недели.
- ✓Для клиентов компании то же решение превращается в B2B-приложение с 1С: покупатель сам оформляет заказ и видит его статус.
Если приложение уже работает и теряет заказы, пришлите описание сбоя: версию приложения, время, что показывает журнал 1С. По этим данным видно, где причина: в приложении, в публикации 1С или в канале связи. Написать можно через страницу разработки мобильных приложений.
❓ Частые вопросы
Сколько стоит разработка мобильного приложения с обменом данными с 1С?
Разработка мобильного приложения у нас начинается от 500 000 ₽. Итоговая цена зависит от платформ (iOS, Android), числа сценариев (заказы, склад, выезды) и объёма обмена с 1С. Точную сумму называем после разбора задачи, потому что обмен с 1С бывает простым и очень разветвлённым.
Почему заказ из мобильного приложения не попал в 1С?
Чаще всего связь оборвалась после отправки, а приложение не дождалось подтверждения от 1С. Другие причины: просроченный сертификат публикации, блокировки в базе, устаревшая версия приложения или отказ 1С принять документ. Диагностика начинается с журнала HTTP-сервиса 1С: он показывает, дошёл ли запрос. Если запроса в журнале нет, ищите проблему в канале связи и сертификате.
Как избежать дублей заказов при повторной отправке?
Приложение присваивает каждому документу уникальный идентификатор на устройстве и передаёт его в 1С. При повторном запросе 1С находит документ с таким идентификатором и возвращает подтверждение, а не создаёт второй заказ. Повторная отправка становится безопасной, и агент может нажимать «Отправить» сколько угодно.
Может ли агент работать с приложением без интернета?
Да, если приложение хранит данные в локальной базе: каталог, цены и остатки на момент последней синхронизации, а новые заказы ложатся в очередь. Как только связь появляется, очередь уходит в 1С в фоне. Остатки без связи показываются на момент синхронизации, поэтому их стоит помечать временем обновления.
Нужно ли шифровать данные клиентов на телефоне сотрудника?
Да. Контактные данные клиентов относятся к персональным данным, и 152-ФЗ требует их защищать. На телефоне базу шифруют, вход закрывают PIN-кодом или биометрией, а при увольнении сотрудника доступ отзывают удалённо. Центральная база с данными граждан РФ должна храниться на серверах в России.
Или позвоните: +7 906 045-28-27 — в рабочее время с 9:00 до 19:00
Читайте также
Остались вопросы? Нужна помощь?
Менеджеры компании с радостью ответят на ваши вопросы, произведут расчет стоимости услуг и подготовят индивидуальное коммерческое предложение.
Бесплатная консультация

