Заявка на материалы на объект: Material Request в ERPNext
АйТи Фреш
IT-аутсорсинг и бизнес

Заявка на материалы с объекта: как прораб оформляет Material Request и что видит руководитель

Автор: , директор ООО «АйТи-Фреш» · · ~15 мин чтения
Прораб со смартфоном на объекте: заявка на материалы проходит снабжение, руководителя и склад
Заявка с объекта — это путь по статусам, а не сообщение в чате.

Заявка на материалы с объекта в ERPNext — это документ Material Request: прораб указывает объект, номенклатуру, количество и дату, а снабжение и руководитель видят её статус без звонков. Ниже — какие поля оставить, как привязать объект, что значат статусы и где предел мобильной формы.

Что прораб заполняет в заявке на материалы и что можно скрыть

Заявка на материалы в ERPNext — документ Material Request. Он фиксирует внутреннюю потребность компании, а не заказ поставщику: прораб говорит «нужно», а снабженец решает, у кого и за сколько купить. Я внедряю его в подрядных компаниях на 5–15 человек в составе готового решения на ERPNext, и первое, что делаю, — режу форму до того минимума, который прораб готов заполнять стоя на стяжке. Стандартная форма рассчитана на офисного снабженца, и на смартфоне она выглядит как анкета.

В шапке документа есть тип заявки (поле Purpose), дата потребности (Required By), компания и склад по умолчанию. В документации ERPNext для типа указаны Purchase, Material Transfer, Material Issue, Manufacture, Subcontracting и Customer Provided; набор вариантов зависит от версии: в коде version-15 в списке пять значений, Subcontracting там нет, поэтому проверьте выпадающий список на своей. Для прораба нужен ровно один тип: Purchase, когда материал надо купить, и иногда Material Transfer, когда его надо перевезти с соседнего объекта. Остальные варианты ему ни к чему, и если оставить их видимыми, рано или поздно кто-нибудь оформит закупку как списание.

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

В строке заявки обязательны код номенклатуры, количество, единица измерения и дата, к которой материал нужен. Это проверяется по описанию полей в коде версий 15 и develop: item_code, qty, uom и schedule_date помечены как обязательные. Склад, центр затрат и счёт расходов обязательными не являются. Поле Stock Qty и Projected Qty система считает сама и показывает только для чтения.

Что оставить прорабу, сведено в таблицу. Она же — текстовая версия схемы «до и после» ниже. | Поле | Стандартная форма | Форма прораба | |---|---|---| | Тип заявки (Purpose) | выбирается | зафиксирован: Purchase | | Объект (Project) | в строке, необязательно | в строке, обязательно | | Номенклатура (Item) | да | да | | Количество | да | да | | Единица измерения (UOM) | подставляется из номенклатуры | скрыта, подставляется | | Дата потребности | да | да | | Склад, центр затрат, счёт расходов | да | скрыты, заполняются по умолчанию | | Stock Qty, Projected Qty | только чтение | скрыты | В итоге остаются четыре поля: объект, номенклатура, количество и дата. Эту четвёрку я и оставляю на мобильной форме.

Как это сделать без программирования. Лишние поля скрываются через Customize Form: для поля меняется свойство Hidden, а для типа заявки задаётся значение по умолчанию. Если нужна логика («показать склад, только если тип — перемещение»), используются условия видимости depends_on из свойств поля. Эти настройки делает администратор один раз, а затем форма одинакова у всех пользователей роли. Но если часть полей скрыта у всех, снабженец тоже их не увидит. Поэтому я не прячу поля глобально, а оставляю их на форме и ограничиваю по роли прораба — об этом в разделе про права.

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

Как заявка привязывается к объекту и позициям спецификации

В Material Request нет поля «Объект» в шапке. Проект указывается в каждой строке отдельно, рядом со счётом расходов и центром затрат. Это логично, когда одна заявка закрывает потребности нескольких проектов, но неудобно прорабу: он ведёт один объект и не хочет выбирать его десять раз подряд. Решения два: либо прораб подаёт заявку только на один объект и выбирает его в первой строке, а остальные строки копируются кнопкой, либо администратор добавляет небольшой клиентский скрипт, который переносит выбранный объект во все строки. Скрипт — наша доработка, в коробке его нет.

На форуме Frappe встречается предупреждение: по умолчанию поле Project в строках заявки якобы доступно только для чтения, и для ручного выбора его нужно переопределить. Я проверил это по файлу описания Material Request Item в ветках version-15 и develop: у поля project нет признака read-only, оно обычная ссылка на Project. Похоже, форумные обсуждения относятся к старым версиям или к стенду с чужими настройками. Вывод практический: откройте форму на своей версии и посмотрите, можно ли выбрать объект. Если нельзя, причина — настройка, а не ограничение ERPNext, и лечится она в Customize Form.

Привязка к проекту нужна не ради красоты. Когда снабженец создаёт заказ поставщику из заявки, проект переходит в строки заказа, потом в приёмку и счёт. Поэтому затраты по объекту собираются сквозной цепочкой без повторного ввода. Один нюанс из исходного кода: итоговая сумма закупок в карточке проекта (total_purchase_cost) считается по строкам проведённого счёта поставщика, поэтому на этапе заявки и заказа она ещё равна нулю. Если директору нужен «обязательный к оплате» объём по объекту, ему придётся смотреть отчёт по заказам, а не карточку проекта.

Теперь о позициях спецификации договора. Штатно заявка со спецификацией не связана: прораб выбирает номенклатуру из общего справочника и может заказать хоть втрое больше, чем заложено в договоре. Спецификация договора в ERPNext — не BOM: BOM служит для производственной спецификации изделия, а перечень материалов по договору заводят отдельным DocType с плановыми количествами. Как поставить на заявку проверку по этому перечню, зависит от доработки (Server Script плюс дополнительные поля), и это отдельная тема; здесь она только упомянута. Для заявки достаточно знать, что строка может ссылаться на позицию спецификации через дополнительное поле, а прораб при выборе видит остаток.

Схема сквозной привязки объекта: заявка, заказ, приёмка, счёт поставщика и карточка объекта с затратами
Объект переходит из документа в документ сам. Открыть крупно

Какие статусы проходит заявка и что они значат для руководителя

У Material Request в документации перечислено одиннадцать статусов: Draft, Submitted, Pending, Partially Ordered, Ordered, Partially Received, Received, Issued, Transferred, Stopped и Cancelled. Часть из них зависит от типа заявки: Issued и Transferred относятся к списанию и перемещению, а для закупки директору нужна цепочка из шести: черновик, ожидает, частично заказана, заказана, частично получена, получена. Статусы вычисляются системой по процентам исполнения (в описании документа есть поля per_ordered и per_received), вручную их менять не нужно.

Директор монтажной компании смотрит на экране светофор статусов заявок, на столе рулоны чертежей и каска
Директору хватает одного экрана вместо переписки. Открыть крупно

Смысл каждого статуса для руководителя — в таблице. Она дублирует схему «жизнь заявки» рядом. | Статус | Что произошло | Что делает руководитель | |---|---|---| | Draft | Прораб набрал заявку, но не провёл | Ничего: заявки ещё нет | | Pending | Заявка проведена, заказов нет | Смотрит, не залежалась ли | | Partially Ordered | Часть позиций ушла в заказ поставщику | Проверяет, на какие позиции нет заказа | | Ordered | Все позиции в заказах | Ждёт поставок | | Partially Received | Часть материалов приехала | Сверяет с графиком работ | | Received | Всё принято | Закрыто | | Stopped | Потребность снята вручную | Узнаёт причину | | Cancelled | Документ отменён | Ничего | Самая полезная для директора пара — Pending и Partially Received. Первая показывает заявки, на которые снабжение ещё не отреагировало, вторая — материал, который заказан и частично доехал, а значит, на объекте могут встать работы.

Схема шести статусов заявки на материалы: черновик, ожидает, частично заказана, заказана, частично получена, получена
Шесть статусов закупочной заявки. Открыть крупно

Статус Stopped — не отмена. В документации он описан как состояние, при котором больше материалов не нужно; его ставят вручную после проведения, если потребность изменилась. Я использую его для ситуации «заказано 90 процентов, остальное прораб закрыл остатками с другого объекта»: заявка перестаёт висеть красным в списке, но история сохраняется. Cancelled нужен только для ошибок, отменить можно лишь документ, на который нет нижестоящих заказов.

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

Таблица статусов заявки на материалы: что произошло и что делает руководитель на каждом из них
Остановлена не равно отменена. Открыть крупно

Что видит снабжение и что видит директор

Снабженец работает со списком Material Request, отфильтрованным по статусу Pending и Partially Ordered. Из проведённой заявки он нажимает «Создать», выбирает Purchase Order, и система переносит позиции, количества и проект. При частичном заказе повторное создание заказа подтянет только ту часть, которая ещё не заказана: по исходному коду версии 15 строка попадает в новый заказ, только если уже заказанное (или полученное) количество плюс перенесённое в этот же черновик меньше потребности. Учитываются проведённые заказы: два черновика заказа, созданные параллельно, система ещё не видит, поэтому порядок «один снабженец на заявку» в регламенте всё равно нужен.

Директор не должен открывать документы по одному. Ему нужны три представления на одном экране: заявки в статусе Pending старше суток, заявки Partially Received по действующим объектам и количество Stopped за неделю. В ERPNext это делается сохранёнными фильтрами списка и отчётом, а не отдельной программой. Дашборд-чарты Frappe умеют показывать число документов по статусам, поэтому «светофор» по заявкам настраивается за час, без разработки.

Снабженец у двух мониторов с трубкой телефона, рядом образец фасадной кассеты и каталоги на полке
Заказ создаётся из заявки одной кнопкой. Открыть крупно

Права на это разделяются ролями. Прораб должен видеть только свои заявки: для этого используются User Permissions по проекту. Директор видит всё. Снабженцу дают чтение и создание заказов, но не оплату. Подробно про ограничение доступа по объекту я писал отдельно в разделе про матрицы доступа; там 1С, но принцип «роль плюс ограничение по объекту» тот же. В ERPNext у мобильного прораба нужна отдельная урезанная роль без доступа к финансовым модулям, и после настройки её надо проверить под тестовым пользователем с очисткой кэша: часто Link-поле после ограничения пустеет и прораб не может выбрать даже свой объект.

Эта связка закрывает вопрос, который директор задаёт чаще всего: «где мой материал». Раньше ответ — в переписке прораба с поставщиком. Теперь он — в документе: заказ на такую-то дату, ожидаемая поставка такая-то, принято столько-то. Но система не заставит поставщика ответить: если снабженец не оформил заказ, заявка просто останется в Pending. Поэтому в регламенте компании нужно закрепить срок реакции, а ERPNext его только покажет.

Сравнение представлений заявок на материалы для снабженца, директора и прораба в ERPNext
Каждой роли своё представление списка. Открыть крупно

Заявка со смартфона: фото, мобильная форма и честные ограничения

ERPNext открывается в мобильном браузере, и прораб может добавить ярлык на главный экран. В документации Frappe для установки такого приложения описан тот же путь: «Добавить на главный экран» в Safari на iOS и в Chrome на Android, один раз войти в систему. Магазины приложений не нужны, обновления приходят с сервером. Но пошаговая инструкция в документации относится к Helpdesk, а не к ядру ERPNext, и проверять её надо на своей установке.

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

Прораб в подвале снимает на смартфон повреждённую фурнитуру, рядом паллета и кабельные катушки
В подвале без сети заявку отправляют позже. Открыть крупно

Теперь ограничения, о которых я предупреждаю заказчика до договора. Полноценного офлайн-режима у веб-версии нет, а «ярлык на экране» его не заменяет. Если на объекте нет связи, заявку не сохранить: прораб набирает её, когда телефон снова находит сеть. Для фасадных и кровельных работ на высоте, в подвалах и на новостройках без покрытия это реальная проблема, и решается она не софтом, а регламентом (сфотографировать, отправить из точки с сетью). Второе ограничение — мобильный экран: таблица из двадцати строк на смартфоне читается плохо, поэтому крупные заявки лучше собирать на планшете или в офисе.

Сквозной тест «заявка со смартфона, приёмка на склад объекта, списание» мы всегда делаем до сдачи, на реальных телефонах прорабов, включая старые модели. Я видел, как идеальная форма на тестовом ноутбуке не открывалась на телефоне шестилетней давности. Чек-лист запуска вынесен ниже в список.

Чек-лист запуска заявки со смартфона прораба: ярлык, поля, фото, объект, права и плохая связь
Шесть проверок мобильной заявки. Открыть крупно

Как «Стена и Фасад Монтаж» перенесла заявки из мессенджера в систему (условный пример)

Условный пример: монтажная организация «Стена и Фасад Монтаж», шесть рабочих мест: директор, снабженец, три прораба и кладовщик. Три действующих объекта, вентилируемые фасады и отделка. До внедрения заявки жили в общем чате: прораб присылал голосовое или фото листа бумаги, снабженец переписывал это в таблицу, а к вечеру никто не мог сказать, что из этого уже заказано. Цифры ниже — иллюстрация, а не результат конкретного клиента.

Прорабы и снабженец у ноутбука, на стене вместо скриншотов чата чистый список, в дверях кладовщик с планшетом
Дубли в чате прекратились к третьей неделе. Открыть крупно

Мы настроили Material Request: Purpose зафиксирован как Purchase, видимы четыре поля (объект, номенклатура, количество, дата), роль прораба ограничена его объектами через User Permissions. Номенклатуру на старте загрузили из Excel снабженца: около 220 позиций с типовыми единицами (лист, пог. метр, комплект, упаковка). Директору собрали сохранённый фильтр «Pending старше суток» и диаграмму по статусам. По составу это базовая настройка: роли и права, загрузка справочников из Excel и обучение, условия такого объёма описаны на странице продукта.

Шкала первого месяца в компании Стена и Фасад Монтаж: две недели дублей, прекращение, 4–5 заявок в ожидании
К концу месяца список ожидающих заявок обозрим. Открыть крупно

Первые две недели шли параллельно: прорабы подавали заявки в системе, но по привычке дублировали их в чате. Мы не запрещали, а просили снабженца отвечать на заявки только из ERPNext. К третьей неделе дублирование прекратилось само. Типичная проблема пилота — прораб выбирал не ту единицу (упаковку вместо штуки) и получал ошибочное количество. Лечится это настройкой единиц в номенклатуре и фактором пересчёта, а не обучением.

К концу первого месяца у директора появился ответ на вопрос «что висит». Список Pending содержал 4–5 заявок вместо неизвестного количества сообщений. При этом остались и недоработки: на одном объекте почти нет связи, и прораб подавал заявки раз в день из прорабской, а не по мере потребности. Эту проблему программа не решила, и мы так и сказали заказчику. Посмотреть такую форму вживую можно на демостенде erp-demo.itfresh.ru по запросу, а контроль перебора по договору — следующий шаг, который описан в соседней статье.

Плитки условной монтажной организации: 6 рабочих мест, 3 объекта, 220 позиций, 4 поля в форме прораба
Масштаб примера: шесть мест и три объекта. Открыть крупно

Частые вопросы

Какие поля обязательны в заявке на материалы с объекта?

В ERPNext для строки обязательны код номенклатуры, количество, единица измерения и дата потребности (так заданы поля в описании документа версий 15 и develop). Объект, склад, центр затрат и счёт расходов можно не заполнять. Для прораба практично оставить четыре поля: объект, номенклатура, количество, дата, остальное подставить по умолчанию.

Почему в строке заявки нельзя выбрать проект?

В описании Material Request Item для версий 15 и develop у поля project нет признака «только чтение», а в старых обсуждениях форума оно встречается. Если поле у вас недоступно, проверьте настройки в Customize Form и права роли: часто проект не виден из-за User Permissions. Проверьте это в своей версии.

Можно ли подать заявку, если на объекте нет интернета?

Полноценного офлайн-режима у веб-версии нет, ярлык на главном экране его не заменяет. Заявка сохраняется только при наличии связи. Для объектов без покрытия заранее договариваются, как прораб отправит заявку из точки с сетью, и фиксируют это в регламенте компании.

Что значит статус Partially Ordered у заявки?

Часть позиций уже превращена в заказы поставщикам, часть ещё нет. Система считает статус по проценту заказанного, вручную его не меняют. Парный к нему Partially Received: заказанное приехало не полностью. Эти два статуса показывают руководителю поэтапную поставку без звонков прорабу.

Прораб может приложить фото к заявке?

Да, к документу можно прикрепить файл, в том числе фото со смартфона: объём работ, повреждённую деталь, остаток материала. Размер и допустимые типы файлов ограничивают настройки безопасности системы, поэтому при ошибке загрузки сначала проверьте лимит размера, а не саму форму.

Столкнулись с похожей задачей? Обращайтесь — решим

Если у вас происходит что-то из описанного в этой статье — или любая другая проблема с ИТ-инфраструктурой, — обращайтесь в любое время. Мои специалисты и я лично разберём ситуацию, найдём настоящую причину и доведём до решения.

Возьмёмся и за разовую задачу, и за постоянное обслуживание. Первичная консультация — бесплатно и без обязательств.

📞 +7 903 729-62-41 ✈ Telegram @ITfresh_Boss

С уважением, Семёнов Евгений Сергеевич, директор «АйТи Фреш» — IT-аутсорсинг для компаний до 50 рабочих мест, 15+ лет практики

Источники

© ООО «АйТи-Фреш» · Москва · Все статьи