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

· 9 мин

Содержание

Установить значение субконто в 1С можно тремя способами. Вручную — в поле «Субконто» рядом со счётом в документе или в ручной операции. Через корректировку движений уже проведённого документа (кнопка ДтКт). Программно — свойством СубконтоДт / СубконтоКт записи регистра бухгалтерии. Во всех трёх случаях поле появится, только если вид субконто задан у самого счёта в плане счетов.

Отсюда простое правило диагностики. Нет поля под субконто — смотрите счёт. Поле есть, но значение не выбирается — смотрите тип значения вида субконто. Ниже разобраны все уровни на примере 1С:Бухгалтерии предприятия 3.0, а программная часть подходит для любой конфигурации на платформе 8.3.

Что такое субконто и где оно хранится

Субконто — это разрез аналитики на счёте. На счёте 60.01 разрезы такие: контрагент, договор, документ расчётов. На счёте 41.01 — номенклатура и склад. Сумма в проводке одна, а остаток потом можно получить по любому из этих разрезов.

В метаданных это устроено в три слоя:

  • 📘 План видов характеристик (в БП — ВидыСубконтоХозрасчетные) хранит список видов: «Контрагенты», «Номенклатура», «Склады», «Статьи затрат» и другие. У каждого вида свой тип значения.
  • 📗 План счетов (Хозрасчетный) в табличной части ВидыСубконто перечисляет, какие виды и в каком порядке ведутся на конкретном счёте.
  • 📙 Регистр бухгалтерии хранит в каждой проводке до трёх пар «вид — значение» на дебет и столько же на кредит.

Сколько субконто может быть на счёте, задаёт свойство плана счетов «Максимальное количество субконто». В БП 3.0 это 3. Четвёртый разрез на один счёт без доработки конфигурации не добавить.

У каждой строки вида субконто на счёте есть флажки учёта:

ФлажокЧто даёт
СуммовойОстатки и обороты по сумме в разрезе этого субконто
КоличественныйУчёт количества по этому разрезу (нужен количественный учёт на самом счёте)
ВалютныйУчёт валютной суммы по разрезу (нужен валютный учёт на счёте)
Только оборотыПо разрезу видны обороты, остатков нет

«Только обороты» часто путают с ошибкой. Например, если на 90.01 разрез ведётся только по оборотам, остаток по нему в ОСВ не появится, и это нормально.

Виды субконто на счёте: проверка и настройка

Перед тем как что-то заполнять, откройте счёт и убедитесь, что нужный разрез на нём есть.

  1. Откройте Главное → План счетов.
  2. Найдите счёт по коду и откройте карточку.
  3. Посмотрите табличную часть «Субконто». Порядок строк — это номера Субконто1, Субконто2, Субконто3.

На предопределённом счёте типовой конфигурации список видов поменять нельзя: строки защищены. Часть разрезов в БП 3.0 включается не в карточке счёта, а в настройке плана счетов. Например, разрез «Склады» на счетах 10 и 41 или разрез «Документы расчётов» на 60 и 62 появляются после включения соответствующих опций учёта. В свежих релизах они собраны в форме «Настройка плана счетов», в более старых — в разделе Администрирование → Параметры учета.

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

На собственном (не предопределённом) субсчёте виды субконто добавляются прямо в карточке. Это обычный способ завести, например, 76.09.1 с разрезом по контрагентам и договорам, когда типовых счетов не хватает.

Как установить значение субконто в документах и ручных операциях

В ручной операции

  1. Откройте Операции → Бухгалтерский учет → Операции, введенные вручную.
  2. Создайте операцию и добавьте строку.
  3. Выберите «Счёт Дт». Справа от него сразу появятся поля под субконто дебета, по числу видов на счёте.
  4. Заполните каждое поле. Подсказка в пустом поле показывает вид субконто: «Контрагенты», «Договоры» и так далее.
  5. То же сделайте для «Счёт Кт», затем укажите сумму и запишите операцию.

Если сначала выбрать счёт 60.01, а потом заменить его на 26, поля перестроятся: контрагент и договор пропадут, появятся «Подразделения» и «Статьи затрат». Значения, не подходящие под новый счёт, очищаются.

В типовых документах

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

Явные поля субконто встречаются там, где счёт затрат выбирает пользователь:

  • 🧾 «Поступление (акт, накладная, УПД)» с услугами — в табличной части рядом со «Счётом затрат» есть колонки «Субконто 1», «Субконто 2», «Субконто 3».
  • 🏦 «Списание с расчётного счёта» с видом операции «Прочее списание» — после выбора счёта дебета появляются поля аналитики.
  • 📦 «Требование-накладная» — счёт затрат с разрезами по подразделению и статье затрат.

Правка уже проведённого документа

Если документ провёлся, а субконто встало не то, правильнее исправить сам документ и перепровести. Когда это невозможно, движения можно отредактировать вручную:

  1. Откройте документ и нажмите кнопку ДтКт («Показать проводки и другие движения документа»).
  2. Включите флажок «Ручная корректировка (разрешает редактирование движений документа)».
  3. Исправьте значение в нужной колонке субконто и нажмите «Записать».

После ручной корректировки документ больше не формирует проводки сам. Если вы потом поменяете сумму или контрагента в документе, движения останутся старыми. Снимите флажок, чтобы вернуть автоматическое проведение, и тогда ручные правки пропадут.

Программная установка значения субконто

В коде значения задаются через свойства записи регистра бухгалтерии СубконтоДт и СубконтоКт. Это коллекция «вид → значение», похожая на соответствие. Ключ — элемент плана видов характеристик, значение — ссылка или примитив.

Запись проводки в обработке проведения

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

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

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

	Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = Номенклатура;
	Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты]  = Контрагент;
	Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры]     = ДоговорКонтрагента;

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

Вместо присваивания через индекс можно писать Проводка.СубконтоКт.Вставить(ВидСубконто, Значение). Результат тот же.

Номер субконто в коде не нужен. Платформа сама разложит значения по позициям 1–3 согласно порядку видов на счёте. Поэтому счёт нужно присвоить до того, как вы начнёте заполнять субконто, и не менять его после.

Процедура БСП-бухгалтерии в типовой БП

В Бухгалтерии предприятия есть готовая обёртка:

БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт, "Номенклатура", Номенклатура);
БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт, "Контрагенты", Контрагент);

Третий параметр — имя предопределённого вида субконто строкой или его номер на счёте. Главное преимущество обёртки: она проверяет, есть ли такой вид у счёта, и молча пропускает запись, если его нет. Это удобно, когда счёт берётся из настроек и заранее неизвестно, какие на нём разрезы.

Своя проверка для конфигураций без обёртки

Если вы пишете под другую конфигурацию или в расширении, ту же логику легко повторить:

Процедура ЗаполнитьСубконтоЕслиЕсть(Счет, Субконто, ВидСубконто, Значение)

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

	Если Не ВидСубконто.ТипЗначения.СодержитТип(ТипЗнч(Значение)) Тогда
		ВызватьИсключение СтрШаблон("Значение типа %1 не подходит для субконто «%2»",
			Строка(ТипЗнч(Значение)), Строка(ВидСубконто));
	КонецЕсли;

	Субконто.Вставить(ВидСубконто, Значение);

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

Обращение Счет.ВидыСубконто читает объект счёта из базы. В цикле на тысячи проводок лучше один раз получить нужные данные запросом к табличной части ВидыСубконто плана счетов и держать их в соответствии.

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

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

Составной тип

Тип значения вида субконто бывает составным. Самый частый пример — «Документы расчётов с контрагентом»: туда попадают поступления, реализации, платёжки, корректировки и ещё десятки типов документов.

Как это выглядит на практике:

  • 🖱 В форме: при выборе значения 1С сначала предлагает выбрать тип данных, а потом уже сам документ из списка этого типа.
  • 💻 В коде: тип не указывают, достаточно передать ссылку. Но она обязана входить в составной тип вида. Проверка — ВидСубконто.ТипЗначения.СодержитТип(ТипЗнч(Значение)), как в примере выше.
  • 🔍 В запросе: поле Субконто1 имеет тип всех видов сразу. Для отбора по конкретному типу используйте ТИПЗНАЧЕНИЯ(Субконто1) = ТИП(Документ.ПоступлениеТоваровУслуг) или ВЫРАЗИТЬ.

Новый тип документа в составной тип добавляется в конфигураторе, в свойстве «Тип значения характеристик» плана видов характеристик и в типе конкретного вида. Для типовой конфигурации это изменение основной конфигурации: оно снимает её с полной поддержки и усложняет обновления.

Несколько значений по одному разрезу

Одно поле субконто в одной проводке — это ровно одно значение. Распределить сумму между двумя подразделениями внутри одной строки нельзя.

Варианты решения:

ЗадачаКак сделатьЧем рискуете
Затраты на два подразделенияДве проводки, сумма делится вручнуюОшибка округления при делении
Распределение по базеРаспределение косвенных затрат при закрытии месяцаНастройку базы распределения придётся поддерживать
Нужен ещё один разрезОтдельный субсчёт со своими видами субконтоПеренос остатков и правка отчётов

Если на счёте уже три вида, а нужен четвёртый, частый приём — завести субсчёт и перенести туда учёт с начала года. Это дешевле, чем менять максимальное количество субконто в плане счетов.

Ошибки при установке субконто и как их найти

Диагностика: выберите симптом

Как быстро найти проводки с пустым субконто

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

Для разработчика быстрее запрос:

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

В параметр &ПустоеЗначение передайте пустую ссылку того типа, который хранится в разрезе, например Справочники.Контрагенты.ПустаяСсылка(). Запрос выполняется в консоли запросов или во внешней обработке.

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

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

Можно ли поменять порядок субконто на счёте?
На собственном субсчёте — да, строки в табличной части «Субконто» можно передвинуть. Учтите, что в уже записанных проводках значения хранятся по позициям, поэтому после смены порядка старые данные нужно перепровести.
Почему на счёте 76 разная аналитика у разных субсчетов?
Виды субконто задаются для каждого субсчёта отдельно. У 76.05 и 76.09 разрезы могут не совпадать, и при выборе субсчёта набор полей меняется.
Где хранится номер субконто в таблице регистра?
В физической таблице регистра бухгалтерии значения лежат в полях с номерами позиций, а вид определяется по счёту. Поэтому в запросах к виртуальным таблицам используют поля Субконто1–Субконто3 и ВидСубконто1–ВидСубконто3.
Можно ли указать в субконто строку или число?
Да, если вид субконто имеет примитивный тип. В типовой БП почти все виды ссылочные, поэтому произвольный текст туда не записать без своего вида субконто.
Изменится ли субконто в проводках, если переименовать контрагента?
Нет. В проводке хранится ссылка на элемент справочника, а не его наименование. Новое имя сразу отобразится во всех отчётах.