← Назад к вопросам

Когда появляется виртуальная таблица субконто для регистра бухгалтерии?

2.2 Middle🔥 131 комментариев
#Регистры

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Виртуальная таблица субконто: когда она появляется

Этот вопрос проверяет глубокое понимание архитектуры регистров бухгалтерии в 1С. Это классический вопрос для опытных разработчиков.

Краткий ответ

Виртуальная таблица субконто появляется ТОЛЬКО при компиляции и сохранении конфигурации, когда:

  1. Сохранил план счетов с субконто
  2. Создал регистр бухгалтерии
  3. Компилировал конфигурацию

В этот момент 1С генерирует виртуальные таблицы для каждого уникального набора субконто.

Детальное объяснение

ШАГ 1: Структура плана счетов

План счетов "ХозяйственныеОперации"
    Счёт 10 (Материалы)
        Субконто 1: Материал
        Субконто 2: Склад
        Субконто 3: (нет)
    
    Счёт 41 (Товары)
        Субконто 1: Товар
        Субконто 2: Склад
        Субконто 3: (нет)
    
    Счёт 62 (Расчеты с покупателями)
        Субконто 1: Контрагент
        Субконто 2: Договор
        Субконто 3: (нет)

ШАГ 2: Создание регистра бухгалтерии

Регистр Бухгалтерия "РасчетыПоУчету"
    Реквизиты:
        ПланСчетов Ссылка на ПланСчетов.ХозяйственныеОперации
    Ресурсы:
        Дебет Десятичное число
        Кредит Десятичное число

ШАГ 3: Компиляция конфигурации

После сохранения и компиляции конфигурации 1С автоматически генерирует виртуальные таблицы.

Виртуальные таблицы — что это

Для нашего примера 1С создаст три виртуальные таблицы:

Таблица 1: Для счетов с 2 субконто (Материал, Склад)

Регистр.РасчетыПоУчету.Таблица_10_41
    Поля:
    - Период
    - СчетДебет
    - СчетКредит
    - Дебет
    - Кредит
    - Материал_ДебетСубконто1
    - Материал_ДебетСубконто2
    - Материал_КредитСубконто1
    - Материал_КредитСубконто2
    - Товар_ДебетСубконто1
    - Товар_ДебетСубконто2
    - Товар_КредитСубконто1
    - Товар_КредитСубконто2

Таблица 2: Для счетов с разными комбинациями субконто Эти таблицы создаются для оптимизации запросов.

Когда создаются виртуальные таблицы: точный момент

ТОЧНЫЙ МОМЕНТ:

  1. Открыл конфигуратор и редактирую план счетов — ничего не происходит (изменения в памяти)

  2. Нажимаю "Сохранить" — виртуальные таблицы ПЕРЕИ КОМПИЛИРУЮТСЯ

  3. Конфигуратор выполняет:

    • Анализирует все счета и их субконто
    • Определяет уникальные комбинации
    • Генерирует новые таблицы
    • Пересчитывает индексы
    • Обновляет метаданные

Это может занять 30+ секунд на больших конфигурациях.

Практический пример

Сценарий: Я добавил новое субконто к счету 62

До изменения счет 62 имел:

  • Субконто 1: Контрагент
  • Субконто 2: Договор

Добавил:

  • Субконто 3: Отрасль

Нажимаю "Сохранить" в конфигураторе:

Действия 1С:
1. Анализирует: счет 62 теперь имеет 3 субконто
2. Проверяет: есть ли уже таблица под эту комбинацию?
3. Если нет → создает новую виртуальную таблицу
4. Обновляет индексы для быстрого доступа
5. Пересчитывает план запроса
6. Проверяет существующие данные в БД

Важность виртуальных таблиц

Для чего они нужны:

  1. Оптимизация запросов

    // 1С использует правильную виртуальную таблицу
    Запрос.Текст = "ВЫБРАТЬ * ИЗ РегистрБухгалтерия.РасчетыПоУчету
        |ГДЕ Материал_ДебетСубконто1 = &Материал";
    // Быстро ищет именно в таблице с этим субконто
    
  2. Правильное хранение данных

    • Разные комбинации субконто → разные таблицы
    • Экономия места в БД
    • Быстрый доступ
  3. Гибкость

    • Можно менять субконто без переноса данных
    • Автоматическое создание нужных структур

Проблемы, которые могут возникнуть

Проблема 1: Добавил субконто, а таблица не создалась

Причина: забыл нажать "Сохранить" в конфигураторе
Решение: обязательно сохрани конфигурацию!

Проблема 2: Много виртуальных таблиц, производительность падает

Причина: слишком много разных комбинаций субконто
Решение: пересмотреть структуру счетов, объединить где возможно

Проблема 3: Старые данные не видны после добавления субконто

Причина: данные в старой таблице, новое субконто в новой таблице
Решение: нужно пересчитать регистр через функцию

Функция ПересчитатьРегистр()
    РегистрыБухгалтерии.РасчетыПоУчету.Пересчитать();
КонецФункции

Как проверить наличие виртуальных таблиц

Способ 1: Через запрос

Процедура ПроверитьВиртуальныеТаблицы()
    
    // Попытка доступа к виртуальной таблице
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ Дебет ИЗ РегистрБухгалтерия.РасчетыПоУчету";
    
    Попытка
        Результат = Запрос.Выполнить();
        Сообщить("Таблица существует и доступна");
    Исключение
        Сообщить("Таблица не найдена: " + ОписаниеОшибки());
    КонецПопытки;
    
КонецПроцедуры

Способ 2: Через конфигуратор

Прямо в конфигураторе:

  1. Открыть регистр бухгалтерии
  2. Посмотреть раздел "Ресурсы" и "Реквизиты"
  3. Они появляются автоматически после сохранения

Мой опыт и рекомендации

Ошибки, которые я совершал:

  1. Добавил субконто и забыл сохранить — потом искал часами
  2. Создал 50+ комбинаций субконто — БД разбухла, система медленная
  3. Удалил субконто, но данные остались в старой таблице — потеря информации

Лучшие практики:

  1. Тщательно планирую структуру счетов ДО внедрения

    // Разработаю подробный реестр счетов с субконто
    // Согласую с бухгалтерией
    // Потом реализую в 1С
    
  2. Всегда сохраняю конфигурацию явно

    // Не надеюсь на автосохранение
    // Нажимаю Ctrl+S после любых изменений
    
  3. Проверяю таблицы после добавления субконто

    // Пишу простой запрос для проверки
    // Убеждаюсь, что данные доступны
    
  4. Документирую структуру

    План счетов:
    10 - Материалы (Материал, Склад)
    41 - Товары (Товар, Склад)
    62 - Расчеты (Контрагент, Договор, Проект)
    

Связь с регистром накопления

Для сравнения, регистры накопления НЕ имеют виртуальных таблиц субконто, потому что:

  • Они просто накапливают суммы
  • Не имеют аналитики как в бухгалтерии
  • Структура фиксирована

Итог

Виртуальные таблицы субконто появляются:

  • ✅ При сохранении конфигурации
  • ✅ При изменении плана счетов
  • ✅ Автоматически, без ручного вмешательства
  • ❌ НЕ на каждое изменение данных
  • ❌ НЕ в runtime (только при компиляции)

Это критично важная архитектурная особенность 1С бухгалтерии, которую должен понимать каждый разработчик, работающий с регистрами.