Меняются ли физические имена таблиц СУБД (ИмяТаблицыХранения) при разворачивании базы 1С на другом сервере?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке внешних интеграций, построении систем аналитики (DWH, BI) или анализе технологического журнала разработчики часто сталкиваются с физическими именами таблиц и полей в СУБД. Возникает закономерный вопрос: сохраняются ли значения ИмяТаблицыХранения при переносе конфигурации и разворачивании базы на другом сервере баз данных. Разберем детально механизм формирования имен, факторы их изменения и методы работы с ними в платформе 1С:Предприятие.

Принцип формирования физических имен таблиц в СУБД

Платформа 1С:Предприятие абстрагирует разработчика от физической схемы базы данных. При создании объектов метаданных платформа автоматически генерирует для них таблицы в СУБД. Имя физической таблицы строится по следующему правилу:

  1. Служебный префикс: указывает на тип объекта метаданных (например, _Reference для справочников, _Document для документов, _InfoRg для регистров сведений, _AccumRg для регистров накопления).
  2. Числовой суффикс: внутренний идентификатор объекта, присвоенный платформой при его регистрации в конфигурации базы данных.

Таким образом, имя таблицы в SQL выглядит, например, как _Reference45 или _Document120.

Влияние способа переноса базы на имена таблиц

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

  1. Восстановление из физического бэкапа СУБД (дамп/restore): В этом случае переносится точная копия базы данных со всеми внутренними идентификаторами и структурой. Имена всех таблиц и полей хранения гарантированно не изменятся.
  2. Загрузка информационной базы через выгрузку (*.dt): При загрузке файла выгрузки платформа воссоздает таблицы на основе сериализованных данных. В большинстве случаев соответствия сохраняются, однако при наличии расхождений версий платформы или частичной реструктуризации жесткая идентичность не гарантируется.
  3. Создание новой базы из файла конфигурации (*.cf) или ручное объединение: Если база создается заново или объекты добавлялись вручную в разных базах, внутренние идентификаторы формируются независимо (по порядку создания или объединения метаданных). В этой ситуации физические имена таблиц с высокой вероятностью изменятся, даже если имена объектов метаданных в конфигураторе полностью совпадают.

Где хранится соответствие метаданных и физических таблиц

Соответствие между объектами метаданных конфигурации 1С и физическими именами таблиц/колонок в СУБД хранится во внутреннем служебном хранилище платформы DBNames, расположенном в системной таблице параметров (PARAMS или Config). Прямое чтение или изменение этих данных вручную через SQL крайне не рекомендуется и может привести к повреждению информационной базы.

Как программно получить актуальную структуру хранения

Для гарантированного получения актуальных физических имен таблиц и полей в коде 1С предназначен метод глобального контекста ПолучитьСтруктуруХраненияБазыДанных(). Рассмотрим пример его использования:


// Получаем структуру хранения для всех объектов конфигурации
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить("Справочник.Номенклатура");
МассивОбъектов.Добавить("Документ.РеализацияТоваровУслуг");

// Параметры: СписокОбъектов, ВключатьВторичныеТаблицы, ВариантВыводаПолей
ТаблицаСтруктуры = ПолучитьСтруктуруХраненияБазыДанных(МассивОбъектов, Истина);

Для Каждого Стр Из ТаблицаСтруктуры Цикл
    Сообщить("Метаданные: " + Стр.ИмяТаблицы 
        + " | Таблица СУБД: " + Стр.ИмяТаблицыХранения 
        + " | Назначение: " + Стр.Назначение);
КонецЦикла;

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

Рекомендации по построению интеграций и прямых запросов

Выясним правила безопасной работы, если перед нами стоит задача чтения данных из СУБД сторонними инструментами:

  1. Не использовать константные имена таблиц: Ни в коем случае нельзя «зашивать» имена вида _Document120 в постоянный код внешних отчетов или скриптов выгрузки, так как при обновлении или реструктуризации базы эти имена могут измениться.
  2. Использовать динамический маппинг: На стороне 1С создается регламентное задание, которое через ПолучитьСтруктуруХраненияБазыДанных() формирует актуальный словарь соответствий метаданных и физических таблиц СУБД, после чего передает его во внешнюю систему.
  3. Соблюдать лицензионные условия: Напоминаем, что прямое чтение из таблиц СУБД допускается для аналитических целей, однако прямая запись данных в обход серверного кластера 1С строго запрещена лицензионным соглашением и нарушает целостность данных.
← На главную