ERPNext в телефоне прораба: PWA, заявка с объекта и чего мобильный доступ не умеет
Отдельного мобильного приложения у ERPNext нет: прораб открывает систему в браузере телефона и добавляет её на экран Домой, как PWA. Заявка с объекта оформляется за минуту, если упростить форму, но офлайн-режима нет, нужна связь. Ниже установка, настройка формы и ограничения.
Что такое PWA и чем это лучше мобильного приложения для прораба
PWA — это сайт, который ведёт себя как приложение: у него есть иконка на экране телефона, он открывается без адресной строки и не требует магазина приложений. Для ERPNext это значит, что прораб открывает тот же сайт, что и директор за компьютером, но с телефона и с иконки. Отдельно разрабатывать, подписывать и публиковать мобильный клиент не нужно, обновления приходят вместе с обновлением сервера. Для небольшой фирмы, которая внедряет систему по схеме ERPNext под ключ, это серьёзная экономия: нет второго продукта, который нужно поддерживать.
Теперь об уточнении, которое я проверил по исходникам. В версии 15 страница рабочего стола ERPNext (шаблон www/app.html во Frappe) содержит метатеги для мобильных браузеров (признак веб-приложения, цвет панели, масштаб), но не содержит ссылки на файл манифеста и не подключает сервис-воркер. Проще говоря, из коробки Desk — это адаптивный сайт, который можно добавить на экран Домой, а не полноценный устанавливаемый PWA с офлайн-кэшем. У соседнего приложения Frappe HR другая история: по его документации, это PWA по адресу /hrms, и на Android в Chrome браузер предлагает его установить.
Есть и официальный мобильный клиент Frappe на Flutter, но его репозиторий архивирован в октябре 2022 года: разработку команда прекратила. Для рабочего процесса я на него не рассчитываю. Поэтому мобильный доступ к ERPNext в 2026 году — это браузер плюс ярлык, а всё, что сверх этого, придётся делать своими силами, и я сразу говорю заказчикам, где граница.
Чем это хорошо для прораба. Не нужны магазины и учётные записи сторонних сервисов, не нужно ставить ничего на личный телефон, кроме ярлыка. Интерфейс адаптивный: списки и формы перестраиваются под экран, хотя, как показано ниже, плотные формы остаются неудобными. Чем плохо: нет офлайна, и сеть на площадке напрямую определяет, будет ли работать процесс. Это не недостаток конкретной настройки, а свойство подхода.
- Нет второго продукта: сервер обновляется один раз, и телефон получает новую версию сразу.
- Не нужны магазины приложений и подписи сборок.
- Ярлык на экране Домой открывает систему за один тап.
- Интерфейс адаптивный, но табличная часть заявки остаётся плотной.
- Офлайн-режима нет: без связи заявку не оформить.
Как установить ERPNext на телефон: Android, iPhone и ярлыки
На iPhone используйте Safari: откройте адрес вашей системы, войдите под учётной записью прораба, нажмите кнопку «Поделиться» и выберите пункт «На экран Домой» (в английском интерфейсе Add to Home Screen). Если пункта нет в списке, прокрутите меню вниз и откройте «Редактировать действия». Так написано в документации Frappe HR по установке мобильного приложения, и для ERPNext порядок такой же. Сторонние браузеры на iPhone могут вести себя иначе, поэтому для прораба я прописываю Safari.
На Android откройте адрес в Chrome и в меню с тремя точками найдите «Установить приложение» или «Добавить на главный экран». Подсказку может показать и сам браузер. В документации Frappe HR отдельно оговорено, что Firefox без плагина установку PWA не поддерживает. В нашем случае, когда манифеста у Desk нет, пункта «Установить» может и не быть, и тогда остаётся «Добавить на главный экран»: результат тот же ярлык, но без особого режима окна. Это нужно проверить на ваших устройствах.
Ярлыки на разделы (например, сразу на список задач /app/task) в сообществе делают через собственный файл манифеста. На форуме Frappe описан рецепт: загрузить манифест и иконку в публичные файлы сайта, указать ссылку на манифест в настройках сайта и при необходимости собрать пакет через PWA Builder. Автор рецепта сам оговаривает слабые места: манифест должен быть доступен без входа, на Android пункт добавления приходится выбирать вручную, а надёжность PWA на разных устройствах неодинакова.
Я не воспроизводил этот рецепт на стенде и вижу в нём вопрос. Поле HTML для заголовка в настройках сайта (Website Settings, head_html) предназначено для страниц публичного сайта, а шаблон Desk, как я проверил, места для него не содержит. Значит, ссылка на манифест может не попасть в страницу рабочего стола. Если вам нужен настоящий установочный PWA, это задача для собственного приложения Frappe, которое добавляет манифест и иконки через хуки, и её нужно закладывать отдельным пунктом сметы. Условия для ваших устройств проверьте до обещаний прорабам.
Заявка с объекта за минуту: какие поля оставить на форме
Интерфейс ERPNext рассчитан на компьютер, и заявка на материалы со всеми полями на телефоне выглядит громоздко. Задача — оставить прорабу минимум: объект, номенклатура, количество. Всё остальное либо скрывается, либо подставляется автоматически. Но здесь есть нюанс, который я проверил по описанию DocType версии 15: обязательными в заголовке Material Request остаются серия документа, тип заявки, организация и дата документа, а в строке позиции — позиция, количество, единица измерения, коэффициент пересчёта, складская единица и дата потребности. Значит, скрыть «всё лишнее» нельзя: обязательные поля либо должны получить значение по умолчанию, либо остаться видимыми.
Практика такая. Через Customize Form я задаю значение по умолчанию для типа заявки («Purchase»), серии и организации и скрываю то, что не нужно прорабу (например, технические поля учёта). Единицы измерения подтягиваются из карточки номенклатуры, это нужно проверить в вашей настройке. Дату потребности делаю значением по умолчанию «завтра» или ставлю правило, при котором она заполняется из заголовка. Остаётся то, что прораб должен видеть: объект (Project в строке), позиция и количество. Проверка простая: я сажусь с бригадиром, он создаёт три заявки на своём телефоне, а я смотрю, где он задерживается и какие поля пролистывает.
Для самых простых случаев есть альтернатива: веб-форма. В DocType Web Form можно выбрать документ (Select DocType), включить «Login required», перечислить только нужные поля в таблице Web Form Fields и задать значения по умолчанию. Для прораба получается короткая страница без интерфейса Desk. Что нужно проверить: как веб-форма работает с табличной частью в вашей версии, как она применяет права документа (есть флажок Apply Document Permissions) и как попадает проект. Я бы пробовал веб-форму для пилота, а не закладывал в план как гарантированное решение.
Ещё одна мелочь, которая важна на объекте: ввод на телефоне медленнее. Лучше заранее подготовить короткий список ходовых материалов с понятными названиями, чтобы прораб выбирал позицию из поиска за пару символов, а не искал по длинному каталогу. Для этого я чищу номенклатуру до запуска: одно название для одного материала, понятные единицы, группы по видам работ.
Что PWA не умеет: офлайн и перегруженные формы
Главное ограничение — отсутствие офлайн-режима. Стандартная веб-версия ERPNext и PWA не поддерживают полноценную работу без связи: без интернета заявку не создать и не сохранить. Офлайн в экосистеме встречается у отдельных сторонних кассовых решений для розницы (например, TailPOS), а для строительной заявки готового офлайн-клиента нет. Для строительной площадки с плохим сигналом это существенно, и вопрос «что делает прораб без связи» решается процессом, а не настройкой: заявку фиксируют сообщением или голосом снабженцу, а в систему её вносят при появлении связи.
Второе ограничение — табличная часть. Редактировать строки позиций на маленьком экране неудобно, особенно если в заявке больше пяти позиций. В обсуждениях на форуме Frappe встречаются жалобы на заметные задержки интерфейса, когда из заявки на сотню с лишним строк создают заказ; насколько это касается вашей версии и сервера, проверяют на стенде. Для прораба это редкий случай, но привычка подавать заявки на сто строк с телефона — плохая идея. Крупные заявки лучше оформлять на компьютере.
Третье: ярлык не заменяет мобильный клиент по поведению. Уведомления на экран блокировки я здесь не обещаю: почтовые оповещения настраиваются отдельно, а работу push в вашей версии нужно проверять самому. Камера работает через выбор файла в браузере, а сохранение черновика зависит от того, не закрыл ли пользователь страницу до отправки. Перед запуском проверьте это на тех телефонах, которые реально есть у бригадиров: старые Android-устройства и разные версии Safari ведут себя по-разному.
| Что | Работает | Требует решения |
|---|---|---|
| Заявка Material Request при наличии связи | да | — |
| Прикрепление фото к документу | да, через выбор файла | проверить на ваших телефонах |
| Ярлык на экране Домой | да | на Android может быть без режима приложения |
| Ярлыки на разделы через манифест | через собственное приложение | не из коробки |
| Офлайн-режим | нет | регламент подачи без связи |
| Табличная часть на 5 и более строк | неудобно | упрощение формы, заявка с компьютера |
| Доступ к финансам | зависит от роли | ограничить роль и права, проверить |
Выездная Бригада: девять человек, пять объектов и один телефон на бригаду
Условный пример: подрядчик «Выездная Бригада», 9 рабочих мест, пять объектов, четыре бригады. Рабочие места: директор, снабженец, бухгалтер, сметчик, кладовщик базы и четыре бригадира. У каждого бригадира один рабочий телефон и своя учётная запись. Числа и времена в разборе условные, они иллюстрируют ход процесса, а не результаты реального клиента.
День бригадира в условном примере выглядит так. В 8:00 он осматривает объект и видит, что не хватает материала. В 8:20 открывает ярлык ERPNext на телефоне и оформляет заявку: объект, позиция, количество, остальное подставлено по умолчанию. В 8:30 снабженец видит заявку в списке, а в 9:00 руководитель согласует её по маршруту. В 10:00 связь на объекте пропала: заявку на следующий материал бригадир отправил голосом снабженцу, и она была внесена позже, когда связь вернулась. К 15:00 бригадир приложил к документу фото акта выполненных работ.
Что выяснили на пилоте. Форма заявки сначала была перегружена, и бригадиры звонили снабженцу, не желая заполнять её. После скрытия лишнего и подстановки значений по умолчанию жалоб на форму почти не осталось. Связь на двух объектах из пяти была неустойчивой, поэтому записали правило: если связи нет, заявка подаётся голосом, а снабженец вносит её сам с пометкой в комментарии. Вопрос с общим телефоном на бригаду решили отдельно: учётная запись на человека, а не на бригаду, иначе в системе нет ответственного. Как показать такой сценарий вживую, можно обсудить: на демостенде erp-demo.itfresh.ru по запросу видно, как выглядит заявка на телефоне.
Что ограничить прорабу на телефоне: роль, проекты и финансы
Мобильный доступ повышает риски: телефон теряют, оставляют без присмотра, дают подержать коллегам. Поэтому для прораба нужна отдельная роль с минимальным набором прав: заявки, задачи, просмотр номенклатуры и проекта, без доступа к платежам, счетам и отчётам по финансам. Затем сужение по записям: User Permission на его Project и склад объекта, чтобы в списках и полях выбора он видел только свои объекты. Роль и User Permission нужно проверить под тестовой учётной записью, в том числе в глобальном поиске и полях выбора.
Дальше меры против потери телефона. В System Settings есть двухфакторная аутентификация, и для руководителей и бухгалтерии я бы включал её всегда. Для прорабов решение зависит от условий: код каждый раз неудобен на объекте, поэтому на пилоте мы обычно оставляем пароль, но ограничиваем срок сессии (Session Expiry в System Settings) и права роли. Если телефон потерян, сразу отключаем учётную запись: пользователь в ERPNext отключается снятием флажка Enabled. Об управлении смартфонами сотрудников на уровне устройства можно прочитать в материалах про MDM для смартфонов и про личные телефоны сотрудников (BYOD).
И несколько честных границ. Мобильный доступ не решает вопрос с интернетом на объекте: если связи нет, решать нужно регламентом или усилением сигнала, а не настройкой ERPNext. Он не заменяет полноценного клиента: если вам нужны офлайн-режим, сканирование штрихкодов и ввод фотографий с привязкой к строкам, это отдельная разработка. И он не отвечает на вопрос, нужна ли вам именно эта система: если важны нативное приложение и офлайн, сравните варианты в обзоре выбора системы учёта на Linux. Мой совет: начните с пилота на одной бригаде, проверьте реальные телефоны и связь и только потом раскатывайте на остальных.
Частые вопросы
Есть ли у ERPNext мобильное приложение?
Отдельного поддерживаемого приложения для ERPNext нет: официальный мобильный клиент Frappe на Flutter архивирован в 2022 году. Для прораба используют браузер телефона и ярлык на экране Домой, то есть PWA-подобный доступ, без App Store и Google Play. Это работает при наличии связи, офлайн-режима из коробки нет.
Как установить ERPNext на iPhone?
Откройте адрес системы в Safari, войдите, нажмите «Поделиться» и выберите «На экран Домой» (Add to Home Screen). Если пункта нет, откройте «Редактировать действия». На Android в Chrome аналогичный пункт есть в меню браузера. Ярлыки на отдельные разделы, например /app/task, требуют собственного файла манифеста, а не настроек из коробки.
Работает ли ERPNext без интернета на стройплощадке?
Нет: стандартная веб-версия и ярлык на экране не поддерживают полноценный офлайн-режим, для заявки нужна связь. Офлайн есть только в сторонних решениях вроде TailPOS для розницы. Как прораб подаёт заявку при отсутствии связи, решается регламентом: сообщить снабженцу, а внесение сделать позже, когда связь появится.
Удобно ли заполнять заявку на материалы с телефона?
Интерфейс ориентирован на компьютер, поэтому форму упрощают: оставляют объект, позицию и количество, остальное подставляют по умолчанию. Обязательные поля скрыть нельзя без значений по умолчанию, их нужно заполнить заранее. Удобство табличной части проверяют на реальном телефоне бригадира, а крупные заявки лучше оформлять с компьютера.
Может ли прораб с телефона увидеть чужие объекты и деньги?
Не должен: ему создают отдельную роль без доступа к финансам и User Permission на его Project и склад. После настройки обязательно проверьте под тестовой учётной записью, не видны ли чужие проекты в списках, поиске и полях выбора. Мобильный доступ не отличается от компьютерного по правам, только по неудобству проверки.
Источники
- Исходники Frappe v15: шаблон рабочего стола www/app.html — Проверено: есть метатеги для мобильных браузеров (apple-mobile-web-app-capable, theme-color, viewport), нет ссылки на манифест и подключения сервис-воркера, нет вставки head_html сайта. https://github.com/frappe/frappe/blob/version-15/frappe/www/app.html
- Документация Frappe HR: установка мобильного приложения — Проверено: PWA по адресу /hrms, установка на Android через Chrome, на iOS через Safari и Add to Home Screen, Firefox без плагина не поддерживается. https://docs.frappe.io/hr/mobile-app-installation
- Репозиторий frappe/mobile (Flutter) — Проверено 01.10.2026: баннер «This repository was archived by the owner on Oct 29, 2022», последний push — январь 2022. https://github.com/frappe/mobile
- Форум Frappe: PWA через manifest.json — Проверено: рецепт сообщества (манифест в публичных файлах, ссылка в настройках сайта) и оговорки о надёжности. https://discuss.frappe.io/t/frappe-erpnext-quick-easy-mobile-app-tested-working/128762
- Описания DocType ERPNext v15: Material Request и Web Form (Frappe v15) — Проверены обязательные поля заявки и строки, поля Web Form (Login required, Web Form Fields, Apply Document Permissions). https://github.com/frappe/erpnext/blob/version-15/erpnext/stock/doctype/material_request/material_request.json
