Бухгалтерский учёт для программиста 1С — это небольшой набор понятий, без которого нельзя безопасно дорабатывать «Бухгалтерию предприятия», ERP или «Комплексную автоматизацию»: двойная запись (каждая операция — дебет одного счёта и кредит другого), план счетов с типами счетов и аналитикой, субконто (разрезы учёта на счёте), регистр бухгалтерии, в который документ пишет проводки, учётная политика, от которой зависят алгоритмы, и закрытие месяца, которое опирается на всё перечисленное.

Хороший программист 1С может отлично писать запросы и формы, но если он не понимает, почему поступление товара — это Дт 41 Кт 60, его доработка рано или поздно сломает отчётность. Ниже — минимум, который я считаю обязательным для разработчика учётных конфигураций, с примерами из кода.

Что такое регламентированный учёт и при чём здесь разработчик

Регламентированный учёт — учёт по требованиям законодательства. В России его основа — закон № 402-ФЗ «О бухгалтерском учёте», а также налоговое законодательство. В него входят бухгалтерский учёт, налоговый учёт и обязательная отчётность.

Для разработчика из этого следуют три вещи:

  • ошибка в данных — это ошибка в отчётности, которую подписывает главный бухгалтер и проверяет налоговая;
  • правила задаются извне: вы не можете «придумать» свою проводку, она должна соответствовать методологии;
  • одна и та же операция в разных организациях учитывается по-разному — в зависимости от учётной политики и режима налогообложения.

Двойная запись и план счетов

Каждая хозяйственная операция отражается одновременно по дебету одного счёта и по кредиту другого на одну и ту же сумму.

Бухгалтерский учёт для программиста 1С: двойная запись — сумма уходит с одного счёта и приходит на другой
Бухгалтерский учёт для программиста 1С: двойная запись — сумма уходит с одного счёта и приходит на другой

Счета собраны в план счетов; в типовых решениях это хозрасчётный план счетов. Каждый счёт имеет вид — от него зависит, как читать остатки:

Вид счётаЧто отражаетУвеличениеПример
АктивныйИмуществоПо дебету41 «Товары», 50 «Касса», 51 «Расчётные счета»
ПассивныйИсточники средств, обязательстваПо кредиту02 «Амортизация ОС», 80 «Уставный капитал»
Активно-пассивныйРасчёты, где возможен остаток в обе стороныЗависит от операции60, 62, 76 — расчёты с контрагентами

Несколько типовых проводок, которые стоит узнавать с первого взгляда:

ОперацияПроводка
Поступление товаров от поставщикаДт 41 Кт 60
Оплата поставщику с расчётного счётаДт 60 Кт 51
Выручка от продажиДт 62 Кт 90.01
Начисление амортизацииДт 20 (26, 44) Кт 02

В платформе вид счёта задаётся свойством предопределённого счёта (активный, пассивный, активно-пассивный), а программно его можно получить через реквизит Вид элемента плана счетов.

Забалансовые счета

Забалансовые счета (001, 002, 003, 004 и другие) учитывают то, что организации не принадлежит, но находится у неё: арендованные ОС, ТМЦ на ответственном хранении, давальческое сырьё, товары на комиссии. Они не входят в баланс и не участвуют в двойной записи: проводка по ним односторонняя — только дебет при поступлении или только кредит при выбытии. В платформе такой счёт помечается признаком «Забалансовый», и регистр бухгалтерии допускает для него запись без корреспондирующего счёта.

Регистр бухгалтерии и субконто

Проводки хранятся в регистре бухгалтерии, который связан с планом счетов. Основные поля записи: Период, Регистратор, СчетДт, СчетКт, СубконтоДт, СубконтоКт, Сумма, плюс измерения вроде Организация и ресурсы для количества, валюты и налогового учёта — их набор зависит от конфигурации.

Субконто — аналитика счёта. На счёте 41 учёт ведётся по номенклатуре и складам (иногда ещё по партиям), на 60 — по контрагентам, договорам и документам расчётов. Набор субконто задаётся у каждого счёта в плане счетов через план видов характеристик видов субконто.

Упрощённый пример формирования проводки при проведении документа поступления:

1С
Процедура ОбработкаПроведения(Отказ, РежимПроведения)

	Движения.Хозрасчетный.Записывать = Истина;

	ВидыСубконто = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные;

	Для Каждого СтрокаТовара Из Товары Цикл

		Проводка = Движения.Хозрасчетный.Добавить();
		Проводка.Период = Дата;
		Проводка.Организация = Организация;
		Проводка.СчетДт = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;
		Проводка.СчетКт = ПланыСчетов.Хозрасчетный.РасчетыСПоставщиками;
		Проводка.Сумма = СтрокаТовара.Сумма;
		Проводка.Содержание = НСтр("ru = 'Поступление товаров'");

		// Аналитика дебета: что и куда поступило.
		Проводка.СубконтоДт[ВидыСубконто.Номенклатура] = СтрокаТовара.Номенклатура;
		Проводка.СубконтоДт[ВидыСубконто.Склады] = Склад;

		// Аналитика кредита: перед кем возник долг.
		Проводка.СубконтоКт[ВидыСубконто.Контрагенты] = Контрагент;
		Проводка.СубконтоКт[ВидыСубконто.Договоры] = ДоговорКонтрагента;

	КонецЦикла;

КонецПроцедуры

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

Учётная политика: не настройка, а часть алгоритма

Учётная политика — набор способов ведения учёта, выбранных организацией. Для разработчика это ветвления в коде:

  • способ оценки списываемых запасов (ФИФО или по средней) меняет расчёт себестоимости;
  • способ начисления амортизации меняет суммы ежемесячных проводок;
  • порядок признания расходов, учёт НДС, применение ПБУ и ФСБУ — всё это влияет на набор и суммы проводок;
  • режим налогообложения: при ОСНО и УСН учёт ведётся по разным правилам и часто в разных регистрах.

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

Закрытие месяца: почему важно не навредить

В конце каждого месяца бухгалтерия выполняет закрытие периода (в БП — обработка «Закрытие месяца»). Она последовательно:

  • рассчитывает фактическую себестоимость и корректирует её;
  • начисляет амортизацию;
  • переоценивает валютные остатки и считает курсовые разницы;
  • распределяет косвенные расходы;
  • определяет финансовый результат.
Закрытие месяца в 1С: регламентные операции рассчитывают себестоимость и амортизацию по данным регистров
Закрытие месяца в 1С: регламентные операции рассчитывают себестоимость и амортизацию по данным регистров

Все эти операции читают данные регистров, которые сформировали документы. Если доработка пишет проводки с непредусмотренными счетами, пустой аналитикой или «не в тот период», закрытие месяца посчитает неверно — и ошибку найдут не сразу, а при сверке или сдаче отчётности.

Типичные ошибки разработчиков

ОшибкаЧем грозит
Движения в регистр бухгалтерии без документа-регистратораДанные нельзя перепровести и объяснить, они расходятся с первичкой
Незаполненные субконтоОстатки «висят» без аналитики, не закрываются взаиморасчёты
Правка типового плана счетовКонфликты при обновлении, поломка типовых алгоритмов
Проведение и изменение документов в закрытом периодеМеняется сданная отчётность; используйте даты запрета изменения
Жёстко зашитые счета и способы учётаНеверный учёт в организациях с другой учётной политикой
Дублирование движений своей доработкойДвойные суммы в оборотах и отчётах

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

Как я работаю с учётными доработками

На проектах доработки 1С с бухгалтерской частью порядок у меня такой: сначала постановка от бухгалтера в терминах проводок («какая операция, какие счета, какая аналитика»), потом реализация через механизмы типовой конфигурации, затем проверка на копии базы с закрытием месяца. Если в базе уже накопились странные проводки, начинаем с аудита: найти доработки, которые пишут в регистр бухгалтерии в обход типовой логики.

Программисту не нужно быть бухгалтером, но он должен читать проводку так же уверенно, как запрос.

Итог

  • Любая операция — это дебет одного счёта и кредит другого; забалансовые счета — исключение с односторонней записью.
  • Субконто — обязательная аналитика счёта, её пустые значения ломают остатки и взаиморасчёты.
  • Проводки формирует только документ-регистратор, через механизмы типовой конфигурации.
  • Учётная политика определяет алгоритмы — не зашивайте счета и способы в код.
  • Любая доработка проведения проверяется закрытием месяца на копии базы.