Перейти к основному содержимому

Расшифровка КБК

Зачем и для кого

Инструкция для аналитиков и разработчиков, которым нужно из одной колонки с двадцатью цифрами получить читаемые разрезы (ведомство, функциональное направление, КВР и т.д.) или полное наименование строки бюджетной классификации. КБК всегда 20 цифр, но разметка позиций различается для доходов, расходов и источников финансирования дефицита; год справочника должен совпадать с годом данных.

Входные данные

  • Строка кода — ровно 20 цифр после нормализации (пробелы внутри значения, артефакты Excel и см. pandas: КБК).
  • Финансовый год наблюдения — перечень допустимых кодов и наименования меняются приказами Минфина (ориентир — приказы по бюджетной классификации).
  • Тип кода — доход / расход / источники финансирования дефицита: из паспорта набора, названия колонки, формы отчётности или соседних полей; не выводите тип из одной только строки цифр.
  • Справочник — строки полного КБК из открытых данных Минфина на выбранный год и тип, либо отдельные справочники составных частей (если строите разрез вручную).

Инструменты

  • Браузер — поиск набора «КБК» в каталоге на minfin.gov.ru (см. карточку источника).
  • Python 3 с pandas для CSV и джойнов; при скачивании с витрины — осмысленный User-Agent (см. how-to по каталогу Минфина).
  • Excel или SQL — те же шаги: нормализация ключа, тип года, VLOOKUP / JOIN по 20-значной строке.

Шаги

  1. Нормализуйте код до 20 цифр одной строкой без пробелов; храните как текст, чтобы не терять ведущие нули.
  2. Зафиксируйте тип кода (доход / расход / ИФД) и год; отдельно скачайте справочник того же типа и года.
  3. Предпочтительно: выполните JOIN факта к таблице полного справочника КБК по нормализованному ключу — в одном шаге получите официальное наименование строки (и при необходимости дополнительные колонки из файла Минфина).
  4. Если нужны разрезы: разрежьте строку на подполя по схеме года (для расходов и доходов — таблицы в кодах расходов и кодах доходов; для ИФД ориентируйтесь на приказ на год и смысл блока дефицита) и джойньте каждую часть к соответствующему справочнику.
  5. Проверьте долю строк без совпадения (left_only при merge в pandas), сверку сумм до и после джойна и отсутствие дубликатов ключа в справочнике.

Воспроизводимый пример

Разбор расходного кода по позициям (схема как в кодах расходов): первые три знака — главный администратор, затем раздел и подраздел ФКР, десять знаков целевой статьи, последние три — КВР.

def split_expense_kbk(kbk: str) -> dict[str, str]:
s = kbk.strip().replace(" ", "")
if len(s) != 20 or not s.isdigit():
raise ValueError("Ожидается 20 цифр после нормализации")
return {
"kbk": s,
"main_admin": s[0:3],
"fkr_section": s[3:5],
"fkr_subsection": s[5:7],
"target_article": s[7:17],
"kvr": s[17:20],
}


parts = split_expense_kbk("07104010201081000110")
for k, v in parts.items():
print(f"{k}: {v}")
# main_admin -> 071; kvr -> 110 (пример; наименования — только из справочника года)

Полное наименование той же строки без ручного слайсинга — через строку справочника КБК того же года в CSV с витрины Минфина (загрузка каталога — minfin-api).

Проверка результата

  • После джойна к полному справочнику нет (или объяснимо мало) строк с отсутствующим кодом; встречающиеся «битые» ключи сверьте с исходным полем и нормализацией.
  • При разборе по полям длины срезов в сумме дают 20, а значения подполей существуют в соответствующих справочниках года.
  • Суммы показателей по исходной таблице совпадают с суммами после джойна (если в справочнике одна строка на код; иначе сначала дедуплицируйте справочник).

Ограничения и типовые ошибки

  • Разный тип в одной таблице — смешение доходного и расходного КБК в одной агрегации даёт бессмысленные итоги; фильтруйте по типу до джойна.
  • Год справочника не совпадает с годом факта — «почти верные» наименования и массовые несовпадения ключей.
  • Числовой импорт в Excel обрезает старшие разряды или даёт научную запись — держите КБК как строку.
  • ИФД — не подставляйте схему расходного слайсинга «по привычке»; разряды читают по отдельной классификации источников финансирования дефицита в приказе на год.
  • Дубликаты в справочнике на один код размножают строки факта при merge — используйте indicator=True в pandas или COUNT в SQL.

Связанные страницы