База поставщиков в ERPNext: карточка, условия оплаты и история закупок по каждому поставщику
Учёт поставщиков в ERPNext строится вокруг карточки Supplier: к ней привязаны запросы цен, заказы, приёмки, счета и платежи, по ним видна история закупок и долг. Ниже: поля карточки, отчёты, загрузка без дублей, блокировка и граница с 1С.
Что хранится в карточке поставщика и какие документы к ней привязаны
Карточка поставщика (Supplier) в ERPNext это не только название и телефон. Это точка, к которой стягивается вся история закупок: запросы цен, коммерческие предложения, заказы, приёмки, счета и платежи. Когда снабженец открывает карточку, справа он видит блок связей с количеством документов по каждому типу, и одним кликом переходит к нужным. Как это работает на практике в нашем решении для подрядчиков, показано в продукте ERPNext под ключ, а ниже я разбираю саму карточку по исходному коду версии 15: в пересказах и старых инструкциях поля часто путают.
Что в карточке есть по факту. Основные поля: название (Supplier Name), группа поставщиков (Supplier Group), тип (Supplier Type: компания, физлицо, партнёрство), страна, налоговый номер (Tax ID), категория налога и категория удержания налога, шаблон условий оплаты по умолчанию (Default Payment Terms Template), валюта расчётов, прайс-лист и банковский счёт по умолчанию. Адреса и контакты хранятся отдельными записями (Address, Contact) и показываются в карточке, а не вводятся в неё. Есть и служебные флаги: «Disabled», «Block Supplier» с типом блокировки и датой снятия, «Is Frozen». О них поговорим в четвёртом разделе.
Какие документы к ней привязаны, по схеме самой карточки в системе: | Группа | Документы | Что это даёт | |---|---|---| | Закупочные процедуры | Request for Quotation, Supplier Quotation | запросы цен и ответы поставщика | | Заказы | Purchase Order, Purchase Receipt, Purchase Invoice | обязательства, факт поставки, долг | | Платежи | Payment Entry, Bank Account | оплата и банковские реквизиты | | Цены | Pricing Rule | договорные скидки и цены поставщика |
Здесь нужно сразу развести два понятия, на которых любят спотыкаться при обмене с 1С. Purchase Invoice в ERPNext это счёт поставщика, он отражает долг и работает как основание для оплаты. Это не «счёт-фактура полученная» из 1С: там это отдельный налоговый документ по НДС. Соответствия «один к одному» между ними нет, и если вы строите обмен, придётся определить, какой документ в какой системе рождается.
Как посмотреть историю закупок и задолженность по одному поставщику
История по поставщику складывается из стандартных отчётов, и мне не нужно ничего программировать, чтобы её получить. Начинаю с отчёта «Accounts Payable» (кредиторская задолженность): в фильтрах выбираю тип стороны Supplier и конкретного поставщика, вижу непогашенные счета с возрастной разбивкой. Для сводки по обороту и сальдо за период у отчётов бухгалтерии есть «Supplier Ledger Summary». Для закупочной аналитики используются «Purchase Order Analysis» (заказы и их исполнение), «Procurement Tracker» (путь от заявки до оплаты), «Item-wise Purchase History» (что и по какой цене покупали) и «Purchase Register» (реестр счетов). Все эти отчёты есть в ядре версии 15.
Статусы счёта поставщика помогают быстро ответить на вопрос «кому мы должны». В списке счетов видно Unpaid, Overdue и Paid; просроченные подсвечены. Для условий оплаты используется шаблон Payment Terms Template: он определяет, через сколько дней после даты счёта наступает срок, и от него зависит статус «просрочен». Шаблон по умолчанию задаётся на карточке поставщика и подтягивается в новые заказы и счета, поэтому условия вводятся один раз, а не при каждом документе.
Отдельная история — аванс. Оплата авансом возможна прямо по заказу поставщику, до первичных документов: платёжный документ создаётся от Purchase Order. Это связывает поставщика с оплатой без складской приёмки, и такой сценарий полезен для услуг и аренды техники. Но тогда в отчёте задолженности вы увидите аванс как отдельную строку, и сопоставить его со счётом можно при проведении оплаты. Оплату авансом я разбираю отдельно; здесь запомните только, что история закупок по поставщику включает и такие платежи.
Как завести поставщиков без дублей: порядок загрузки
Дубли контрагентов, это типичный симптом переноса неочищенных справочников. «ООО Бетон-Центр», «Бетон Центр ООО» и «Бетон-центр» в таблице выглядят как три разных поставщика, и система послушно заведёт три карточки. Проверок, которые бы нашли дубль по налоговому номеру, я в логике карточки Supplier не обнаружил: Tax ID это обычное текстовое поле. Значит, чистота справочника обеспечивается процессом, а не системой, и сделать это надо до загрузки.
Порядок, который мы используем на проектах. Сначала готовим список в Excel или выгружаем из 1С. Затем убираем дубли и неформальные записи, приводим названия к единому виду, добавляем налоговый номер. Дальше загружаем через инструмент Data Import: сначала пробный импорт 20–30 записей, потом сверка числа записей с файлом. И только после этого загружаем остальное. Основное время перехода на систему уходит именно на очистку данных, а не на загрузку: исторические документы обычно не переносят, только остатки на дату запуска.
Способ именования нужно решить заранее. В настройках закупок (Buying Settings) есть поле «Supplier Naming By» с вариантами «Supplier Name», «Naming Series» и «Auto Name». Если выбрать название (это значение по умолчанию), идентификатором станет само имя, и система не даст завести второго поставщика с точно таким же именем; зато вы получите вопрос, что делать с однофамильцами. Если выбрать серию, идентификатором станет SUP-2026-00001, а дубли по названию придётся ловить сверкой. Я для подрядчиков чаще выбираю название, потому что снабженцы думают именами, а не номерами, и в списках сразу видно, что завели дубль.
- Выгрузить список поставщиков из Excel или 1С одним файлом.
- Убрать дубли и неформальные имена, привести написание к единому виду.
- Добавить налоговый номер и группу поставщика для каждой записи.
- Сделать пробный импорт 20–30 записей и просмотреть результат в списке.
- Сверить число загруженных записей с числом строк в файле.
- Запретить вести параллельный список в Excel после запуска.
Блокировка и приостановка поставщика: что проверить на стенде
Меня часто спрашивают, можно ли «заморозить» поставщика. Я проверил это по исходному коду версии 15: можно, причём несколькими способами. Первый вариант: флаг «Disabled» на карточке. Отключённого поставщика система не пропускает в документы закупки и платежи: при проведении общий контроллер проверяет сторону документа и выдаёт ошибку, что поставщик отключён. Второй вариант: флаг «Block Supplier» с выбором «Hold Type» (All, Invoices или Payments) и датой снятия «Release Date». Он работает точечно, и типы ведут себя по-разному. При типе All окно оплаты (Payment Entry) не подтягивает неоплаченные счета поставщика, пока флажок стоит, дата снятия на это не влияет. При типе Payments список счетов пустой, пока не наступила дата снятия, а если дата не задана, то бессрочно. Тип Invoices рассчитан на запрет новых счетов поставщика, его поведение на своей версии я прогоняю отдельно.
Третий вариант касается отдельного счёта: в Purchase Invoice есть собственная блокировка (Block Invoice) с комментарием и датой снятия. Её удобно использовать, когда спорный не поставщик, а конкретный счёт, например по качеству приёмки. Четвёртое: поля «Warn POs» и «Prevent POs» (и аналогичные для запросов цен) в карточке доступны только для чтения, потому что их выставляет оценочная карта поставщика (Supplier Scorecard) по результатам рейтинга. То есть запретить заказы руками этими флагами нельзя; нужен либо Disabled, либо настройка скоринга.
Теперь предупреждение. На уровне заказа есть Hold и Close Items: приостановка заказа или закрытие недопоставленных позиций. Это операции над заказом, а не над карточкой поставщика, и путать их нельзя. Я рекомендую на стенде прогнать четыре сценария: отключить поставщика и попробовать создать заказ, заблокировать его для платежей и открыть оплату, заблокировать один счёт и попробовать оплатить, выставить скоринг и убедиться, что предупреждение появилось. Поведение кнопок зависит от версии, и в моих проектах в v16 я проверяю его заново.
Что остаётся в 1С и ЭДО, а что ведёт ERPNext
ERPNext и 1С в нашей схеме работают рядом, а не вместо друг друга. ERPNext ведёт операционный контур: заявки, заказы, приёмку, остатки на объектах, согласование и историю закупок по поставщику. 1С остаётся для регламентированного учёта: налоги, бухгалтерская отчётность, счёт-фактура полученная, формат ЭДО. Поэтому один и тот же поставщик живёт в двух системах, и ключевой вопрос не «как синхронизировать», а «где он рождается». Источник истины для номенклатуры и контрагентов определяют заранее и не допускают двусторонней неконтролируемой синхронизации.
Обмен строится через HTTP-сервисы, REST или OData, а не прямой записью в базу 1С: прямая запись в SQL-базу недопустима. На практике важно, чтобы при передаче поступлений не терялись партии, единицы измерения и ставки НДС, иначе бухгалтер будет править всё вручную. В пакет внедрения входит выгрузка утверждённых счетов и контрагентов штатными средствами (CSV и Excel), а автоматический обмен оценивается отдельно под вашу конфигурацию 1С.
Что где ведётся, в одной таблице: | ERPNext | 1С | |---|---| | заказы и приёмка | счёт-фактура полученная | | остатки и склады объектов | налоговый учёт по НДС | | согласование и Payment Request | регламентированная отчётность | | история закупок по поставщику | банк и ЭДО | Про сопоставление контрагентов и номенклатуры при обмене у меня есть отдельный разбор, сопоставление контрагентов и номенклатуры в 1С при распознавании первички, а про обмен накладными с поставщиками, электронный обмен накладными. Если вы выбираете между системами для небольшого бизнеса, посмотрите и Dolibarr для микробизнеса, там другая философия учёта.
Как «Берёзовая Слобода» навела порядок в 60 поставщиках (условный пример)
Условный пример. Застройщик малоэтажных посёлков «Берёзовая Слобода», 15 рабочих мест: директор по строительству, два прораба, три инженера ПТО, снабжение из двух человек, бухгалтерия и сметный отдел. До проекта поставщики лежали в Excel у снабженцев и в 1С у бухгалтерии, плюс в мессенджерах. В таблице было 60 строк. После очистки осталось 52 уникальных поставщика: восемь дублей были написаны по-разному или принадлежали одной компании с разными формами собственности в названии.
Что мы сделали. Построили дерево групп поставщиков: строительные материалы, инструмент и техника, транспорт и доставка, услуги. Задали шаблон условий оплаты для каждого крупного поставщика (отсрочка или предоплата), чтобы он подтягивался в заказы. Провели пробный импорт 25 записей и сверили число с файлом, потом загрузили остальные. Налоговый номер заполнили у всех 52, КПП вынесли в пользовательское поле. После загрузки таблицы закрыли на запись: список один, и он в системе.
Через месяц нужен был контроль. Один поставщик систематически задерживал отгрузки, и снабжение попросило заблокировать ему оплату до разбора: в карточке включили «Block Supplier» с типом Payments и датой снятия, а заказы продолжили идти по нужным позициям. Другой прислал письмо с новыми банковскими реквизитами, и по правилу компании изменения в карточке Bank Account проходят через руководителя снабжения с проверкой по второму каналу. Здесь помогает то, что у карточки поставщика и у банковского счёта включено отслеживание изменений (Track Changes): видно, кто, когда и что поменял. Подмена реквизитов в счёте это известная схема мошенничества, разбор которой есть в материале про поддельные счета от поставщиков.
Что получили, без процентов эффекта: единый список из 52 поставщиков, историю по каждому в одном окне, платёжную дисциплину по условиям и понятный путь изменения реквизитов. Проверку надёжности контрагента по ИНН мы не встраивали в карточку: она решается отдельным инструментом, о нём в статье про проверку контрагентов. Показать карточку и привязанные документы можно на демостенде erp-demo.itfresh.ru по запросу.
Частые вопросы
Какие документы ERPNext привязываются к поставщику?
К поставщику привязаны запросы цен (Request for Quotation), предложения (Supplier Quotation), заказы (Purchase Order), приёмки (Purchase Receipt), счета (Purchase Invoice), платежи (Payment Entry) и банковские счета. Счёт отражает кредиторскую задолженность, заказ обязательства, приёмка факт поставки. По ним складывается история закупок и взаиморасчётов.
Как перенести поставщиков из Excel или 1С?
Список очищают от дублей и неформальных записей, добавляют налоговый номер и группу, затем загружают через Data Import: сначала пробные 20–30 записей и сверка количества, потом остальные. Основное время уходит на очистку данных. Исторические документы обычно не переносят, только остатки на дату запуска.
Можно ли заблокировать поставщика, чтобы ему не оформляли заказы?
Да, несколькими способами. Флаг «Disabled» отключает поставщика в документах. «Block Supplier» с типом All, Invoices или Payments и датой снятия блокирует оплату. Для отдельного счёта есть Block Invoice. Флаги Warn POs и Prevent POs выставляет оценочная карта поставщика и вручную не меняются; проверьте поведение в своей версии.
Поставщик в ERPNext и контрагент в 1С — это одно и то же?
Нет прямого соответствия. Purchase Invoice в ERPNext это счёт поставщика, а в 1С счёт-фактура полученная отдельный налоговый документ по НДС. Обмен строят через REST или OData, источник истины определяют заранее и избегают двусторонней неконтролируемой синхронизации.
Как не получить фальшивый счёт от поставщика?
Меняйте реквизиты только через проверку по второму каналу, например звонок по ранее известному номеру. В ERPNext у поставщика и банковского счёта включено отслеживание изменений, поэтому видно, кто и когда правил реквизиты. Проверку контрагента по ИНН лучше делать отдельным инструментом.
Источники
- Исходники ERPNext v15: DocType Supplier (GitHub) — Проверены поля supplier_group, supplier_type, tax_id, payment_terms, disabled, on_hold, hold_type, release_date, warn_pos/prevent_pos (read-only), is_frozen; track_changes включён; connections в supplier_dashboard.py. https://github.com/frappe/erpnext/tree/version-15/erpnext/buying/doctype/supplier
- Исходники ERPNext v15: блокировка и платежи (GitHub) — Проверено: validate_party_frozen_disabled, get_supplier_block_status и поведение Payment Entry при on_hold; блокировка счёта (block_invoice) в Purchase Invoice; Purchase Order.validate_supplier и Supplier Scorecard. https://github.com/frappe/erpnext/blob/version-15/erpnext/accounts/party.py Логика блокировки при выборе счетов в Payment Entry (hold_type All/Payments, release_date): https://github.com/frappe/erpnext/blob/version-15/erpnext/accounts/doctype/payment_entry/payment_entry.py
- Исходники ERPNext v15: список отчётов (GitHub) — Проверены Accounts Payable, Supplier Ledger Summary, Purchase Register, Purchase Order Analysis, Procurement Tracker, Item-wise Purchase History; Buying Settings: Supplier Naming By. https://github.com/frappe/erpnext/tree/version-15/erpnext/buying/report
- Главы 02, 08 и 12 базы знаний ITfresh — Purchase Invoice и счёт-фактура полученная, порядок миграции справочников, обмен с 1С через REST/OData, оплата авансом по Purchase Order. projects/erpnext-kb-20261001/kb/02_zakupki_i_snabzhenie.md



