Разработка мобильного приложения для заявок на отпуск/командировку
Заявки на отпуск и командировки — одна из самых частых задач для корпоративных мобильных приложений. Сотрудник подаёт заявку, руководитель согласовывает, HR отражает в учётной системе. Технически просто, но дьявол в интеграциях: 1С:ЗУП, SAP HCM, BambooHR, Workday — у каждой системы свой API и своя логика согласования. На деле интеграция с HR-системами часто превращается в головную боль: разные версии API, кривые обработчики ошибок, отсутствие тестовых контуров. Мы берёмся за интеграцию любой сложности, гарантируя стабильную синхронизацию и соблюдение App Store Review Guidelines (Section 4.2 и 5.1). Сокращаем время обработки заявок на 40% уже на этапе MVP.
Ключевая логика: процесс согласования
Цепочка согласования может быть линейной (сотрудник → руководитель → HR) или ветвящейся (командировка за рубеж → дополнительное согласование с финансовым директором). Эту логику не стоит хардкодить на мобильном — она должна приходить с backend как конфигурация.
Мобильное приложение отображает текущий статус заявки и список approver'ов, но не принимает решений о маршруте. Так изменение процесса согласования не требует обновления приложения.
Почему согласование не должно управляться с мобильного?
Потому что бизнес-правила меняются: ввели нового финдиректора — изменили цепочку. Если логика зашита в мобильное приложение, каждое изменение требует релиза и ожидания одобрения в сторах. Мы проектируем backend так, чтобы workflow хранился в виде конфигурации (например, JSON или BPMN-схема), а мобилка лишь отображала текущий шаг и доступные действия. Это уменьшает time-to-market для изменений в 2–3 раза.
Интеграция с HR-системами
| Система | Тип API | Аутентификация | Сложность интеграции |
|---|---|---|---|
| 1С:ЗУП | oData v4, HTTP-сервисы 1С | Базовая или NTLM | Средняя – настройка регистров |
| SAP HCM | SAP Mobile Services SDK, REST | OAuth 2.0 | Высокая – специфичные BAPI |
| BambooHR | RESTful API | API Key | Низкая – стандартный JSON |
| Workday | RESTful API | OAuth 2.0 | Средняя – фильтры по worker |
Для 1С:ЗУП — REST-сервисы через oData v4 или HTTP-сервисы 1С. Заявка на отпуск создаётся как документ НачислениеОтпуска. Для синхронизации баланса отпускных дней — запрос к регистру сведений ОстатокОтпуска.
suspend fun getRemainingVacationDays(employeeId: String): VacationBalance { val response = hrApiClient.get("/odata/standard.odata/InformationRegister_ОстатокОтпуска") { parameter("\$filter", "Сотрудник_Key eq guid'$employeeId'") parameter("\$select", "ВидОтпуска,КоличествоДней") } return VacationBalance.fromODataResponse(response) } Для SAP HCM — SAP Mobile Services SDK или REST через SAP API Business Hub. BambooHR и Workday имеют стандартные REST API с OAuth 2.0.
Что делать, если HR-система не поддерживает REST API?
Строим middleware-прослойку на Node.js или Python, которая конвертирует SOAP/WSDL в RESTful JSON. Такая прослойка также может агрегировать данные из нескольких систем (например, 1С + SAP), кэшировать балансы и выступать единой точкой входа для мобильного приложения. Это добавляет один-два дня к разработке, но избавляет от dependency hell.
UX для подачи заявки
Форма не должна быть длинной. Выбор типа отпуска (ежегодный, без содержания, учебный), дата начала и окончания с проверкой рабочего календаря, комментарий — этого достаточно. Автоматически показываем количество дней и остаток баланса.
Выбор дат — нативные DatePicker с блокировкой выходных и праздников (производственный календарь нужно подгружать с сервера или хранить локально, обновляя раз в год).
После подачи заявки — push-уведомление при изменении статуса. Руководитель получает push с кнопками действий прямо в уведомлении (iOS: UNNotificationCategory с actions; Android: NotificationCompat.Action), без необходимости открывать приложение.
Как настроить push-уведомления для одобрения заявки?
- Получить ключи APNs (для iOS) и FCM (для Android).
- На iOS зарегистрировать
UNNotificationCategoryс идентификаторомLEAVE_ACTIONи actions (одобрить, отклонить). На Android создатьNotificationChannelс поддержкойNotificationCompat.Action. - В обработчике нажатия вызывать API-эндпоинт для изменения статуса заявки и выполнить глубокую ссылку для открытия деталей.
- Для корректной обработки в фоне настроить
background fetchиsilent push(content-available = 1).
Что входит в результат?
- Исходный код приложения (Swift/Kotlin/Flutter) и документация по API.
- Настроенные provisioning profiles, code signing и CI/CD (GitHub Actions, Bitrise).
- Публикация в App Store и Google Play с соблюдением гайдлайнов.
- Интеграция с Firebase App Distribution и TestFlight для бета-тестирования.
- Пост-релизная поддержка в течение 1 месяца: исправление критических ошибок, адаптация под новые версии ОС.
Наш опыт: 5+ лет мобильной разработки, 20+ корпоративных приложений с HR-интеграциями. Мы гарантируем соблюдение конфиденциальности данных и соответствие локальным законам (152-ФЗ, GDPR).
Сроки: MVP за 4–8 недель в зависимости от сложности workflow и количества HR-систем. Стоимость рассчитывается индивидуально после анализа вашей инфраструктуры.
Закажите консультацию — мы проанализируем вашу HR-систему и предложим архитектуру интеграции. Получите демо-доступ к работающему прототипу за 2 недели. Свяжитесь с нами, чтобы обсудить детали.







