Работа с субконто в 1С:Предприятие — одна из самых востребованных задач среди бухгалтеров и программистов. Эти аналитические разрезы позволяют детализировать учет по контрагентам, договорам, номенклатуре и другим объектам, но их извлечение часто вызывает сложности. В отличие от стандартных реквизитов, значения субконто хранятся в специальных регистрах и требуют особого подхода для получения.
В этой статье мы разберем 5 практических способов получить значения субконто — от простых методов через интерфейс 1С до программных решений с использованием запросов и API. Особое внимание уделим типичным ошибкам, которые приводят к пустым результатам или искаженным данным. Все примеры актуальны для 1С:Бухгалтерия 8.3 (редакции 3.0) и 1С:ERP, но majority методов применимы и к другим конфигурациям на платформе 1С 8.x.
Если вы никогда не работали с субконто или только начинаете осваивать аналитический учет — начните с первых двух разделов. Опытным пользователям и разработчикам будут полезны разделы про запросы и программное извлечение через встроенный язык.
1. Что такое субконто и где оно хранится в 1С
Субконто (от лат. subconto — "подсчет") — это объекты аналитического учета, которые привязаны к счетам бухгалтерского плана счетов. Они позволяют детализировать обороты по:
- 📊 Контрагентам (кто именно должен или кому должны)
- 📄 Договорам (по какому документу произошла операция)
- 📦 Номенклатуре (какой товар/услуга фигурирует)
- 🏢 Подразделениям (какое структурное подразделение ответственно)
В 1С:Предприятие 8.3 субконто хранятся в регистрах бухгалтерии — специальных виртуальных таблицах, которые формируются на основе проводок. Главная особенность: субконто не является самостоятельным объектом метаданных (в отличие от справочников или документов), поэтому его нельзя получить напрямую через стандартные отчеты типа "Справочники" или "Документы".
Чтобы понять, где именно искать субконто, откройте план счетов (Главное → План счетов) и выберите любой счет с аналитикой (например, 60.01 или 10.01). В карточке счета вы увидите вкладку "Субконто", где указаны виды субконто (например, "Контрагенты" или "Номенклатура"). Именно эти виды определяют, какие объекты могут быть субконто для данного счета.
Если в плане счетов у счета не указаны виды субконто, значит этот счет не ведет аналитический учет, и получить по нему субконто невозможно.
2. Способ 1: Получение субконто через стандартные отчеты 1С
Самый простой способ — использовать встроенные отчеты 1С:Бухгалтерии. Он не требует знаний программирования и подходит для одноразового извлечения данных.
Инструкция:
- Перейдите в раздел
Отчеты → Стандартные отчеты → Оборотно-сальдовая ведомость по счету. - Укажите интересный вас счет (например,
62.01для расчетов с покупателями). - В настройках отчета (
Показать настройки) перейдите на вкладку "Группировки". - Добавьте группировку по субконто: выберите из списка нужный вид (например, "Контрагенты").
- Нажмите
Сформировать— в результате вы получите таблицу с детализацией по субконто.
Альтернативный отчет — "Анализ субконто" (Отчеты → Анализ субконто). Он позволяет:
- 🔍 Фильтровать данные по конкретному виду субконто (например, только по "Договорам")
- 📌 Получать остатки и обороты в разрезе субконто
- 📥 Экспортировать результаты в Excel для дальнейшей обработки
Ограничения стандартных отчетов
Стандартные отчеты не показывают субконто для проводок, которые были сделаны вручную (без документа-основания). Также они не позволяют получить субконто по нескольким видам одновременно (например, контрагент + договор в одном отчете).
Если вам нужно получить субконто для конкретной проводки, используйте отчет "Карточка счета" (Отчеты → Карточка счета). В настройках включите отображение колонки "Субконто" и укажите интересующий вас период.
3. Способ 2: Извлечение субконто через универсальный отчет
Универсальный отчет — это более гибкий инструмент, чем стандартные отчеты. Он позволяет строить произвольные выборки данных, включая субконто.
Пошаговая инструкция:
- Откройте
Отчеты → Универсальный отчет. - В поле "Источник данных" выберите "Регистр бухгалтерии".
- На вкладке "Поля" добавьте следующие колонки:
Счет(чтобы видеть, к какому счету относится субконто)Субконто1,Субконто2,Субконто3(в зависимости от количества видов субконто на счете)СуммаиВалюта(если нужны денежные показатели)
Счет = "60.01").Сформировать.Преимущества универсального отчета:
- 🔧 Гибкая настройка полей (можно добавить любые реквизиты регистра бухгалтерии)
- 📂 Возможность сохранять настройки отчета для повторного использования
- 📊 Экспорт в Excel с сохранением структуры данных
Если в универсальном отчете субконто отображаются как нечитаемые идентификаторы (например, {00000001-0000-0000-0000-000000000001}), это значит, что отчет выводит внутренние ссылки на объекты. Чтобы исправить:
- В настройках поля
Субконто1(или другого) нажмитеИзменить. - В колонке "Представление" выберите "Полное наименование" или "Наименование".
- Переформируйте отчет.
4. Способ 3: Получение субконто через запрос (для программистов)
Для опытных пользователей и разработчиков самый мощный инструмент — это язык запросов 1С. Он позволяет получать субконто с любой детализацией, объединять данные из нескольких регистров и применять сложные условия фильтрации.
Базовый запрос для получения субконто по счету:
ВЫБРАТЬ
РегистрБухгалтерииХоз.Счет КАК Счет,
РегистрБухгалтерииХоз.Субконто1 КАК Контрагент,
РегистрБухгалтерииХоз.Субконто2 КАК Договор,
РегистрБухгалтерииХоз.Сумма КАК Сумма
ИЗ
РегистрБухгалтерии.Хозрасчетный КАК РегистрБухгалтерииХоз
ГДЕ
РегистрБухгалтерииХоз.Счет = &Счет
И РегистрБухгалтерииХоз.Период МЕЖДУ &НачалоПериода И &КонецПериода
Где:
&Счет— параметр, в который нужно передать интересующий вас счет (например,"62.01")&НачалоПериодаи&КонецПериода— границы периода, за который нужно получить данныеХозрасчетный— имя регистра бухгалтерии (может отличаться в зависимости от конфигурации)
Чтобы выполнить этот запрос:
- Откройте
Файл → Новый → Запрос(или нажмитеCtrl+Shift+Q). - Вставьте текст запроса.
- Нажмите
Выполнитьи укажите значения параметров.
☑️ Подготовка к выполнению запроса
Для получения субконто по конкретной проводке используйте запрос с присоединением к регистру бухгалтерии:
ВЫБРАТЬ
Проводка.Счет КАК Счет,
Проводка.Субконто1 КАК Субконто1,
Проводка.Субконто1.Наименование КАК НаименованиеСубконто1,
Проводка.Сумма КАК Сумма
ИЗ
Document.ХозрасчетныйДокумент.Проводки КАК Проводка
ГДЕ
Проводка.Ссылка = &СсылкаНаДокумент
Где &СсылкаНаДокумент — ссылка на документ, проводки которого вас интересуют.
Запросы позволяют получать субконто с любой степенью детализации, включая данные из связанных справочников (например, ИНН контрагента или артикул номенклатуры).
5. Способ 4: Программное получение субконто через встроенный язык
Если вам нужно автоматизировать извлечение субконто (например, для интеграции с другими системами или создания кастомных отчетов), используйте встроенный язык 1С. Ниже приведены примеры кода для типичных задач.
Пример 1. Получение субконто для конкретной проводки:
// Получаем документ по ссылке
Документ = Документы.РеализацияТоваровУслуг.НайтиПоСсылке(СсылкаНаДокумент);
// Получаем проводки документа
Проводки = Документ.Проводки;
// Перебираем проводки и извлекаем субконто
Для Каждого Проводка Из Проводки Цикл
Если Проводка.Субконто1.Тип() <> Тип("Неопределено") Тогда
Сообщить("Субконто1: " + Проводка.Субконто1.Наименование);
КонецЕсли;
КонецЦикла;
Пример 2. Получение всех субконто по счету за период:
// Устанавливаем параметры отбора
Счет = ПланСчетов.Хозрасчетный.НайтиПоКоду("62.01");
НачалоПериода = '20260101';
КонецПериода = '20261231';
// Формируем запрос
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Проводка.Субконто1 КАК Субконто
|ИЗ
| РегистрБухгалтерии.Хозрасчетный КАК Проводка
|ГДЕ
| Проводка.Счет = &Счет
| И Проводка.Период МЕЖДУ &НачалоПериода И &КонецПериода";
Запрос.УстановитьПараметр("Счет", Счет);
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
// Выполняем запрос и обрабатываем результат
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить("Найдено субконто: " + Выборка.Субконто.Наименование);
КонецЦикла;
Обратите внимание на ключевые моменты:
- 🔹 Всегда проверяйте, что субконто не равно
Неопределено, прежде чем обращаться к его свойствам (например,.Наименование). - 🔹 Для работы с датами используйте формат
ГГГГММДД(например,'20260101'для 1 января 2026 года). - 🔹 Имена регистров бухгалтерии (
Хозрасчетный) могут отличаться в разных конфигурациях — уточняйте их в конфигураторе.
Чтобы узнать точные имена регистров бухгалтерии в вашей конфигурации, откройте конфигуратор (Файл → Конфигуратор) и посмотрите в ветке "Регистры бухгалтерии".
6. Способ 5: Экспорт субконто через OData (для интеграций)
Если вам нужно передать данные о субконто во внешнюю систему (например, в Power BI, Excel или другую ERP), удобнее всего использовать OData-сервис 1С. Этот метод требует настройки публикации базы на веб-сервере, но позволяет автоматизировать обмен данными.
Инструкция по настройке:
- Опубликуйте базу 1С на веб-сервере с поддержкой OData (инструкции зависят от версии платформы и веб-сервера).
- Сформируйте URL для запроса. Пример:
http://ваш-сервер/одата/standard.odata/Register_БухгалтерияХоз?$filter=Счет eq '62.01' and Период ge 2026-01-01T00:00:00Где:
standard.odata— стандартная публикация ODataRegister_БухгалтерияХоз— имя регистра бухгалтерии в OData$filter— параметры фильтрации (счет и период)
Пример ответа OData (фрагмент):
{
"value": [
{
"Счет": "62.01",
"Субконто1_Key": "00000001-0000-0000-0000-000000000001",
"Субконто1_Description": "ООО Ромашка",
"Сумма": 10000.00
},
{
"Счет": "62.01",
"Субконто1_Key": "00000002-0000-0000-0000-000000000002",
"Субконто1_Description": "ИП Иванов",
"Сумма": 5000.00
}
]
}
Преимущества OData:
- 🌐 Кросс-платформенный доступ (можно запрашивать данные из любого языка программирования)
- 🔄 Автоматическое обновление данных при изменении в 1С
- 📊 Поддержка пагинации и фильтрации на стороне сервера
Ограничения OData
Не все конфигурации 1С поддерживают OData "из коробки" — может потребоваться доработка. Также OData-запросы могут быть ресурсоемкими для больших баз данных.
7. Типичные ошибки при работе с субконто и как их избежать
Даже опытные пользователи 1С сталкиваются с проблемами при извлечении субконто. Вот самые распространенные ошибки и способы их решения:
| Ошибка | Причина | Решение |
|---|---|---|
Субконто отображается как {...} (идентификатор) |
Отчет выводит внутренние ссылки вместо наименований | В настройках поля субконто выберите "Представление → Полное наименование" |
| Пустой результат при выполнении запроса | Неверно указано имя регистра бухгалтерии или счет | Проверьте имя регистра в конфигураторе и корректность кода счета |
| Ошибка "Поле не найдено: Субконто3" | На счете нет третьего вида субконто | Убедитесь, что счет действительно имеет нужное количество видов субконто |
| Данные субконто не актуальны | Запрос выполняется без учета последних проводок | Проверьте период в запросе и обновляйте данные перед выполнением |
| Ошибка прав доступа при программном извлечении | У пользователя нет прав на чтение регистра бухгалтерии | Настройте права в конфигураторе или выполните код от имени администратора |
Еще одна частая проблема — несовпадение данных между отчетами и запросами. Это происходит потому, что:
- 📅 Стандартные отчеты могут использовать оперативные данные (непроводенные документы), а запросы — только проводки.
- 🔄 В некоторых конфигурациях есть дополнительные регистры, которые не отображаются в стандартных отчетах.
- 📊 Настройки округления или валютные курсы могут отличаться в разных отчетах.
Если данные в отчете и запросе не совпадают, добавьте в запрос вывод колонки Регистратор (ссылка на документ-основание). Это поможет идентифицировать источник расхождений.
8. Автоматизация работы с субконто: полезные обработки
Для упрощения работы с субконто можно использовать готовые обработки или создать свои. Вот несколько полезных решений:
1. Обработка "Выгрузка субконто в Excel"
Позволяет экспортировать субконто по выбранным счетам в удобном формате. Пример кода для создания такой обработки:
// Создаем Excel-документ
Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.Workbooks.Add();
Лист = Книга.Worksheets(1);
// Формируем заголовки
Лист.Cells(1, 1).Value = "Счет";
Лист.Cells(1, 2).Value = "Субконто1";
Лист.Cells(1, 3).Value = "Субконто2";
Лист.Cells(1, 4).Value = "Сумма";
// Получаем данные через запрос (аналогично примеру из раздела 4)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ..."; // Ваш запрос здесь
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
// Заполняем данными
Строка = 2;
Пока Выборка.Следующий() Цикл
Лист.Cells(Строка, 1).Value = Выборка.Счет;
Лист.Cells(Строка, 2).Value = Выборка.Субконто1.Наименование;
Лист.Cells(Строка, 3).Value = ?(Выборка.Субконто2 <> Неопределено, Выборка.Субконто2.Наименование, "");
Лист.Cells(Строка, 4).Value = Выборка.Сумма;
Строка = Строка + 1;
КонецЦикла;
// Сохраняем файл
ПутьКФайлу = "C:\Temp\Субконто.xlsx";
Книга.SaveAs(ПутьКФайлу);
Excel.Quit();
2. Обработка "Поиск проводок по субконто"
Позволяет найти все проводки, в которых фигурирует определенное субконто (например, конкретный контрагент). Пример интерфейса:
- 🔍 Поле для ввода наименования субконто
- 📅 Выбор периода
- 📊 Кнопка "Найти" с выводом результатов в таблицу
3. Обработка "Сверка субконто между периодами"
Полезна для выявления изменений в субконто (например, смена контрагента по договору). Сравнивает данные за два периода и выделяет расхождения.
Где скачать готовые обработки:
- 🌐 Официальный портал 1С:ИТС (раздел "Обработки")
- 📁 Инфостарт (сообщество разработчиков 1С)
- 📦 GitHub (поиск по запросу "1С субконто обработка")
Готовые обработки экономят время, но всегда проверяйте их код на наличие вредоносных вставок перед использованием в рабочей базе.
FAQ: Ответы на частые вопросы о субконто в 1С
Можно ли получить субконто для проводок, сделанных вручную (без документа)?
Да, но с оговорками. Ручные проводки хранятся в регистре бухгалтерии так же, как и проводки из документов, поэтому их можно извлечь через запрос или универсальный отчет. Однако в стандартных отчетах (например, "Анализ субконто") такие проводки могут не отображаться, если в настройках отчета установлен фильтр по документам.
Чтобы гарантированно получить субконто для ручных проводок, используйте запрос к регистру бухгалтерии с фильтром по Регистратор = ЗНАЧЕНИЕ(ДокументСсылка.ПустаяСсылка) (это условие выберет проводки без привязки к документу).
Как узнать, сколько видов субконто есть у счета?
Откройте план счетов (Главное → План счетов), найдите нужный счет и перейдите на вкладку "Субконто". Там будет указано количество видов субконто (например, "Субконто1: Контрагенты, Субконто2: Договоры").
Также можно использовать запрос:
ВЫБРАТЬ
ПланСчетов.Ссылка КАК Счет,
ПланСчетов.ВидыСубконто КАК ВидыСубконто
ИЗ
ПланСчетов.Хозрасчетный КАК ПланСчетов
ГДЕ
ПланСчетов.Ссылка = &Счет
Где &Счет — ссылка на интересующий вас счет.
Почему в отчете субконто дублируются?
Дублирование субконто в отчетах обычно связано с:
- Несколько проводок с одинаковым субконто (например, несколько платежей от одного контрагента).
- Настройками группировки — если в отчете не включена группировка по субконто, одна и та же запись может отображаться несколько раз.
- Ошибками в данных — реже, но бывает, что одно субконто привязано к нескольким записям справочника (например, дубли контрагентов).
Чтобы устранить дубли, добавьте в отчет группировку по субконто или используйте в запросе ключевое слово РАЗЛИЧНЫЕ:
ВЫБРАТЬ РАЗЛИЧНЫЕ Субконто1 ИЗ РегистрБухгалтерии.Хозрасчетный
Можно ли получить субконто для закрытого периода?
Да, субконто хранится в регистре бухгалтерии независимо от статуса периода (открыт или закрыт). Однако есть нюансы:
- Если период закрыт для редактирования, вы не сможете изменить субконто в проводках, но сможете их прочитать.
- В некоторых конфигурациях закрытие периода блокирует формирование новых проводок, но не доступ к существующим данным.
- Для закрытых периодов может быть ограничен доступ к некоторым отчетам (например, если в настройках учетной политики установлены ограничения).
Если вы получаете ошибку при попытке извлечь субконто из закрытого периода, проверьте:
- Права пользователя (возможно, нет прав на просмотр закрытых периодов).
- Настройки учетной политики (раздел "Закрытие периода").
Как связаны субконто и аналитика в 1С?
Субконто — это один из видов аналитики в 1С, но не единственный. Основные отличия:
| Характеристика | Субконто | Другие виды аналитики |
|---|---|---|
| Привязка | Привязано к счетам бухгалтерского учета | Может быть привязана к документам, справочникам, регистрам накопления |
| Хранение | Хранится в регистре бухгалтерии | Хранится в регистрах накопления, сведений или непосредственно в документах |
| Примеры | Контрагенты, договоры, номенклатура на счетах 60, 62, 10 | Склады в документе "Реализация", проекты в задачах |
| Отчеты | Оборотно-сальдовая ведомость, анализ субконто | Отчеты по регистрам накопления, аналитика в документах |
В новых конфигурациях 1С (например,