Материалы субподрядчику и материалы заказчика: как учесть давальческую схему в ERPNext
Давальческая схема в ERPNext имеет два направления: свои материалы вы передаёте субподрядчику через Subcontracting Order, а материалы заказчика принимаете флагом Is Customer Provided Item. Ниже: цепочки документов, остаток у подрядчика на условных цифрах, разбор «Серого Кирпича» и то, чего в коробке нет.
Давальческая схема в ERPNext: две схемы, свои материалы у субподрядчика и чужие у вас
Слово «давальческий» путают, и в учёте это приводит к ошибкам. Схем две, и они зеркальны. В первой материалы ваши, а работу выполняет субподрядчик: генподрядчик отдаёт кирпич, арматуру или профиль исполнителю, остаётся собственником и платит за услугу. Во второй материалы чужие: заказчик передаёт вам материал для работ, собственник он, а вы отвечаете за хранение и использование. В ERPNext это две разные настройки, и смешивать их нельзя.
В первой схеме стоимость материалов и стоимость услуги подрядчика складываются в себестоимость результата. Документы: заказ на услугу, Subcontracting Order, передача материалов на склад подрядчика, приёмка работы. Во второй схеме у материала ставится флаг Is Customer Provided Item, приём идёт обычным движением, но финансовых проводок нет, потому что вы не владелец. Остаток по складу при этом ведётся, и прораб видит, сколько чужого материала на площадке.
Для строительной организации важно не потерять границу. Первая схема нужна, когда вы часть работ отдали на сторону и хотите видеть, что именно ушло и что вернулось. Вторая нужна, когда заказчик поставляет отделочные материалы или оборудование, а вы монтируете. Если у вас обе ситуации одновременно, вы заведёте два набора документов и две цепочки. Как мы внедряем ERPNext под ключ, описано на странице ERPNext под ключ.
Таблица различий, чтобы было видно разницу сразу: | Параметр | Свои материалы у субподрядчика | Материалы заказчика у вас | |---|---|---| | Собственник | вы | заказчик | | Ключевая настройка | цепочка Subcontracting | Is Customer Provided Item | | Финансовый учёт | материалы и услуга идут в себестоимость | проводки равны нулю | | Остаток | у подрядчика и на складе | на вашем складе | | Что подтвердить на стенде | процесс в кладке, потери | приём и списание |
Как передать материалы субподрядчику: цепочка документов в ERPNext
По документации, штатный порядок такой. Сначала создают Service Item: позицию без склада, которая обозначает стоимость услуги подрядчика. Затем BOM на обработанную позицию, где в составе перечислены необработанные материалы; операций в нём нет, если вся работа выполняется подрядчиком. Дальше заказ поставщику с флагом Is Subcontracted, где цена — это стоимость услуги, согласованная с подрядчиком. Из заказа создают Subcontracting Order, и при сохранении строки необработанных материалов заполняются по спецификации.
После этого кладовщик создаёт Stock Entry типа Send to Subcontractor: материалы уходят со склада объекта на склад подрядчика. Это важный момент: материал не списан, а переехал на склад подрядчика и числится вашим. Далее работа принимается документом Subcontracting Receipt: система делает backflush, то есть списывает материалы по спецификации. Завершает цепочку Purchase Invoice на стоимость услуги.
Что означает BOM в строительном контексте, надо пояснить. BOM в ERPNext — производственная спецификация изделия, а не спецификация договора. Для кладки вы заводите условную позицию, например «Кладка стен, куб. м», и описываете в BOM, сколько кирпича на единицу. Это обходной путь, у него свои ограничения, и я прошу закладывать на него проверку на стенде.
Резервирование. В v15 заказ на субподряд увеличивает в остатках по складу показатель «Reserved Qty for Subcontract», то есть количество, обещанное подрядчику, видно отдельно от свободного; в заказе есть поле резервного склада (Reserve Warehouse). Полноценное резервирование через флаг Reserve Stock в Subcontracting Order появилось в коде v16. Если вы на v15, жёсткого резерва в этом смысле нет, и обещать его заказчику не стоит. Если на объекте всё идёт параллельно и материал нужен нескольким бригадам, резерв экономит споры.
Остаток у субподрядчика и приёмка работы: что видно в учёте
Главный вопрос давальческой схемы — где лежит материал и сколько его осталось. В ERPNext склад подрядчика заводится как отдельный склад. После Send to Subcontractor остаток у подрядчика виден в отчёте по складу, а при приёмке работы он уменьшается на количество, которое система списала по спецификации. Разница между переданным и списанным остаётся у подрядчика до возврата или до следующей передачи.
Если подрядчик вернул лишнее, возврат оформляется перемещением Material Transfer со склада подрядчика на склад объекта. С потерями сложнее. Механизм process loss в ERPNext работает в Stock Entry с назначением Manufacture или Repack, то есть в собственном производстве, а не в приёмке работы подрядчика. Для кладки, где бой и обрезки нормальны, я закладываю норму потерь прямо в количество материала в BOM (например, 500 штук на кубометр уже с учётом боя) и согласую её с подрядчиком в договоре. Брак при приёмке фиксируют полем отклонённого количества (Rejected Qty) в Subcontracting Receipt.
Статусы по цепочке видны в документах: отправлено, в работе, принято. Прораб на приёмке сверяет акт выполненных работ с количеством по Subcontracting Receipt, кладовщик — остаток на складе подрядчика с фактом. Если цифры не совпадают, расхождение фиксируется до оплаты, а не после.
Условные цифры: передано 2 000 кирпичей; по приёмке работы списано 1 750; остаток у подрядчика 250, их возвращают на склад объекта. Числа иллюстративные, но логика проверки общая: переданное минус списанное равно остатку, а остаток либо возвращается, либо переходит в следующую передачу.
Материалы заказчика: Is Customer Provided Item и нулевая стоимость
Обратное направление настроено проще. У позиции в справочнике ставится флаг Is Customer Provided Item, и приём такого материала через Stock Entry не создаёт финансовых проводок: стоимость равна нулю, потому что материал вам не принадлежит. Остаток по складу ведётся, поэтому вы видите, сколько чужого материала на объекте и сколько уже установили. По документации Material Request поддерживает отдельную цель Customer Provided, так что и заявку можно оформить без смешивания со своими закупками.
Для подрядчика это защита от двух проблем. Первая: материалы заказчика не попадают в вашу себестоимость и не искажают прибыль по объекту. Вторая: при споре видно, сколько принято и сколько использовано. Сам флаг не решает юридическую часть: акт приёма-передачи, ответственность за хранение и порядок списания остаются в договоре, а не в системе.
Поведение флага я сверил по исходникам v15. Позиция с Is Customer Provided Item не может одновременно быть закупаемой (Is Purchase Item) и не может иметь ставку оценки; тип заявки по умолчанию у неё становится Customer Provided. В движениях склада для такой позиции система сама ставит «нулевую оценку разрешена» (Allow Zero Valuation Rate), поэтому стоимость приходит нулевой. Проверка на стенде всё равно нужна: создайте позицию с флагом, примите через Stock Entry и посмотрите проводки по складу и по счетам. Они должны быть нулевыми, а остаток положительным.
Для v16 есть новость: в заметках к релизу v16.0.0 появились документы Subcontracted Sales Order и Subcontracting Inward Order для работы с сырьём заказчика, с резервированием и учётом возврата готового результата. Они рассчитаны на производство по давальческой схеме, и к стройке их применимость я бы проверял на стенде. Если материалы заказчика приходят на объект часто, заведите отдельный склад «Материалы заказчика» и не смешивайте его с основным. Это снимает вопросы при инвентаризации. Общий разбор ERPNext для производственных задач есть в обзоре для производства.
«Серый Кирпич» отдаёт кладку субподрядчику: разбор условного случая
Условный пример, цифры вымышленные. Строительная организация «Серый Кирпич» ведёт жилой дом на четыре подъезда, в штате 17 человек. Кладку внутренних стен отдали субподрядчику, а кирпич закупает сама организация. До внедрения учёт держали в таблице: кто сколько кирпича увёз, никто не знал точно. На третьем месяце субподрядчик заявил, что кирпича не хватило, а на площадке лежали остатки.
Мы настроили цепочку. Service Item «Кладка стен» на кубометр, BOM с кирпичом из расчёта условных 500 штук на кубометр, заказ поставщику с флагом Is Subcontracted, Subcontracting Order. Кладовщик оформляет Send to Subcontractor со склада объекта на склад подрядчика; прораб принимает работу Subcontracting Receipt. В первую передачу ушли 2 000 кирпичей, по приёмке приняли 3,5 куб. м кладки, система списала 1 750 штук, остаток 250 вернули на склад.
Расхождение нашлось сразу: прораб считал, что подрядчик израсходовал около 2 000, а система показала 1 750. Разница 250 штук лежала у подрядчика, и это была не недостача, а непринятый остаток. До внедрения этого различия никто не видел. Сумма услуги прошла отдельным счётом, и в себестоимости объекта остались и материалы, и работа.
Что не получилось с первого раза: бой и обрезки. Подрядчик настаивал, что потери выше расчётных, и без согласованных нормативов спор пришлось решать вручную. Мы зафиксировали норму потерь в BOM и добавили строку в договор. Это условный пример: нормативы у вас другие, а сам механизм работает при условии, что вы договорились с подрядчиком заранее.
Чего ERPNext не закрывает: КС-2, удержания и бухучёт в 1С
Перечисляю честно. Форм КС-2, КС-3 и М-29 в коробке нет, нормативных смет тоже. Печатные формы делают на HTML и Jinja как Print Format, это работа разработчика. Удержания с субподрядчика (Retention) в нашей базе названы частью учёта субподряда, но механика в главе не раскрыта, поэтому я не обещаю готовой настройки: проверяйте на стенде и закладывайте доработку.
Бухгалтерский и налоговый учёт остаётся в 1С. ERPNext держит оперативный учёт: что отгружено, что принято, где остаток. Обмен с 1С строят через REST или файловый обмен, готового коннектора нет. Про общий порядок интеграции у нас есть материал про обмен накладными с поставщиками, он помогает увидеть, какие документы обычно ходят между системами.
Ещё одно ограничение: штатный субподряд рассчитан на производство, где подрядчик возвращает изделие. Строительная работа не возвращает предмет, а создаёт результат на объекте. Поэтому схема с позицией-услугой и BOM работает как учётная модель, а не как копия строительного процесса. Если ваш процесс сложнее, например с этапами и промежуточной оплатой, смотрите отдельно в услуге внедрения open-source систем, где мы подбираем конфигурацию под процесс.
И про версии. Резервирование сырья до передачи и часть возможностей субподряда развиваются от версии к версии. Не планируйте функцию по презентации: сверяйтесь с документацией вашей версии (v15 или v16) и тестируйте на копии базы.
Что проверить на стенде до первой передачи материалов
Я прошу заказчика пройти пять проверок перед боевым использованием. Первая: создать Service Item и BOM, затем заказ с Is Subcontracted и Subcontracting Order, убедиться, что строки материалов подтянулись. Вторая: оформить Send to Subcontractor и посмотреть остаток на складе подрядчика. Третья: принять работу и сравнить списание с ожиданием по BOM.
Четвёртая проверка касается материалов заказчика: поставить флаг Is Customer Provided Item, принять материал и убедиться, что проводки нулевые, а остаток виден. Пятая: возврат остатка перемещением Material Transfer и сверка склада подрядчика с нулём. После этого сделайте то же на копии реальных данных, а не на демо.
Критерий готовности простой: по каждому объекту вы можете назвать, сколько материала у подрядчика, сколько принято и сколько вернулось, и цифры совпадают с фактом на площадке. Если нет, настройку не запускают в работу.
Живой стенд покажем на erp-demo.itfresh.ru по запросу. Если вам нужен выбор системы учёта для небольшого офиса, посмотрите какую систему учёта выбрать на Linux.
Частые вопросы
Как учесть передачу материалов субподрядчику в ERPNext?
Штатная цепочка: Service Item и BOM, заказ поставщику с флагом Is Subcontracted, Subcontracting Order, Stock Entry Send to Subcontractor, Subcontracting Receipt, Purchase Invoice. Стоимость услуги входит в итоговую себестоимость. Применимость для строительной кладки проверяют на стенде.
Что такое давальческие материалы в строительстве?
Это материалы, которые передаются исполнителю для работ и остаются собственностью передающей стороны: генподрядчик отдаёт их субподрядчику, либо заказчик передаёт генподрядчику. В ERPNext это две разные настройки: цепочка Subcontracting и флаг Is Customer Provided Item.
Как в ERPNext принять материалы заказчика на объект?
Для материалов заказчика у позиции ставится флаг Is Customer Provided Item. Такая позиция не может быть закупаемой и не имеет ставки оценки, а в складских движениях система разрешает нулевую оценку. Приём через Stock Entry поэтому не меняет финансовый учёт подрядчика: стоимость нулевая, остаток по складу ведётся. Проверьте на тестовой позиции.
Можно ли зарезервировать материалы до передачи субподрядчику?
В v15 заказ на субподряд отражается в остатках как Reserved Qty for Subcontract, а у заказа есть резервный склад. Флаг Reserve Stock в Subcontracting Order, дающий жёсткое резервирование через Stock Reservation, появился только в v16. Если вы на v15, проверьте поведение на стенде и не обещайте жёсткий резерв.
Подходит ли ERPNext для КС-2 и удержаний с субподрядчика?
Форм КС-2 и КС-3 в коробке нет, их делают печатными формами на HTML и Jinja. Удержания (Retention) упоминаются как часть учёта субподряда, но механику настраивают и проверяют на стенде. Бухучёт и налоги остаются в 1С.
Источники
- ERPNext Docs: Subcontracting Order — Цепочка Service Item, BOM, заказ с Is Subcontracted, Subcontracting Order, Send to Subcontractor, Subcontracting Receipt, резерв сырья, Supplied Items; проверено 01.10.2026: https://docs.frappe.io/erpnext/subcontracting-order
- ERPNext Docs: Stock Entry — Типы Send to Subcontractor, Material Transfer, Material Issue; Scrap и Process Loss; проверено 01.10.2026: https://docs.frappe.io/erpnext/stock-entry
- ERPNext Docs: Material Request — Цели заявки, включая Customer Provided и Subcontracting; проверено 01.10.2026: https://docs.frappe.io/erpnext/material-request
- Исходники ERPNext v15/v16: Item, Stock Entry, Subcontracting Order — Проверено 01.10.2026: Item.validate_customer_provided_part (нельзя Purchase Item и Valuation Rate, тип заявки Customer Provided), buying/stock controller ставит allow_zero_valuation_rate, process loss только для Manufacture/Repack, Reserve Stock в Subcontracting Order есть только в v16. https://github.com/frappe/erpnext/blob/version-15/erpnext/stock/doctype/item/item.py , https://github.com/frappe/erpnext/blob/version-16/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json
