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

· 9 мин

Содержание

Бухгалтеру проще всего получить значение субконто в 1С через Отчеты → Стандартные отчеты → Анализ субконто или ОСВ по счёту с группировкой по нужному виду аналитики. Программист берёт его из виртуальной таблицы РегистрБухгалтерии.Хозрасчетный.Остатки или ДвиженияССубконто, а в коде — через коллекцию СубконтоДт[Вид] у проводки.

Типичная ситуация: аудитор просит расшифровать сальдо 60.01 по договорам, а в ОСВ видны только контрагенты. Или интегратору нужно выгрузить остатки по складам в BI-систему. Задача одна — достать аналитику счёта, — но путь зависит от того, кто вы и куда нужны данные. Ниже пять способов: от отчёта в два клика до OData.

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

Субконто — это аналитика счёта: контрагент, договор, номенклатура, склад, статья затрат. В 1С:Бухгалтерии 3.0 к одному счёту можно привязать до трёх видов субконто.

Данные лежат в трёх местах:

  • 📒 План счетов Хозрасчетный — у каждого счёта есть табличная часть ВидыСубконто: какие виды аналитики ведутся и в каком порядке (первое, второе, третье).
  • 🗂 План видов характеристик ВидыСубконтоХозрасчетные — справочник самих видов: Контрагенты, Договоры, Номенклатура, Склады, СтатьиЗатрат и другие.
  • 📊 Регистр бухгалтерии Хозрасчетный — проводки. У каждой записи есть СубконтоДт1…3 и СубконтоКт1…3, значения составного типа.

Порядок субконто важен. На счёте 60.01 первое субконто — контрагенты, второе — договоры, третье — документы расчётов. Значит, «Субконто1» на 60.01 и «Субконто1» на 41.01 — разные вещи. Это главная причина путаницы в запросах.

Посмотреть виды субконто счёта можно прямо в плане счетов: Главное → План счетов, откройте счёт двойным щелчком — внизу карточки таблица видов аналитики с флажками «Только обороты», «Суммовой», «Количественный».

Флажок «Только обороты» означает, что по этому виду остаток не хранится. Например, статьи движения денежных средств на счёте 51 есть в оборотах, но сальдо по ним не получить.

Способ 1. Значение субконто в стандартных отчётах

Все отчёты собраны в разделе Отчеты → Стандартные отчеты. Для субконто подходят четыре.

ОтчётЧто показываетКогда брать
Оборотно-сальдовая ведомость по счётуСальдо и обороты счёта в разрезе его субконтоРасшифровка сальдо 60, 62, 41, 10
Анализ субконтоВсе счета, где встречается выбранное значениеГде «висит» конкретный контрагент или склад
Карточка субконтоВсе проводки с этим значением по датамНайти документ, который дал сумму
Анализ счётаКорреспонденции счёта, можно с группировкой по субконтоС какими счетами связан оборот

ОСВ по счёту с нужным уровнем аналитики

  1. Откройте Отчеты → Стандартные отчеты → Оборотно-сальдовая ведомость по счету.
  2. Укажите период, организацию и счёт, например 60.01.
  3. Нажмите Показать настройки и перейдите на вкладку «Группировка».
  4. Отметьте нужные виды субконто: «Контрагенты» и «Договоры». Лишние снимите.
  5. Нажмите Сформировать.

Чтобы увидеть только одно значение, на вкладке «Отбор» добавьте условие по виду субконто: «Контрагенты» равно «ООО Ромашка».

Анализ и карточка субконто

Анализ субконто отвечает на вопрос «на каких счетах есть этот контрагент». Выберите вид субконто, затем значение в отборе — отчёт покажет сальдо по всем счетам сразу: 60.01, 60.02, 62.01, 76.

Из любой суммы в ОСВ или анализе можно провалиться дальше. Дважды щёлкните по сумме — 1С предложит открыть карточку счёта или субконто. Так от строки сальдо вы за два щелчка дойдёте до документа.

Способ 2. Универсальный отчёт: любой срез аналитики

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

Настройка:

  1. В поле типа источника выберите «Регистр бухгалтерии».
  2. В поле объекта — «Журнал проводок (бухгалтерский и налоговый учёт)», это и есть регистр Хозрасчетный.
  3. Таблица — «Остатки и обороты» (для сальдо) или «Движения с субконто» (для построчной выгрузки проводок).
  4. Задайте период и в настройках отбора — счёт.
  5. В группировки строк добавьте поля «Субконто 1», «Субконто 2» и, если нужно, реквизит через точку: «Субконто 1.ИНН».

В универсальном отчёте поля называются по номеру, а не по виду. Если отобрать сразу 60.01 и 41.01, в колонке «Субконто 1» окажутся вперемешку контрагенты и номенклатура. Для смешанных выборок лучше брать запрос с параметром видов субконто (способ 3).

Готовую настройку сохраните как вариант отчёта: Еще → Сохранить вариант отчета. В следующий раз выбор займёт секунды.

Способ 3. Запрос к регистру Хозрасчетный

Запрос нужен, когда отчёт пишется под заказ, данные идут в обработку или их надо проверить в консоли запросов. Для быстрой проверки подходит внешняя обработка «Консоль запросов»: откройте её через Файл → Открыть в режиме «Предприятие» (нужны права на открытие внешних обработок).

Остатки в разрезе субконто

Главный приём — параметр видов субконто в виртуальной таблице. Вы передаёте массив видов, и платформа раскладывает аналитику в поля Субконто1, Субконто2 в порядке вашего массива, а не в порядке плана счетов.

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

Параметры заполняются так:

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

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

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    Сообщить(Строка(Выборка.Контрагент) + " / " + Строка(Выборка.Договор)
        + ": " + Формат(Выборка.ДолгНаш, "ЧДЦ=2"));
КонецЦикла;

Если передать только один вид, например «Склады», в Субконто1 окажется склад даже на счёте, где склад стоит вторым субконто. Так можно собрать остатки по складам с 10.01 и 41.01 одним запросом.

Проводки с субконто построчно

Для расшифровки оборотов берите таблицу ДвиженияССубконто. В ней на каждую проводку одна строка, с полями СубконтоДт1…3, СубконтоКт1…3 и ВидСубконтоДт1…3.

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

Реквизиты значения субконто

Субконто имеет составной тип, поэтому реквизит через точку работает не всегда. Приведите тип явно:

ВЫРАЗИТЬ(Остатки.Субконто1 КАК Справочник.Контрагенты).ИНН КАК ИНН

Для текста в отчёте используйте ПРЕДСТАВЛЕНИЕ(Остатки.Субконто1) — так запрос не будет лишний раз обращаться к справочникам.

Способ 4. Субконто во встроенном языке

В коде субконто читают из двух мест: из проводки и из счёта.

Значение субконто конкретной проводки

У записи регистра бухгалтерии поля СубконтоДт и СубконтоКт — коллекции, где ключ — вид субконто. Обращение по номеру здесь не нужно.

НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ДокументСсылка);
НаборЗаписей.Прочитать();

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

Для Каждого Проводка Из НаборЗаписей Цикл
    Контрагент = Проводка.СубконтоКт[ВидКонтрагенты];
    Если ЗначениеЗаполнено(Контрагент) Тогда
        Сообщить(Строка(Проводка.СчетКт) + ": " + Строка(Контрагент));
    КонецЕсли;
КонецЦикла;

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

Какие субконто есть у счёта

Счет = ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.01");
Для Каждого СтрокаВида Из Счет.ВидыСубконто Цикл
    Пометка = ?(СтрокаВида.ТолькоОбороты, " (только обороты)", "");
    Сообщить(Формат(СтрокаВида.НомерСтроки, "ЧГ=0") + ". "
        + Строка(СтрокаВида.ВидСубконто) + Пометка);
КонецЦикла;

Этот фрагмент полезен перед построением запроса: сразу видно, под каким номером стоит нужный вид.

Не меняйте проводки закрытого периода кодом в рабочей базе. Запись набора перезаписывает движения документа целиком. Если нужно исправить субконто, правьте документ или делайте корректировку через «Операцию», а эксперименты — на копии базы.

Код пишите во внешней обработке или в расширении конфигурации. Запрос к регистру выполняйте на сервере: в клиентском модуле управляемой формы объекты регистров недоступны.

Способ 5. Выгрузка субконто через OData

OData нужен, когда данные забирает внешняя система: BI, сайт, сервис отчётности. 1С отдаёт их по REST в формате JSON без доработки конфигурации.

Что подготовить:

  1. Опубликовать базу на веб-сервере (Apache или IIS) с включённой публикацией стандартного интерфейса OData.
  2. В режиме «Предприятие» открыть обработку настройки стандартного интерфейса OData (в БП она открывается из раздела Администрирование, группа синхронизации данных) и отметить регистр бухгалтерии «Хозрасчетный», план счетов и нужные справочники: контрагенты, договоры, номенклатуру.
  3. Завести отдельного пользователя с правами только на чтение этих объектов.

Регистр доступен по адресу вида:

http://сервер/имя_базы/odata/standard.odata/AccountingRegister_Хозрасчетный/Balance?$format=json

Виртуальные таблицы те же, что в запросе: Balance — остатки, Turnovers — обороты, BalanceAndTurnovers, RecordsWithExtDimensions — движения с субконто. Субконто в ответе приходят в полях с корнем ExtDimension и номером. Рядом с каждым — поле типа значения, потому что тип составной.

В ответе вместо названия контрагента будет GUID. Чтобы получить наименование, запрашивайте справочник Catalog_Контрагенты отдельно и соединяйте по ключу у себя, либо используйте $expand, если связь в ответе опубликована.

Параметры виртуальной таблицы (период, условие по счёту) передаются в скобках после имени таблицы. Синтаксис чувствителен к формату даты и GUID, поэтому сначала проверьте запрос в браузере или Postman на одной организации.

Обработки и автоматизация

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

  • 📌 Сохранённые варианты отчётов. ОСВ по счёту с нужной группировкой сохраните как вариант и добавьте в избранное — дальше только смена периода.
  • 📨 Рассылка отчётов. Сохранённый вариант можно отправлять по расписанию на почту в Excel. Настраивается в Администрирование → Печатные формы, отчеты и обработки → Рассылки отчетов.
  • 🧩 Дополнительные отчёты. Свой отчёт на запросе из способа 3 подключается без изменения конфигурации: Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки.
  • 🔎 Консоль запросов. Для разовых сверок быстрее всего: вставили текст, задали параметры, выгрузили результат в табличный документ.

Сравнение способов по задачам:

СпособКто делаетСкоростьГибкостьПодходит для
Стандартные отчётыБухгалтерМинутыНизкаяРасшифровка сальдо, проверка
Универсальный отчётБухгалтер5–10 минутСредняяНестандартные срезы одного счёта
ЗапросПрограммистЧасВысокаяОтчёты под заказ, сверки
Встроенный языкПрограммистЧас и большеВысокаяОбработки, проверки документов
ODataИнтеграторДеньВысокаяBI, внешние сервисы

Ошибки при получении значения субконто

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

Ещё одна частая ловушка — пустое субконто в проводках «Операции», введённой вручную. В ОСВ такие суммы видны строкой без значения субконто. Найдите их через карточку счёта с отбором «Субконто 1 не заполнено» и дозаполните в самом документе.

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

Чем субконто отличается от измерения регистра?
Измерение есть у каждой записи регистра, а набор субконто зависит от счёта. На 60.01 это контрагенты и договоры, на 10.01 — номенклатура и склады.
Можно ли добавить к счёту четвёртое субконто?
В типовой БП 3.0 нет: максимум три вида задан в конфигурации. Дополнительную аналитику обычно ведут через подсчета или реквизиты документов.
Почему в запросе Субконто1 возвращает GUID, а не название?
Вы видите ссылку. Для текста выберите ПРЕДСТАВЛЕНИЕ(Субконто1) или приведите тип через ВЫРАЗИТЬ и возьмите Наименование.
Как выгрузить расшифровку субконто в Excel?
Сформируйте ОСВ по счёту или универсальный отчёт и сохраните его кнопкой сохранения в форме отчёта, выбрав формат «Лист Excel».
Влияет ли порядок видов в массиве на суммы?
На суммы нет. Он меняет только то, какой вид попадает в поле Субконто1, Субконто2 и Субконто3.