ERPNext для IT- и сервисных компаний: биллинг по табелю, регулярные счета и что не работает из коробки
ERPNext для IT- и сервисных компаний закрывает две задачи биллинга: счёт по отработанным часам (Timesheet превращается в Sales Invoice) и регулярные счета за абонентское обслуживание (Auto Repeat или Subscription). Ниже: как это настраивается, из чего считается сумма и чего в коробке нет, включая учёт оборудования.
Как выставить счёт по часам: Timesheet — Sales Invoice
Сервисная компания продаёт время людей: обход объектов, ремонт, выезд инженера. Если часы записаны в табеле, счёт заказчику строится из них, а не набирается вручную по памяти. В ERPNext эту задачу решает связка Timesheet и Sales Invoice. Сотрудник заполняет табель: указывает задачу, проект и тип работы (Activity Type), число часов. Руководитель проверяет и проводит табель. После этого из него формируется счёт: часы и ставки подтягиваются в строку услуги. Подробнее о продукте, на котором мы это настраиваем, рассказывает страница про внедрение ERPNext под ключ, а здесь разберём именно биллинг.
Что говорит документация. В табеле для строки есть ставка для счёта (Billing Rate), себестоимостная ставка (Costing Rate), число оплачиваемых часов (Billing Hours). Ставка для счёта задаётся при создании табеля и после проведения блокируется. После проведения табеля пользователь может создать из него Sales Invoice, а после проведения счёта в табеле заполняются поля общего числа выставленных часов и суммы (Total Billed Hours и Total Billed Amount). Статус табеля меняется на Partially Billed или Billed (в коде v15 есть оба), поэтому выставленные часы второй раз не выставить. Когда клиент оплатит счёт, оплата фиксируется документом Payment Entry, и цепочка от часа до денег замыкается.
Зачем табель, если можно считать вручную. Первый эффект: не теряются неоплаченные часы. Когда счета набираются по памяти, часть работ остаётся невыставленной, и деньги теряются тихо. Второй эффект: заказчик получает счёт с расшифровкой, и споры сокращаются, потому что у каждого часа есть автор, дата, задача. Третий: руководитель видит, сколько часов выставлено, а сколько ждёт выставления: достаточно отфильтровать табели без признака счёта.
Встроенный таймер. Сотрудник может запускать таймер на задачу, а по завершении система создаёт запись табеля с зафиксированной длительностью и предупреждает, если фактическое время превысило ожидаемое. Для выездных инженеров таймер удобен на смартфоне, но, как и вся система, работает при наличии связи. Если у техников плохой интернет, часы вводятся по возвращении, и это нужно обговорить в регламенте заранее, иначе табели начнут заполняться в пятницу вечером за всю неделю.
Ставки и типы работ: из чего считается сумма в счёте
Сумма счёта по табелю складывается из строк, а каждая строка — это часы, умноженные на ставку. Ставки привязываются к типу работ: для сервисных работ одна ставка, для планового обхода другая, для аварийного выезда третья. Чтобы одну и ту же работу разные сотрудники выставляли по одной цене, ставки задают в документе Activity Cost для связки «сотрудник и тип работ» или ставками по умолчанию в самом Activity Type. В строке табеля видны Billing Rate, Costing Rate, Billing Amount и Costing Amount: ставка для клиента, себестоимость часа и соответствующие суммы.
Разница между ставкой для клиента и себестоимостью — это валовая маржа по часам. Руководителю она нужна не для отчёта ради отчёта, а чтобы понять, какие виды работ приносят деньги, а какие работают «в ноль». Если обход здания продаётся по цене ниже себестоимости часа техника, этот факт видно сразу, а не после года работы. Но себестоимость часа нужно вводить честно и согласовать с бухгалтером, иначе анализ окажется декоративным. | Параметр | Откуда берётся | Зачем | |---|---|---| | Activity Type | справочник типов работ | классификация часов | | Billing Rate | Activity Cost или Activity Type | цена часа для клиента | | Billing Hours | поле строки табеля | оплачиваемые часы | | Costing Rate | себестоимость часа | оценка маржи | | Billing Amount | часы на ставку | сумма строки счёта |
Покажу расчёт на условных числах. Допустим, за месяц по заказчику заведены табели на 120 часов. Из них оплачиваемых 104 часа, потому что 16 часов ушло на внутренние работы, которые клиенту не выставляются. Ставка для сервисных работ 1 800 ₽ в час, для обхода 1 200 ₽ в час. Если 60 часов сервисных и 44 часа обхода, получаем 60 × 1 800 = 108 000 ₽ и 44 × 1 200 = 52 800 ₽, итого сумма счёта 160 800 ₽. Это иллюстрация механики, числа выдуманы, а не рекомендация по ценам. Рядом удобно держать колонку себестоимости, чтобы видеть маржу.
Типичные ошибки на старте. Слишком мелкий справочник типов работ: сотрудники теряются среди двадцати пунктов и выбирают первый попавшийся. Единая ставка на все работы: так проще, но вы теряете возможность менять цену для разных услуг. Разные ставки у разных сотрудников для одного типа работ без причины: клиент видит различия и задаёт вопросы. Я рекомендую начать с пяти-семи типов работ и добавлять новые по запросу, а не создавать «всё сразу».
Абонентская плата: как выставлять регулярные счета
Помимо часов у сервисных компаний есть абонентская плата: фиксированная сумма в месяц за обслуживание здания или инфраструктуры. В нашей базе знаний этот сценарий описан по документации старых версий, где использовался повторяющийся заказ покупателя. В v15 для этого есть два механизма, оба я сверил по исходникам. Первый, Auto Repeat, создаёт копию любого документа по расписанию. Второй, Subscription, строится на планах подписки.
Auto Repeat. По документации он создаёт документы автоматически через заданный период. Работает для документов, у которых включена опция разрешения автоповтора. Периодичность: ежедневно, еженедельно, ежемесячно, ежеквартально, раз в полгода, ежегодно. Обязательна дата начала, дата окончания опциональна. Можно включить автоматическое проведение созданного документа, а также настроить письмо с отправкой документа получателям в выбранном печатном формате. Для абонентки это самый простой путь: берёте образец Sales Invoice, включаете повтор раз в месяц.
Subscription. Это механизм для регулярного выставления счетов клиентам или поставщикам по плану подписки (Subscription Plan). В плане указывается номенклатура, цена (фиксированная, из прайс-листа или месячная ставка с пропорциональным расчётом) и интервал, например, раз в месяц или раз в три месяца. Можно выбрать, когда выставлять счёт: после периода, в начале периода или за несколько дней до него, и включить автоматическое проведение. Документация подчёркивает, что такой механизм подходит для обслуживания, аренды и абонементов. | Критерий | Auto Repeat | Subscription | |---|---|---| | Основа | образец любого документа | план подписки с ценой и интервалом | | Простота | выше | выше требования к настройке | | Гибкость цены | цена как в образце | фиксированная, из прайса, месячная | | Момент выставления | по расписанию | до, в начале или после периода | | Когда выбирать | одинаковые счета без нюансов | много клиентов с разными планами |
Что в этой цепочке остаётся за пределами системы. Автоматическое списание денег с карты клиента требует платёжного шлюза: в документации старых версий встречается Stripe, но для российского заказчика такой вариант нужно обсуждать отдельно, и я упоминаю его лишь как пример из документации. Для юрлиц чаще достаточно, чтобы регулярный счёт уходил по почте, а оплату контролировал бухгалтер. Если оплата идёт через банк, выписки и сверка настраиваются отдельно и входят в доработки.
Что в ERPNext для сервисной компании не работает из коробки
Начну с учёта оборудования и инфраструктуры. CMDB, то есть базы конфигураций с привязкой техники к заявкам, в коробке нет. Реализуется она кастомным приложением на Frappe: внутри обращений и задач создаются таблицы со ссылками на единицы оборудования и учётные записи. Это возможно, платформа позволяет быстро создавать свои типы документов, но это разработка. Если вам нужен именно учёт техники и заявок, часто проще взять отдельное решение для заявок, а ERPNext оставить для денег и времени.
Вторая зона: защита табелей. Руководитель хочет запретить сотрудникам править табели за прошлые недели, чтобы часы после выставления счёта не менялись. Проведённый табель и так нельзя править без отмены, но запрета создавать и менять черновики задним числом одним переключателем нет: он решается правами доступа или серверной проверкой даты (Server Script), поэтому это доработка. Проверьте на своей версии, что именно вам нужно: запрет правки после проведения, запрет создания задним числом или оба. Эти механизмы различаются.
Третья зона: российские первичные документы. Счёт по табелю формируется в ERPNext, но акты выполненных работ, универсальные передаточные документы и счета-фактуры оформляются в российском формате в 1С или по настроенным печатным формам. Региональный модуль регламентированного учёта в ERPNext отсутствует. Схема, которую я предлагаю: ERPNext ведёт время и выставляет внутренний счёт, а акты и налоговый учёт остаются в бухгалтерской системе. Альтернативы и сравнения подходов у нас в материале о системах учёта на Linux.
Четвёртая: автосписания и платёжные шлюзы. Они требуют отдельной настройки и юридически подходящего провайдера. Пятая: нормативы и контроль сотрудников. ERPNext фиксирует часы, но не следит за активностью человека на компьютере: если вам нужен контроль сотрудников, это другой класс программ, он разобран в статье про тайм-трекеры и мониторинг сотрудников. Для выставления счетов достаточно честных табелей. | Возможность | Статус в ERPNext | |---|---| | Timesheet и счёт по табелю | есть в коробке | | Таймер в табеле | есть в коробке | | Регулярные счета | есть, механизм сверить с версией | | Платёжный шлюз для автосписаний | настройка и договор с провайдером | | Запрет правки старых табелей | доработка или права | | Учёт оборудования (CMDB) | другая система или своё приложение |
Ключ и Замок Сервис: 24 рабочих места, обход зданий и счета по актам
Условный пример: компания по обслуживанию зданий «Ключ и Замок Сервис», двадцать четыре рабочих места. Все названия и цифры придуманы для иллюстрации. Бригады обходят здания по графику, выезжают на заявки и обслуживают общие системы: замки, двери, домофоны, простые электрические узлы. Часть клиентов платит абонентскую плату, часть заказывает разовые работы с оплатой по часам.
Как устроено в ERPNext. Для каждого клиента заведён проект. В справочнике типов работ несколько позиций: обход, плановый ремонт, аварийный выезд. Сотрудники заполняют табели с привязкой к проекту и типу работ, а по концу месяца руководитель проверяет и проводит табели. Из проведённых табелей формируются счета. Для абонентов настроены регулярные счета: образец документа повторяется раз в месяц, а счёт уходит клиенту на почту. По разовым работам счёт строится по часам.
Что получилось. Бухгалтер получает все счета из одной системы, не пересчитывая часы из чатов. Руководитель видит список невыставленных часов по каждому клиенту. Спорные ситуации разбираются по табелю: видно, кто, когда и по какой задаче работал. Акты выполненных работ формируются в бухгалтерской системе на основании выставленных данных, и это осознанное разделение, а не недоработка.
Чего пример не обещает. Он не обещает сокращения времени закрытия месяца в процентах: эффект зависит от дисциплины заполнения. Не обещает и учёта оборудования: список замков и домофонов по зданиям остаётся в отдельной таблице или в другом приложении, пока вы не решите разработать собственный справочник. Хорошая новость в том, что платформа позволяет добавить такой справочник позже, и данные табелей от этого не пострадают.
Чем ERPNext отличается от helpdesk и когда нужны оба
Helpdesk и ERPNext решают разные задачи. Helpdesk принимает заявки от клиентов, назначает исполнителей, следит за сроками реакции, ведёт базу знаний и показывает очередь. ERPNext хранит деньги и время: договоры, табели, счета, оплаты. Когда сервисная компания пытается решить обе задачи одним инструментом, обычно страдает та, на которую продукт не рассчитан. Для заявок удобнее специализированная система, а для денег ERP.
Как они стыкуются. Заявка в helpdesk получает номер, исполнитель работает по ней и фиксирует затраченное время. Эти часы затем попадают в табель ERPNext и превращаются в счёт. Стык может быть ручным (сотрудник переписывает часы раз в день), полуавтоматическим (выгрузка по расписанию) или полноценной интеграцией по API. Для компании на двадцать четыре человека ручной или полуавтоматический вариант обычно достаточен, а полноценную интеграцию стоит заказывать только когда ручное дублирование начинает съедать время.
О вариантах service desk мы писали отдельно: разбор helpdesk для небольшого ИТ-отдела и кейс про GLPI и бухгалтерию помогут оценить, какая система для заявок подойдёт вам. Если вам нужен именно такой стек, у нас есть услуга по внедрению GLPI и helpdesk.
Принцип выбора простой. Если у вас в основном абонентские клиенты и выставление счетов по актам, а заявки приходят редко, вам хватит ERPNext с табелями. Если заявок много и важно соблюдать сроки реакции, нужен helpdesk, а ERPNext подключается для денег. Если и то и другое, берите оба и заранее продумайте, где живёт главная запись о клиенте, иначе справочники контрагентов разойдутся. Сравнение с другим сценарием ERPNext, производственным, у нас в статье про открытую ERP для производства.
Частые вопросы
Можно ли в ERPNext выставлять счета по отработанным часам?
Да: сотрудники заполняют Timesheet по задачам и проектам, после проведения из табеля создаётся Sales Invoice, а часы и ставки подтягиваются в счёт. После проведения счёта в табеле заполняются поля выставленных часов и суммы, поэтому часы не выставляются дважды.
Как в ERPNext настроить ежемесячное выставление счетов клиентам?
В v15 есть два механизма: Auto Repeat создаёт копию документа по расписанию (от ежедневно до ежегодно), Subscription работает по плану подписки с ценой и интервалом. Выбор зависит от задачи: простые одинаковые счета проще через Auto Repeat. Название и настройки сверяйте с документацией своей версии.
Как задать разные ставки для сотрудников и видов работ?
Ставки для счёта и себестоимости задаются для связки сотрудника и типа работ (Activity Type). В строке табеля видны Billing Rate, Costing Rate, Billing Amount и Costing Amount. Разница между ставкой для клиента и себестоимостью показывает маржу по каждому виду работ.
Как запретить править табели за прошлые недели?
Проведённый табель без отмены не правится, а для черновиков задним числом одной штатной галочки нет: запрет решается правами доступа или серверной проверкой даты. Поэтому мы делаем это при внедрении как доработку. Сначала уточните, что именно нужно запретить: правку после проведения или создание задним числом.
Есть ли в ERPNext учёт оборудования и IT-инфраструктуры (CMDB)?
В коробке нет: потребуется кастомное приложение на Frappe, где задачи и обращения ссылаются на единицы оборудования. Для учёта техники и заявок чаще проще взять отдельный helpdesk, а ERPNext оставить для денег и времени и связать их по часам.
Источники
- ERPNext Docs — Timesheet — Activity Type, Billing Rate, Costing Rate, Billing Hours, создание Sales Invoice из табеля, поля Total Billed Hours и Total Billed Amount, встроенный таймер; проверено 01.10.2026: https://docs.frappe.io/erpnext/timesheet
- ERPNext Docs — Auto Repeat — Периодичность, дата начала и окончания, автоматическое проведение, письма с документом; проверено 01.10.2026: https://docs.frappe.io/erpnext/auto-repeat
- ERPNext Docs — Subscription — Планы подписки, виды цены, интервалы, моменты выставления счёта; проверено 01.10.2026: https://docs.frappe.io/erpnext/subscription
- Страница продукта ERPNext на itfresh.ru — Состав внедрения, что считается отдельно, демостенд; проверено 01.10.2026: https://itfresh.ru/products/erpnext/
