Значение субконто в 1С 8.3: где его взять бухгалтеру и как достать программисту
Содержание
Бухгалтеру проще всего получить значение субконто в 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 |
| Анализ субконто | Все счета, где встречается выбранное значение | Где «висит» конкретный контрагент или склад |
| Карточка субконто | Все проводки с этим значением по датам | Найти документ, который дал сумму |
| Анализ счёта | Корреспонденции счёта, можно с группировкой по субконто | С какими счетами связан оборот |
ОСВ по счёту с нужным уровнем аналитики
- Откройте
Отчеты → Стандартные отчеты → Оборотно-сальдовая ведомость по счету. - Укажите период, организацию и счёт, например
60.01. - Нажмите
Показать настройкии перейдите на вкладку «Группировка». - Отметьте нужные виды субконто: «Контрагенты» и «Договоры». Лишние снимите.
- Нажмите
Сформировать.
Чтобы увидеть только одно значение, на вкладке «Отбор» добавьте условие по виду субконто: «Контрагенты» равно «ООО Ромашка».
Анализ и карточка субконто
Анализ субконто отвечает на вопрос «на каких счетах есть этот контрагент». Выберите вид субконто, затем значение в отборе — отчёт покажет сальдо по всем счетам сразу: 60.01, 60.02, 62.01, 76.
Из любой суммы в ОСВ или анализе можно провалиться дальше. Дважды щёлкните по сумме — 1С предложит открыть карточку счёта или субконто. Так от строки сальдо вы за два щелчка дойдёте до документа.
Способ 2. Универсальный отчёт: любой срез аналитики
Стандартные отчёты привязаны к счёту. Если нужна выборка «остатки по складам на трёх счетах сразу» или нестандартный набор колонок — берите универсальный отчёт. Он находится там же, в группе стандартных отчётов раздела Отчеты.
Настройка:
- В поле типа источника выберите «Регистр бухгалтерии».
- В поле объекта — «Журнал проводок (бухгалтерский и налоговый учёт)», это и есть регистр
Хозрасчетный. - Таблица — «Остатки и обороты» (для сальдо) или «Движения с субконто» (для построчной выгрузки проводок).
- Задайте период и в настройках отбора — счёт.
- В группировки строк добавьте поля «Субконто 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 без доработки конфигурации.
Что подготовить:
- Опубликовать базу на веб-сервере (Apache или IIS) с включённой публикацией стандартного интерфейса OData.
- В режиме «Предприятие» открыть обработку настройки стандартного интерфейса OData (в БП она открывается из раздела
Администрирование, группа синхронизации данных) и отметить регистр бухгалтерии «Хозрасчетный», план счетов и нужные справочники: контрагенты, договоры, номенклатуру. - Завести отдельного пользователя с правами только на чтение этих объектов.
Регистр доступен по адресу вида:
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 не заполнено» и дозаполните в самом документе.