Субконто в проводках 1С 8.3: от настройки счёта до заполнения в документе и в коде
Содержание
Установить значение субконто в 1С можно тремя способами. Вручную — в поле «Субконто» рядом со счётом в документе или в ручной операции. Через корректировку движений уже проведённого документа (кнопка ДтКт). Программно — свойством СубконтоДт / СубконтоКт записи регистра бухгалтерии. Во всех трёх случаях поле появится, только если вид субконто задан у самого счёта в плане счетов.
Отсюда простое правило диагностики. Нет поля под субконто — смотрите счёт. Поле есть, но значение не выбирается — смотрите тип значения вида субконто. Ниже разобраны все уровни на примере 1С:Бухгалтерии предприятия 3.0, а программная часть подходит для любой конфигурации на платформе 8.3.
Что такое субконто и где оно хранится
Субконто — это разрез аналитики на счёте. На счёте 60.01 разрезы такие: контрагент, договор, документ расчётов. На счёте 41.01 — номенклатура и склад. Сумма в проводке одна, а остаток потом можно получить по любому из этих разрезов.
В метаданных это устроено в три слоя:
- 📘 План видов характеристик (в БП —
ВидыСубконтоХозрасчетные) хранит список видов: «Контрагенты», «Номенклатура», «Склады», «Статьи затрат» и другие. У каждого вида свой тип значения. - 📗 План счетов
(
Хозрасчетный) в табличной частиВидыСубконтоперечисляет, какие виды и в каком порядке ведутся на конкретном счёте. - 📙 Регистр бухгалтерии хранит в каждой проводке до трёх пар «вид — значение» на дебет и столько же на кредит.
Сколько субконто может быть на счёте, задаёт свойство плана счетов «Максимальное количество субконто». В БП 3.0 это 3. Четвёртый разрез на один счёт без доработки конфигурации не добавить.
У каждой строки вида субконто на счёте есть флажки учёта:
| Флажок | Что даёт |
|---|---|
| Суммовой | Остатки и обороты по сумме в разрезе этого субконто |
| Количественный | Учёт количества по этому разрезу (нужен количественный учёт на самом счёте) |
| Валютный | Учёт валютной суммы по разрезу (нужен валютный учёт на счёте) |
| Только обороты | По разрезу видны обороты, остатков нет |
«Только обороты» часто путают с ошибкой. Например, если на 90.01 разрез ведётся только по оборотам, остаток по нему в ОСВ не появится, и это нормально.
Виды субконто на счёте: проверка и настройка
Перед тем как что-то заполнять, откройте счёт и убедитесь, что нужный разрез на нём есть.
- Откройте
Главное → План счетов. - Найдите счёт по коду и откройте карточку.
- Посмотрите табличную часть «Субконто». Порядок строк — это номера Субконто1, Субконто2, Субконто3.
На предопределённом счёте типовой конфигурации список видов поменять нельзя: строки защищены. Часть разрезов в БП 3.0 включается не в карточке счёта, а в настройке плана счетов. Например, разрез «Склады» на счетах 10 и 41 или разрез «Документы расчётов» на 60 и 62 появляются после включения соответствующих опций учёта. В свежих релизах они собраны в форме «Настройка плана счетов», в более старых — в разделе Администрирование → Параметры учета.
Включённый разрез не заполнится задним числом сам. Старые проводки останутся с пустым значением. Чтобы аналитика появилась в прошлых периодах, документы нужно перепровести.
На собственном (не предопределённом) субсчёте виды субконто добавляются прямо в карточке. Это обычный способ завести, например, 76.09.1 с разрезом по контрагентам и договорам, когда типовых счетов не хватает.
Как установить значение субконто в документах и ручных операциях
В ручной операции
- Откройте
Операции → Бухгалтерский учет → Операции, введенные вручную. - Создайте операцию и добавьте строку.
- Выберите «Счёт Дт». Справа от него сразу появятся поля под субконто дебета, по числу видов на счёте.
- Заполните каждое поле. Подсказка в пустом поле показывает вид субконто: «Контрагенты», «Договоры» и так далее.
- То же сделайте для «Счёт Кт», затем укажите сумму и запишите операцию.
Если сначала выбрать счёт 60.01, а потом заменить его на 26, поля перестроятся: контрагент и договор пропадут, появятся «Подразделения» и «Статьи затрат». Значения, не подходящие под новый счёт, очищаются.
В типовых документах
В обычных документах субконто чаще всего заполняется косвенно. Вы выбираете контрагента и договор в шапке, а документ сам подставляет их в проводку по счёту расчётов.
Явные поля субконто встречаются там, где счёт затрат выбирает пользователь:
- 🧾 «Поступление (акт, накладная, УПД)» с услугами — в табличной части рядом со «Счётом затрат» есть колонки «Субконто 1», «Субконто 2», «Субконто 3».
- 🏦 «Списание с расчётного счёта» с видом операции «Прочее списание» — после выбора счёта дебета появляются поля аналитики.
- 📦 «Требование-накладная» — счёт затрат с разрезами по подразделению и статье затрат.
Правка уже проведённого документа
Если документ провёлся, а субконто встало не то, правильнее исправить сам документ и перепровести. Когда это невозможно, движения можно отредактировать вручную:
- Откройте документ и нажмите кнопку
ДтКт(«Показать проводки и другие движения документа»). - Включите флажок «Ручная корректировка (разрешает редактирование движений документа)».
- Исправьте значение в нужной колонке субконто и нажмите «Записать».
После ручной корректировки документ больше не формирует проводки сам. Если вы потом поменяете сумму или контрагента в документе, движения останутся старыми. Снимите флажок, чтобы вернуть автоматическое проведение, и тогда ручные правки пропадут.
Программная установка значения субконто
В коде значения задаются через свойства записи регистра бухгалтерии СубконтоДт и СубконтоКт. Это коллекция «вид → значение», похожая на соответствие. Ключ — элемент плана видов характеристик, значение — ссылка или примитив.
Запись проводки в обработке проведения
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.Хозрасчетный.Записывать = Истина;
Проводка = Движения.Хозрасчетный.Добавить();
Проводка.Период = Дата;
Проводка.Организация = Организация;
Проводка.СчетДт = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;
Проводка.СчетКт = ПланыСчетов.Хозрасчетный.РасчетыСПоставщиками;
Проводка.Сумма = СуммаДокумента;
Проводка.Содержание = "Поступление товаров";
Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = Номенклатура;
Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Контрагент;
Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры] = ДоговорКонтрагента;
КонецПроцедуры
Вместо присваивания через индекс можно писать Проводка.СубконтоКт.Вставить(ВидСубконто, Значение). Результат тот же.
Номер субконто в коде не нужен. Платформа сама разложит значения по позициям 1–3 согласно порядку видов на счёте. Поэтому счёт нужно присвоить до того, как вы начнёте заполнять субконто, и не менять его после.
Процедура БСП-бухгалтерии в типовой БП
В Бухгалтерии предприятия есть готовая обёртка:
БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт, "Номенклатура", Номенклатура);
БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт, "Контрагенты", Контрагент);
Третий параметр — имя предопределённого вида субконто строкой или его номер на счёте. Главное преимущество обёртки: она проверяет, есть ли такой вид у счёта, и молча пропускает запись, если его нет. Это удобно, когда счёт берётся из настроек и заранее неизвестно, какие на нём разрезы.
Своя проверка для конфигураций без обёртки
Если вы пишете под другую конфигурацию или в расширении, ту же логику легко повторить:
Процедура ЗаполнитьСубконтоЕслиЕсть(Счет, Субконто, ВидСубконто, Значение)
Если Счет.ВидыСубконто.Найти(ВидСубконто, "ВидСубконто") = Неопределено Тогда
Возврат;
КонецЕсли;
Если Не ВидСубконто.ТипЗначения.СодержитТип(ТипЗнч(Значение)) Тогда
ВызватьИсключение СтрШаблон("Значение типа %1 не подходит для субконто «%2»",
Строка(ТипЗнч(Значение)), Строка(ВидСубконто));
КонецЕсли;
Субконто.Вставить(ВидСубконто, Значение);
КонецПроцедуры
Обращение Счет.ВидыСубконто читает объект счёта из базы. В цикле на тысячи проводок лучше один раз получить нужные данные запросом к табличной части ВидыСубконто плана счетов и держать их в соответствии.
Заполняйте субконто в той же записи, где задали счёт, сразу после него. Отдельный проход по готовому набору движений легко пропускает строки, у которых счёт поменяли позже.
Составной тип субконто и несколько значений в одном разрезе
Составной тип
Тип значения вида субконто бывает составным. Самый частый пример — «Документы расчётов с контрагентом»: туда попадают поступления, реализации, платёжки, корректировки и ещё десятки типов документов.
Как это выглядит на практике:
- 🖱 В форме: при выборе значения 1С сначала предлагает выбрать тип данных, а потом уже сам документ из списка этого типа.
- 💻 В коде: тип не указывают, достаточно передать ссылку. Но она обязана входить в составной тип вида. Проверка —
ВидСубконто.ТипЗначения.СодержитТип(ТипЗнч(Значение)), как в примере выше. - 🔍 В запросе: поле
Субконто1имеет тип всех видов сразу. Для отбора по конкретному типу используйтеТИПЗНАЧЕНИЯ(Субконто1) = ТИП(Документ.ПоступлениеТоваровУслуг)илиВЫРАЗИТЬ.
Новый тип документа в составной тип добавляется в конфигураторе, в свойстве «Тип значения характеристик» плана видов характеристик и в типе конкретного вида. Для типовой конфигурации это изменение основной конфигурации: оно снимает её с полной поддержки и усложняет обновления.
Несколько значений по одному разрезу
Одно поле субконто в одной проводке — это ровно одно значение. Распределить сумму между двумя подразделениями внутри одной строки нельзя.
Варианты решения:
| Задача | Как сделать | Чем рискуете |
|---|---|---|
| Затраты на два подразделения | Две проводки, сумма делится вручную | Ошибка округления при делении |
| Распределение по базе | Распределение косвенных затрат при закрытии месяца | Настройку базы распределения придётся поддерживать |
| Нужен ещё один разрез | Отдельный субсчёт со своими видами субконто | Перенос остатков и правка отчётов |
Если на счёте уже три вида, а нужен четвёртый, частый приём — завести субсчёт и перенести туда учёт с начала года. Это дешевле, чем менять максимальное количество субконто в плане счетов.
Ошибки при установке субконто и как их найти
Как быстро найти проводки с пустым субконто
Отчёт «Оборотно-сальдовая ведомость по счёту» с группировкой по нужному субконто покажет строку с пустым значением. Двойной клик по сумме откроет отчёт по проводкам, оттуда — сами документы.
Для разработчика быстрее запрос:
ВЫБРАТЬ
Хоз.Регистратор КАК Документ,
Хоз.СчетДт,
Хоз.Сумма
ИЗ
РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&НачалоПериода, &КонецПериода, СчетДт = &Счет) КАК Хоз
ГДЕ
Хоз.СубконтоДт1 ЕСТЬ NULL
ИЛИ Хоз.СубконтоДт1 = &ПустоеЗначение
В параметр &ПустоеЗначение передайте пустую ссылку того типа, который хранится в разрезе, например Справочники.Контрагенты.ПустаяСсылка(). Запрос выполняется в консоли запросов или во внешней обработке.
Массовое перепроведение документов закрытого периода сдвигает расчёт себестоимости и закрытие месяца. Делайте его на копии базы или после согласования с главным бухгалтером, затем повторите закрытие месяца.
Частые вопросы
Можно ли поменять порядок субконто на счёте?
Почему на счёте 76 разная аналитика у разных субсчетов?
Где хранится номер субконто в таблице регистра?
Субконто1–Субконто3 и ВидСубконто1–ВидСубконто3.