Почему небольшому магазину нужен учёт, работающий без интернета
Учёт с приоритетом офлайна сначала сохраняет запись на устройстве, а загружает позже: касса не ждёт сеть, а аккуратная синхронизация следит, чтобы ничего не пропало и не задвоилось.

На этой странице
Учёт, работающий в первую очередь офлайн, сначала записывает каждую запись на устройство магазина, а на сервер отправляет её позже, когда появится связь. Касса никогда не ждёт сеть, продажа никогда не теряется из-за пропавшего сигнала, а аккуратная синхронизация следит, чтобы каждая запись дошла один раз и по порядку. Для магазина, который продаёт в долг, это разница между записью, которой можно доверять, и записью, полной пробелов.
Многие приложения работают только онлайн: каждое нажатие уходит на сервер и ждёт ответа. В офисе с хорошим Wi-Fi это работает. Касса магазина — совсем другое место.
Почему у кассы пропадает связь
Каждый, кто держит магазин, знает этот список:
- Отключения электричества, из-за которых выключается роутер.
- Слабый мобильный интернет в магазине с толстыми стенами, на рынке в подвале или в глубине людного базара.
- Пакет трафика, который заканчивается в середине месяца.
- Часы пик, когда весь рынок одновременно сидит в телефонах.
Ничто из этого не редкость. И случается обычно именно тогда, когда на кассе больше всего людей.
Что идёт не так с учётом, работающим только онлайн
Когда сеть пропадает и приложение не может сохранить запись, у продавца три плохих варианта:
- Заставить покупателя ждать, пока за ним растёт очередь.
- Записать на бумажку «на потом» и надеяться, что её внесут. Некоторые бумажки так и не вносят.
- Пропустить и положиться на память.
Каждый вариант оставляет пробел в записи. Пробелы превращаются в неверные балансы, а неверные балансы — в споры с покупателем, то есть ровно в то, от чего долговая книга должна защищать.
Есть и более тонкая проблема. Если продажа отправлена, сеть пропала раньше, чем пришёл ответ, и продавец снова нажал «Сохранить», приложение, работающее только онлайн, может записать одну и ту же продажу в долг дважды. И с покупателя спишут за один и тот же мешок муки два раза.
Что значит «офлайн в первую очередь» на практике
Такой учёт переворачивает схему:
- Сначала запись на месте. Запись сохраняется на устройстве в момент нажатия «Сохранить». Касса переходит к следующему покупателю.
- Очередь. Записи, ожидающие загрузки, стоят в упорядоченной очереди, а на экране видно, что они в ожидании.
- Синхронизация в фоне. Когда связь возвращается, очередь загружается сама, начиная с самых старых.
- Ровно один раз. У каждой записи есть уникальный ключ. Если загрузка повторяется, сервер узнаёт ключ и не записывает её снова.
- Никогда не выбрасывать отказ. Если сервер отклоняет запись — например, потому что покупателя уже удалили, — она откладывается, чтобы продавец её проверил, а не выбрасывается молча.
Последний пункт легко упустить. Синхронизация, которая тихо выбрасывает то, что не смогла сохранить, почти так же плоха, как её отсутствие.
Чего офлайн не умеет
Честно говорить об ограничениях важно. Некоторым вещам нужен ответ сервера, и они ждут связи:
- То, что видит покупатель. Магазин видит офлайн-запись сразу, а покупатель — только после синхронизации.
- Подтверждение сообщения об оплате, которое должно быть записано на сервере.
- Ссылки в напоминаниях, которые создаёт сервер.
- Отчёты по всем вашим покупателям.
Хорошее приложение, работающее в первую очередь офлайн, не даёт кассе остановиться и честно показывает, что ждёт отправки.
Как это сделано в Credit Khata
Credit Khata создан для касс с неустойчивой связью:
- Приложение «Касса» (в браузере, его можно установить на компьютер или телефон) хранит на устройстве свои экраны, ваш язык и список клиентов, поэтому открывается даже без интернета, если им уже пользовались онлайн. Продажи, пробитые на экране Продажи, сохраняются в очередь на устройстве, каждая со своим ключом.
- Индикатор синхронизации вверху экрана «Продажи» показывает Всё синхронизировано, сколько продаж ожидает или Синхронизация, а нажатие на него открывает очередь.
- Отклонённые продажи откладываются, а не выбрасываются: они попадают в Не удалось сохранить с кнопками Повторить все и Удалить. Если вы выходите из аккаунта, пока продажи ещё в очереди, приложение сначала спросит, потому что они будут удалены.
- Приложение для Android хранит новых клиентов и все записи — в долг, оплаты и наличные — на телефоне и синхронизирует их в фоне.

Практические шаги, в том числе что делать, если продажу не удалось сохранить, — в статье Работайте без интернета и держите книгу синхронизированной.
Вопросы, которые стоит задать любому приложению для учёта
Чем бы вы ни пользовались, проверьте это, прежде чем на него полагаться:
- Включите режим полёта и запишите продажу. Сохранилась ли она?
- Закройте приложение и откройте снова, всё ещё без интернета. Продажа на месте?
- Включите интернет обратно. Загрузилась ли она сама?
- Запишите продажу, пока сигнал то появляется, то пропадает. Появилась ли она один раз, а не два?
- Что происходит с записью, которую отклонил сервер? Её видно?
Если приложение проходит все пять проверок, касса продолжит работать даже в худший для сети день месяца.
Итог
Книга долгов полезна, только если она полная. У загруженной кассы с ненадёжной связью единственный способ сохранить её полной — сначала записывать, а синхронизировать потом, аккуратно. Это и значит «офлайн в первую очередь», и именно поэтому в небольшом магазине это важнее, чем почти где-либо ещё.
Как это сочетается с остальными возможностями электронной долговой книги, читайте в статье Что такое долговая книга? Электронная книга против бумажной тетради или начните со статьи Запишите продажу в долг на кассе.
Частые вопросы
Что значит «офлайн в первую очередь»?
Приложение сначала записывает каждую запись на устройство и относится к интернету как к тому, что то есть, то нет. Записи загружаются в фоне, когда появляется связь.
Может ли офлайн-запись записаться дважды при синхронизации?
В хорошо сделанном приложении — нет. У каждой записи есть уникальный ключ, поэтому при повторной загрузке сервер узнаёт её и записывает только один раз.
Видит ли покупатель офлайн-запись сразу?
Только после синхронизации. Магазин видит её сразу на своём устройстве, а у покупателя всё обновится, когда запись дойдёт до сервера.
Что нельзя сделать без интернета?
Всё, для чего нужен ответ сервера: например, подтвердить оплату покупателя, создать ссылку для напоминания или построить отчёты.
Эта запись была полезной?