Регистр бухгалтерии 1С: субконто и движения в коде

Дата: 14.10.2026 15:37:40
Регистр бухгалтерии
План счетов
Субконто
Проведение документов
Запросы
КА 2
Комментарий:
0
Платформа:
8.3
Конфигурация:
Любая
Формы:
Любые

Регистр бухгалтерии 1С хранит проводки: в каждой записи счёт дебета, счёт кредита, сумма и аналитика по субконто. Программисту важна связка трёх объектов — плана счетов, плана видов характеристик (ПВХ) с видами субконто и самого регистра. Ниже — как они связаны, как сформировать проводки в ОбработкаПроведения с количеством и валютой, как получить остатки, обороты и корреспонденцию запросом и как это устроено в КА 2.5. Платформа 8.3.

Где встречается задача

  • Документ должен сам формировать проводки при проведении — в своей конфигурации или в типовой, где так принято (например, в БП 3.0).
  • Нужен отчёт или выгрузка по счетам: остатки по 60 в разрезе договоров, оплаты поставщикам, проводки документа.
  • Проводка есть, а в оборотно-сальдовой ведомости по субконто её не видно.

Как устроен регистр бухгалтерии 1С: план счетов, субконто, корреспонденция

  1. ПВХ видов субконто — список видов аналитики: контрагенты, договоры, номенклатура. Тип значения характеристик у ПВХ составной, а у каждого элемента свой ТипЗначения: у вида «Договоры» — только справочники договоров. Предопределённые элементы дают имена для кода: ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты.
  2. План счетов ссылается на ПВХ свойством «Виды субконто» и ограничивает аналитику свойством «Максимальное количество субконто». У счёта есть вид (активный, пассивный, активно-пассивный), флаг «Забалансовый», признаки учёта вроде «Валютный» и «Количественный» и табличная часть ВидыСубконто: вид субконто, флаг «Только обороты», признаки учёта субконто («Суммовой» и другие).
  3. Регистр бухгалтерии ссылается на план счетов; при включённом свойстве «Корреспонденция» обе стороны проводки лежат в одной записи. Измерения и ресурсы бывают балансовыми и небалансовыми. Небалансовым задают «Признак учета» — итоги по ним хранятся только для счетов с этим признаком. «Признак учета субконто» у ресурса определяет, по каким субконто он детализируется: например, по складам можно вести только количество, если у субконто «Склады» снять «Суммовой».

Запись в регистре бухгалтерии 1С с корреспонденцией — это проводка, и её поля зависят от метаданных:

В метаданныхПоля записиПример (КА 2.5)
Балансовое измерениеОдно поле на проводкуОрганизация
Небалансовое измерениеДва поля: по дебету и по кредитуВалютаДт, ВалютаКт, ПодразделениеДт
Балансовый ресурсОдно поле: сумма дебета равна сумме кредитаСумма, СуммаУУ
Небалансовый ресурсДва поля: по дебету и по кредитуКоличествоДт, ВалютнаяСуммаКт, СуммаНУДт
СубконтоКоллекции СубконтоДт и СубконтоКт, ключ — вид субконтоСубконтоКт[ВидСубконто]

Без корреспонденции запись описывает одну сторону: Счет, ВидДвижения (ВидДвиженияБухгалтерии.Дебет или Кредит) и Субконто, а таблицы ОборотыДтКт нет. Регистратор обязателен: в 1С 8 регистр бухгалтерии всегда подчинён регистратору.

Проводки в ОбработкаПроведения: счета, субконто, количество и валюта

Движения по регистру бухгалтерии документ пишет через ту же коллекцию Движения, что и для других регистров; общие правила — в статье про движения документа. Пример — условный документ «Поступление импорта»: товар приходуется на 41.01, долг перед иностранным поставщиком — на 60.21 в валюте. Имена счетов, видов субконто и ресурсов — из КА 2.5, в своей конфигурации подставьте свои.

// Модуль объекта документа ПоступлениеИмпорта (документ условный).
// Шапка: Организация, Контрагент, Договор, Валюта, Курс, Кратность.
// Табличная часть Товары: Номенклатура, Количество, СуммаВалюта.
// Регистр бухгалтерии Хозрасчетный (с корреспонденцией) отмечен в движениях.
// Имена плана счетов, ПВХ видов субконто и ресурсов — как в КА 2.5.

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

	Если Курс = 0 Или Кратность = 0 Тогда
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = НСтр("ru = 'Не заполнен курс валюты документа.'");
		Сообщение.Сообщить();
		Отказ = Истина;
		Возврат;
	КонецЕсли;

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

	СчетДт = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;         // 41.01
	СчетКт = ПланыСчетов.Хозрасчетный.РасчетыСПоставщикамиВал; // 60.21
	ВидыСубконто = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные;

	// Признаки учёта — булевы свойства ссылки на счёт.
	УчетКоличества = СчетДт.Количественный;
	УчетВалюты     = СчетКт.Валютный;

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

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

		// Субконто: ключ коллекции — вид субконто (элемент ПВХ).
		УстановитьСубконто(Проводка.СубконтоДт, СчетДт, ВидыСубконто.Номенклатура, СтрокаТоваров.Номенклатура);
		УстановитьСубконто(Проводка.СубконтоКт, СчетКт, ВидыСубконто.Контрагенты, Контрагент);
		УстановитьСубконто(Проводка.СубконтоКт, СчетКт, ВидыСубконто.Договоры, Договор);

		// Балансовый ресурс: одна сумма в рублях на дебет и кредит.
		Проводка.Сумма = Окр(СтрокаТоваров.СуммаВалюта * Курс / Кратность, 2);

		// Небалансовые ресурсы и измерения: у каждой стороны свои,
		// заполняем, только если у счёта установлен признак учёта.
		Если УчетКоличества Тогда
			Проводка.КоличествоДт = СтрокаТоваров.Количество;
		КонецЕсли;
		Если УчетВалюты Тогда
			Проводка.ВалютаКт        = Валюта;
			Проводка.ВалютнаяСуммаКт = СтрокаТоваров.СуммаВалюта;
		КонецЕсли;

	КонецЦикла;

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

// Пишет значение субконто, если вид есть у счёта и тип значения подходит.
Процедура УстановитьСубконто(Субконто, Счет, ВидСубконто, Значение)

	Если Счет.ВидыСубконто.Найти(ВидСубконто, "ВидСубконто") = Неопределено Тогда
		Возврат; // такого вида субконто у счёта нет
	КонецЕсли;

	Если Не ВидСубконто.ТипЗначения.СодержитТип(ТипЗнч(Значение)) Тогда
		Возврат; // значение не того типа
	КонецЕсли;

	Субконто[ВидСубконто] = Значение;

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

Разбор ключевых строк

  • Проводки.Записывать = Истина — после обработчика платформа запишет набор вместо прежних проводок документа.
  • Организация и Сумма — балансовые поля, одно значение на проводку: единая сумма по дебету и кредиту держит баланс.
  • КоличествоДт, ВалютаКт, ВалютнаяСуммаКт — небалансовые поля, у каждой стороны свои. Признаки учёта читаются как свойства ссылки на счёт: СчетДт.Количественный.
  • Субконто[ВидСубконто] = Значение: ключом коллекции СубконтоДт или СубконтоКт служит ссылка на вид субконто. У предопределённых видов есть запись по имени: Проводка.СубконтоКт.Контрагенты = Контрагент; у добавленных пользователями — только ссылка.
  • УстановитьСубконто проверяет, что вид есть у счёта и тип значения подходит: код не зависит от настройки аналитики. В КА 2.5 у предопределённого счёта 41.01 видов субконто в конфигурации нет вовсе, а для таких случаев есть типовая процедура БухгалтерскийУчет.УстановитьСубконто.

Виртуальные таблицы: остатки, обороты, корреспонденция

Программно регистры бухгалтерии читают запросом на сервере. Физическая таблица РегистрБухгалтерии.Хозрасчетный — это сами проводки, остатки и обороты дают виртуальные таблицы.

ТаблицаПараметрыЧто даёт
ОстаткиПериод, УсловиеСчета, Субконто, УсловиеСальдо на момент: СуммаОстаток, СуммаОстатокДт, СуммаОстатокКт
ОборотыНачалоПериода, КонецПериода, Периодичность, УсловиеСчета, Субконто, Условие, УсловиеКорСчета, КорСубконтоОбороты счёта с полями КорСчет, КорСубконто1…
ОстаткиИОборотыНачалоПериода, КонецПериода, Периодичность, МетодДополнения, УсловиеСчета, Субконто, УсловиеСальдо на начало и конец и обороты — данные для ОСВ
ОборотыДтКтНачалоПериода, КонецПериода, Периодичность, УсловиеСчетаДт, СубконтоДт, УсловиеСчетаКт, СубконтоКт, УсловиеОбороты по парам счетов; только у регистра с корреспонденцией
ДвиженияССубконтоНачалоПериода, КонецПериода, Условие, Порядок, ПервыеПроводки с субконто, развёрнутыми в поля

Что важно в параметрах:

  • Условие счёта пишите через В ИЕРАРХИИ, чтобы захватить субсчета. В ОборотыДтКт поля условий — СчетДт и СчетКт.
  • Субконто — массив видов: первый попадает в Субконто1, второй — в Субконто2. Без массива Субконто1 — первое субконто каждого счёта, и в одной колонке смешаются контрагенты, склады и статьи затрат.
  • Условие — отбор по измерениям и по Субконто1…СубконтоN. Ставьте его здесь, а не в ГДЕ; почему — в статье об остатках в запросе.

Остаток по дебету и кредиту платформа раскладывает по виду счёта: на активном счёте он всегда дебетовый, на пассивном — кредитовый, на активно-пассивном — по знаку сальдо.

ОСВ по счёту в разрезе субконто

Функция для серверного общего модуля: остатки и обороты по счёту с субсчетами в разрезе контрагентов и договоров, как в ОСВ по счёту.

// Общий модуль с флагом «Сервер»: на клиенте объекта Запрос нет.

// ОСВ по счёту с субсчетами в разрезе контрагентов и договоров.
// Счет — например, ПланыСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками (60).
Функция ОСВПоСчетуССубконто(Организация, Счет, НачалоПериода, КонецПериода) Экспорт

	// Порядок видов в массиве задаёт поля Субконто1 и Субконто2.
	ВидыСубконто = Новый Массив;
	ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты);
	ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры);

	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ОСВ.Счет КАК Счет,
	|	ОСВ.Субконто1 КАК Контрагент,
	|	ОСВ.Субконто2 КАК Договор,
	|	ОСВ.СуммаНачальныйОстатокДт КАК НачальныйОстатокДт,
	|	ОСВ.СуммаНачальныйОстатокКт КАК НачальныйОстатокКт,
	|	ОСВ.СуммаОборотДт КАК ОборотДт,
	|	ОСВ.СуммаОборотКт КАК ОборотКт,
	|	ОСВ.СуммаКонечныйОстатокДт КАК КонечныйОстатокДт,
	|	ОСВ.СуммаКонечныйОстатокКт КАК КонечныйОстатокКт
	|ИЗ
	|	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
	|			&НачалоПериода,
	|			&КонецПериода,
	|			,
	|			,
	|			Счет В ИЕРАРХИИ (&Счет),
	|			&ВидыСубконто,
	|			Организация = &Организация) КАК ОСВ
	|
	|УПОРЯДОЧИТЬ ПО
	|	ОСВ.Счет.Код";

	Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НачалоПериода));
	Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода));
	Запрос.УстановитьПараметр("Счет", Счет);
	Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
	Запрос.УстановитьПараметр("Организация", Организация);

	Возврат Запрос.Выполнить().Выгрузить();

КонецФункции

Счёт передаётся группой, например 60, а В ИЕРАРХИИ подтягивает 60.01, 60.21 и остальные субсчета. Строки получаются на уровне субсчетов. Итог по самому 60 — сумма строк или ИТОГИ … ПО Счет ИЕРАРХИЯ.

Анализ субконто: остатки контрагента по всем счетам

// Анализ субконто: остатки одного контрагента на всех счетах на дату.
// &ВидыСубконто — массив: ВидыСубконтоХозрасчетные.Контрагенты, ВидыСубконтоХозрасчетные.Договоры.
// &Граница — Новый Граница(КонецДня(Дата), ВидГраницы.Включая).
ВЫБРАТЬ
	Остатки.Счет КАК Счет,
	Остатки.Субконто2 КАК Договор,
	Остатки.Валюта КАК Валюта,
	Остатки.СуммаОстатокДт КАК ОстатокДт,
	Остатки.СуммаОстатокКт КАК ОстатокКт,
	Остатки.ВалютнаяСуммаОстаток КАК ВалютнаяСумма
ИЗ
	РегистрБухгалтерии.Хозрасчетный.Остатки(
			&Граница,
			НЕ Счет.Забалансовый,
			&ВидыСубконто,
			Организация = &Организация
				И Субконто1 = &Контрагент) КАК Остатки

УПОРЯДОЧИТЬ ПО
	Остатки.Счет.Код

Условие Субконто1 = &Контрагент работает, потому что массив видов закрепил контрагента за первым полем на любом счёте. У счетов без вида «Контрагенты» поле пустое (NULL), и условие их отсекает.

Корреспонденция счетов: ОборотыДтКт

// Корреспонденция: оплаты поставщикам за период, Дт 60 Кт 51/52, по контрагентам.
// &ВидыСубконтоДт — массив из одного вида: ВидыСубконтоХозрасчетные.Контрагенты.
// &СчетаДенег — массив: ПланыСчетов.Хозрасчетный.РасчетныеСчета, ПланыСчетов.Хозрасчетный.ВалютныеСчета.
// &НачалоПериода = НачалоДня(Дата1), &КонецПериода = КонецДня(Дата2).
ВЫБРАТЬ
	ДтКт.СчетДт КАК СчетДт,
	ДтКт.СубконтоДт1 КАК Контрагент,
	ДтКт.СчетКт КАК СчетКт,
	СУММА(ДтКт.СуммаОборот) КАК Сумма,
	СУММА(ДтКт.ВалютнаяСуммаОборотДт) КАК ВалютнаяСумма
ИЗ
	РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
			&НачалоПериода,
			&КонецПериода,
			,
			СчетДт В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками)),
			&ВидыСубконтоДт,
			СчетКт В ИЕРАРХИИ (&СчетаДенег),
			,
			Организация = &Организация) КАК ДтКт

СГРУППИРОВАТЬ ПО
	ДтКт.СчетДт,
	ДтКт.СубконтоДт1,
	ДтКт.СчетКт

УПОРЯДОЧИТЬ ПО
	Сумма УБЫВ

У балансового ресурса в ОборотыДтКт одно поле — СуммаОборот, у небалансовых пара: ВалютнаяСуммаОборотДт и ВалютнаяСуммаОборотКт. Субконто кредита здесь не нужны, поэтому параметр СубконтоКт пустой.

Проводки документа с субконто

// Тот же серверный общий модуль.

// Проводки документа в читаемом виде: счета, субконто, суммы.
// Документ — ссылка на любой документ-регистратор регистра Хозрасчетный.
Функция ПроводкиДокумента(Документ) Экспорт

	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Проводки.НомерСтроки КАК НомерСтроки,
	|	Проводки.СчетДт КАК СчетДт,
	|	Проводки.СубконтоДт1 КАК СубконтоДт1,
	|	Проводки.СубконтоДт2 КАК СубконтоДт2,
	|	Проводки.СубконтоДт3 КАК СубконтоДт3,
	|	Проводки.СчетКт КАК СчетКт,
	|	Проводки.СубконтоКт1 КАК СубконтоКт1,
	|	Проводки.СубконтоКт2 КАК СубконтоКт2,
	|	Проводки.СубконтоКт3 КАК СубконтоКт3,
	|	Проводки.Сумма КАК Сумма,
	|	Проводки.КоличествоДт КАК КоличествоДт,
	|	Проводки.ВалютаКт КАК ВалютаКт,
	|	Проводки.ВалютнаяСуммаКт КАК ВалютнаяСуммаКт,
	|	Проводки.Содержание КАК Содержание
	|ИЗ
	|	РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(, , Регистратор = &Документ, , ) КАК Проводки
	|
	|УПОРЯДОЧИТЬ ПО
	|	НомерСтроки";

	Запрос.УстановитьПараметр("Документ", Документ);

	Возврат Запрос.Выполнить().Выгрузить();

КонецФункции

ДвиженияССубконто разворачивает коллекции субконто в поля ВидСубконтоДт1, СубконтоДт1 и далее. Если у счёта два субконто, третье поле — NULL. Запросы из статьи удобно отлаживать в бесплатной консоли запросов.

Хозрасчетный в КА 2.5: имена объектов и отражение в учёте

В КА 2.5 регистр бухгалтерии Хозрасчетный и связанные объекты выглядят так (имена сверены по выгрузке конфигурации):

ОбъектИмя в метаданныхВ интерфейсе
План счетовПланыСчетов.ХозрасчетныйПлан счетов бухгалтерского учета
ПВХ видов субконтоПланыВидовХарактеристик.ВидыСубконтоХозрасчетныеВиды субконто хозрасчетные
Регистр бухгалтерииРегистрыБухгалтерии.ХозрасчетныйЖурнал проводок (регламентированный учет)
Ручные проводкиДокументы.ОперацияБухОперация (регламентированный учет)
Формирование проводокОбработка ОтражениеДокументовВРеглУчетеОтражение документов в регламентированном учете

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

Главное отличие от примера выше: документы оперативного учёта КА при проведении проводок не формируют. Документ попадает в регистр сведений ОтражениеДокументовВРеглУчете со статусом «К отражению», а проводки с ним в роли регистратора создаёт рабочее место «Отражение документов в регламентированном учете» — по кнопке или регламентным заданием. Из кода то же делает функция РеглУчетПроведениеСервер.ОтразитьДокументыВРеглУчете(МассивДокументов): она возвращает документы, которые отразить не удалось.

При перепроведении проводки очищаются до следующего отражения, и ПроводкиДокумента до него вернёт пустую таблицу. Проводки типового документа правят настройкой счетов учёта или документом «Операция (регламентированный учет)», а не кодом в ОбработкаПроведения. Результат смотрят отчётами «Оборотно-сальдовая ведомость по счету», «Анализ субконто» и «Отчет по проводкам» в разделе «Регламентированный учет».

Типичные ошибки

  • Ресурс без суффикса Дт/Кт. Проводка.Количество = 5 в регистре с корреспонденцией падает с ошибкой «Поле объекта не обнаружено (Количество)»: у небалансового ресурса есть только КоличествоДт и КоличествоКт. В запросе к физической таблице то же поле даст «Поле не найдено».
  • Группа счетов через «=». Условие Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками) ищет проводки на самом 60, а они на 60.01, 60.21 и других субсчетах. Ошибки нет, результат пустой.
  • Реквизиты субконто через точку. Субконто1 — поле составного типа, и Субконто1.ИНН добавляет в запрос соединения с таблицами многих типов ПВХ, а у ВидыСубконтоХозрасчетные в КА 2.5 их больше сотни. Сначала приведите тип — см. ВЫРАЗИТЬ в запросе.
  • Жёсткий набор субконто в коде. Аналитику счёта поменяли, а код заполняет старые виды: новые остаются пустыми, в ОСВ появляются строки без аналитики.
  • Проводки в типовом документе КА через расширение. Строки Движения.Хозрасчетный, дописанные в ОбработкаПроведения, не переживут перепроведение и отражение: механизм КА формирует проводки сам.

Частые вопросы

Чем регистр бухгалтерии отличается от регистра накопления?

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

Можно ли записать проводки без документа?

Нет. Набор можно создать кодом через РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(), но в отборе всё равно указывается регистратор. Ручные проводки вводят документом-операцией: в КА 2.5 это «Операция (регламентированный учет)».

Как обратиться к виду субконто, который добавил пользователь?

Только по ссылке: имена есть лишь у предопределённых видов. Храните ссылку на элемент ПВХ в константе или настройке и передавайте её в СубконтоДт[…] и в массив параметра Субконто. Тип значения нового вида должен входить в составной тип ПВХ, иначе нужна доработка конфигурации.

Почему по субконто есть обороты, но нет остатков?

На счёте у этого вида субконто стоит флаг «Только обороты»: в его разрезе платформа хранит только обороты. В КА 2.5 так настроены, например, статьи затрат на счёте 41.ДР. Нужен остаток по такой аналитике — меняйте настройку счёта, а не запрос.

Когда проще заказать

Проводки своего документа, нестандартный отчёт по счетам и субконто или разбор отражения в КА проще отдать программисту, который работал с планом счетов. Посмотрите услуги по доработке 1С или разместите задачу — оценка бесплатная, ответ в течение рабочего дня.

По теме

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.


1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.