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

Как объекты 1С представлены в СУБД?

1.6 Junior🔥 141 комментариев
#СУБД и хранение

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

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

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

Представление объектов 1С в СУБД

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

Основной принцип: ORM в действии

1С использует объектно-реляционное отображение (ORM). Каждый объект конфигурации преобразуется в набор таблиц СУБД:

Справочник "Контрагенты"
       ↓
  Таблица _Reference123 (основные реквизиты)
       ↓
  Таблица _RfRc123 (табличные части)
       ↓
  Таблица _DeRl123 (удаления)

Справочники и Документы

Справочник (Документы аналогично) представлены тремя таблицами:

  1. _Reference{N} — основная таблица объектов

    SELECT
        ID,           -- GUID объекта
        ParentID,     -- GUID родителя (для иерархии)
        Code,         -- Код справочника
        Description,  -- Наименование
        DataVersion   -- Версия для синхронизации
    FROM _Reference123;
    
  2. _RfRc{N} — табличные части

    SELECT
        ID,           -- GUID записи табчасти
        ParentID,     -- GUID родительского объекта
        Recorder,     -- Номер строки
        Field1, Field2, ... -- Реквизиты табчасти
    FROM _RfRc123;
    
  3. _DeRl{N} — таблица удалений (для синхронизации)

    SELECT
        ID,
        Class
    FROM _DeRl123;
    

Регистры

Регистр накопления (например, "Остатки"):

SELECT
    RecordType,     -- 0 = приход, 1 = расход
    Period,         -- DateTime
    LineNumber,     -- Номер строки
    Recorder,       -- GUID документа
    Active,         -- Флаг активности
    Склад,          -- Реквизит регистра
    Товар,          -- Реквизит регистра
    Количество,     -- Измерение
    Сумма           -- Ресурс
FROM _Acc{N};

Справочники с иерархией

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

SELECT
    ID,           -- GUID объекта
    ParentID,     -- GUID родителя (NULL для корня)
    IsFolder,     -- 1 если это группа, 0 если элемент
    Code,
    Description
FROM _Reference456;

Система константизации ID

Каждый объект имеет внутренний ID:

DUID = ((УникальныйИД >> 112) ^ (УникальныйИД << 16)) & 0xFFFFFFFFFFFFFFFF

1С использует эту систему для оптимизации, а не прямые GUID.

Служебные таблицы

_IDRRef — маппинг ID → GUID

SELECT ID, UUID FROM _IDRRef;

_Info — информация о конфигурации

SELECT
    Fld as Field,
    Val as Value
FROM _Info;

Реквизиты объектов в таблицах

Каждый реквизит — колонка в таблице:

// В конфигураторе: Справочник.Контрагенты
// Реквизиты:
//   - Код (String)
//   - Наименование (String)
//   - ИНН (String)
//   - КПП (String)

FLD_1,  -- Код
FLD_2,  -- Наименование
FLD_3,  -- ИНН
FLD_4   -- КПП

Связи и References

Связь на другой справочник хранится как GUID:

-- Реквизит "Контрагент" в документе "Счёт"
SELECT
    ID,
    FLD_1 as Контрагент  -- GUID ссылки на Контрагентов
FROM _Document789;

Поиск объекта в коде

// В платформе 1С это простая операция:
Объект = Справочники.Контрагенты.ПолучитьСсылку(GUID);

// В СУБД преобразуется в:
SELECT * FROM _Reference123 WHERE ID = @ID;

Ключевые особенности

  • GUID как первичный ключ — глобальная уникальность
  • DataVersion — для отслеживания изменений в синхронизации
  • RecordType в регистрах — для приходов/расходов
  • Денормализация — реквизиты хранятся колонками, не в отдельных таблицах
  • _Deferred таблицы — для отложенных обновлений

Практическое применение

Понимание этой модели критично для:

  • Оптимизации запросов — знаешь структуру → пишешь эффективный SQL
  • Синхронизации 1С — понимаешь логику репликации
  • Работы с СУБД напрямую — на скорость в 100+ раз быстрее платформы
  • Восстановления данных — прямая работа с СУБД при критических сбоях

Вывод: 1С транслирует объекты в нормализованно-денормализованную структуру SQL. Понимание этого соответствия — ключ к глубокому пониманию платформы и её оптимизации.