Всё в этом проекте держится на одной границе: 1С — источник правды, приложение ничего не решает за неё. Оно показывает задачи, которые выдала 1С, и отправляет туда факты — старт, паузу, выполнение, — а то, что ещё не дошло до 1С, ждёт в очереди. Из этой границы выросли и время от последней синхронизации, и очередь с ключами, и строки с текстом отказа.
Сеть мы считали ненадёжной по умолчанию, а не «обычно есть». Поэтому работа без связи — не аварийный режим, который включается, когда что-то сломалось, а обычный путь каждого нажатия: сначала локальная база и очередь, потом 1С. Такой путь проверяется каждой сменой, а не в тот единственный раз, когда сеть пропала перед сдачей работы. И у него заранее решено, что делать с неудачей: пакет делится, упрямая строка ждёт ручного повтора, отказ 1С показывается её словами. Неудача, для которой нет правила, — это та самая запись, которую потом ищут вручную.
Обмен описан контрактом в OpenAPI, и по нему написана заглушка 1С со своими 88 тестами. Это развязало две вещи, которые обычно ждут друг друга: приложение разрабатывалось и тестировалось без доступа к рабочей базе заказчика, показы шли на заглушке, а подключение к рабочей 1С стоит последним этапом.
Договор разбит на 4 этапа, и каждый — законченный кусок, который можно взять в руки: каркас приложения со входом, экран «Мои задачи», свободные и новые задачи и, наконец, подключение к рабочей 1С со стабилизацией и передачей. Каждый этап сдаётся по акту с чек-листом, а тесты привязаны к пунктам ТЗ, поэтому заказчик принимает не «приложение в целом», а проверяемый список того, что должно работать. Финальный этап — подключение к рабочей 1С и передача — идёт в октябре 2026 года.
Приложение работает на телефонах с Android 8.0 и новее, то есть и на далеко не новых устройствах. Его код — 12 658 строк на Kotlin: не прототип для показа, а продукт, который в финальном этапе переходит к заказчику.



