Информационная база 1С в режиме работы через SQL использует собственную структуру хранения данных. Таблицы не имеют привычных названий, отражающих имена справочников или документов. Вместо этого используются технические идентификаторы, например, _Reference123 или _Document456. Чтобы соотнести таблицу с объектом конфигурации, необходимо использовать механизм метаданных.
Каждому объекту конфигурации в 1С присваивается уникальный идентификатор – UUID, который сохраняется в таблице _Metadata. Определить соответствие между UUID и таблицей можно через SQL-запрос, извлекая данные из таблицы _ObjectVersions или _InfoRg1234, если речь идёт о регистрах сведений. При этом важно учитывать, что названия таблиц формируются по шаблону, который зависит от типа объекта: _Reference* – справочники, _Document* – документы, _AccumRg* – регистры накопления и т.д.
Для получения списка всех таблиц можно использовать системную таблицу SQL-сервера INFORMATION_SCHEMA.TABLES. Далее необходимо определить нужную таблицу по косвенным признакам: состав полей, типы данных, наличие ссылок на другие таблицы. В частности, поле _Fld* с типом uniqueidentifier часто указывает на связь с другим объектом 1С.
Если конфигурация содержит большое количество объектов, имеет смысл использовать запросы к виртуальной таблице V8Metadata (доступной при установке соответствующего расширения), либо экспортировать схему метаданных средствами конфигуратора. Это позволяет построить точное соответствие между именами объектов и таблицами, сократив время анализа структуры базы.
Как найти соответствие между объектами конфигурации 1С и таблицами в SQL
Каждому объекту конфигурации 1С (справочнику, документу, регистру и т.д.) в SQL-базе соответствует одна или несколько таблиц. Названия таблиц строятся по определённым правилам, зависящим от типа объекта и его имени.
Имя таблицы формируется из префикса и технического имени объекта. Префиксы фиксированы: «_Reference» – для справочников, «_Document» – для документов, «_AccumRg» – для регистров накопления, «_InfoRg» – для регистров сведений, «_Enum» – для перечислений, «_Const» – для констант.
Техническое имя объекта можно узнать через конфигуратор 1С, открыв свойства объекта и посмотрев значение поля «Синоним» и «Имя». Например, для справочника «Контрагенты» с именем «Kontragenty» таблица в SQL будет называться «_Reference_Kontragenty».
Документы создают две таблицы: основную («_Document_Имя») и табличную часть («_Document_Имя_TН», где «ТН» – имя табличной части). Регистры также могут иметь таблицы движений и итогов: «_AccumRg_Имя» – движения, «_AccumRgT_Имя» – итоги.
Для анализа можно использовать SQL-запрос к системной таблице sys.tables, указав фильтр по префиксу. Например:
SELECT name FROM sys.tables WHERE name LIKE '_Reference%'
покажет все таблицы справочников.
Если включена поддержка расширенной структуры хранения (расширенные таблицы), то к объекту могут относиться таблицы с суффиксами «_T», «_S», «_B» и др. «_T» – табличная часть, «_S» – значения составных реквизитов, «_B» – бинарные данные.
Для точного сопоставления помогает использование внутреннего идентификатора объекта – GUID. В таблице «_ReferenceXX» поле «ID» – это GUID, который совпадает с идентификатором объекта в 1С. Получив GUID из 1С (через форму или отладчик), можно найти запись в SQL по этому значению.
Где искать таблицы регистров накопления в SQL-базе 1С
Таблицы регистров накопления в базе данных SQL для 1С начинаются с префикса _AccumRg. Каждая из таких таблиц соответствует определённому регистру и может иметь различные суффиксы, отражающие структуру и содержание данных.
- _AccumRgXXXX – основная таблица регистра, где хранятся агрегированные данные по измерениям и ресурсам. XXXX – уникальный идентификатор регистра.
- _AccumRgXXXXT – таблица движений регистра (если используется периодическое хранение).
- _AccumRgXXXX_ХХХХХХХХ – вариант имени при включении расширенной поддержки имен, где вместо кода используется символьный идентификатор.
Для поиска нужного регистра:
- Откройте конфигуратор 1С, перейдите в список регистров накопления и найдите нужный объект.
- Узнайте его имя в конфигурации, затем выполните SQL-запрос к системным таблицам, например:
SELECT name FROM sys.objects WHERE name LIKE '_AccumRg%'
- Сопоставьте найденные имена с объектами конфигурации, ориентируясь на порядок создания и структуру таблиц.
Если конфигурация типовая, можно сверяться с официальной документацией или выгрузить структуру метаданных средствами платформы. Также полезен просмотр схемы базы в SQL Server Management Studio – все таблицы регистра будут сгруппированы по префиксу.
Как определить имя таблицы справочника в SQL по его имени в 1С
Имя таблицы справочника в SQL-структуре базы 1С формируется по шаблону: _ReferenceXXX, где XXX – числовой идентификатор объекта метаданных.
Чтобы найти соответствие между именем справочника в конфигураторе 1С и таблицей в SQL, выполните следующие шаги:
2. В окне конфигурации перейдите к нужному справочнику. Обратите внимание на его внутреннее имя (не отображаемое имя, а идентификатор в конфигурации).
3. Откройте справочник метаданных базы в SQL: таблицу _Metadata. В ней содержатся имена и идентификаторы всех объектов 1С.
4. Выполните SQL-запрос для поиска нужного справочника:
SELECT * FROM _Metadata
WHERE Name = 'ИмяСправочника' AND Type = 1
Тип 1 соответствует справочникам. В поле ID будет содержаться значение XXX из имени таблицы.
5. После получения идентификатора найдите таблицу _ReferenceXXX, где XXX – это значение ID. Это и есть основная таблица справочника.
Дополнительно для справочника могут существовать таблицы с префиксами _InfoRgXXX (регистры сведений по справочнику), _EnumXXX (если используется перечисление в реквизитах), и таблицы с постфиксами _T – табличные части.
Имена таблиц можно также извлечь из системной таблицы _ObjectTableName, если она есть в вашей версии 1С.
Что означают префиксы и суффиксы в названиях таблиц 1С в SQL
Названия таблиц 1С в SQL-структуре содержат префиксы и суффиксы, отражающие тип данных и структуру метаданных конфигурации. Префиксы определяют вид объекта, а суффиксы – его составную часть или специфику хранения.
Префикс _Document указывает на документ. Таблица _Document123 будет соответствовать документу с внутренним идентификатором 123. Таблица _Document123_VT_Товары относится к табличной части «Товары» этого документа.
Префикс _Reference используется для справочников, например, _Reference65 – это справочник с внутренним ID 65. Если в конце таблицы указано _T, как в _Reference65_T, это таблица версионирования объектов при включённой истории изменений.
Префикс _AccumRg означает регистр накопления. _AccumRg101 – основной регистр, _AccumRg101_VT_Остатки – табличная часть или виртуальная таблица, обслуживающая измерения или ресурсы.
_InfoRg – регистры сведений. Суффиксы могут обозначать периодичность или дополнительные параметры: _InfoRg207_Т – версионная таблица, _InfoRg207_P – таблица периодических значений.
Таблицы с префиксом _Const относятся к константам, например, _Const100. Они не имеют табличной структуры, а содержат одно значение для всей базы.
_Enum – перечисления, _Enum25 хранит значения перечисления с идентификатором 25. Такие таблицы часто используются в полях ссылочного типа.
Префикс _Catalog означает регистр сведений, аналогично _Reference, но для каталогов. Суффиксы также могут включать _T (версионность) и _S (срез последних значений).
Для точного определения содержимого таблицы полезно сверять её идентификатор с таблицей _Metadata – она содержит соответствие между числовыми идентификаторами и именами объектов конфигурации.
Как использовать конфигуратор 1С для поиска имени таблицы в SQL
Откройте конфигуратор и загрузите нужную информационную базу. Перейдите в меню «Конфигурация» → «Открыть конфигурацию».
Найдите интересующий объект метаданных: документ, справочник, регистр и т.д. Щёлкните по нему правой кнопкой мыши и выберите «Открыть». В окне свойств обратите внимание на имя объекта – оно определяет часть имени таблицы в SQL.
Откройте меню «Администрирование» → «Выгрузка данных» → «Выгрузка структуры конфигурации в файл». Сохраните файл в формате XML. Откройте его текстовым редактором и найдите нужный объект. Внутри тега <Name> будет указано имя, которое используется при формировании имени таблицы.
Также можно воспользоваться встроенной командой «Настройка отображения технических имён» (находится в меню «Сервис»). После включения этой функции конфигуратор начнёт отображать технические имена объектов, совпадающие с частью имени таблиц в SQL-базе.
Имя таблицы в SQL строится по шаблону: префикс + техническое имя объекта. Примеры префиксов: _Document для документов, _Reference для справочников, _AccumRg для регистров накопления. Например, если справочник имеет техническое имя «Nomenklatura», то имя таблицы будет выглядеть как «_Reference123». Конкретный суффикс (например, 123) можно узнать через выгрузку конфигурации в XML или при помощи запроса в СУБД по метаданным.
Как связаны виртуальные таблицы 1С с физическими таблицами SQL
Например, виртуальная таблица Документ.РеализацияТоваровУслуг агрегирует данные из нескольких физических таблиц: основной – _DocumentXXX (где XXX – идентификатор объекта), табличной части – _DocumentXXX_T, а также таблиц, связанных с регистрами, если документ в них записывает данные.
Чтобы отследить соответствие, нужно получить GUID объекта метаданных через справочник Metadata.Objects в режиме конфигуратора или с помощью запроса в режиме управляемого приложения:
ВЫБРАТЬ
Метаданные.ИмяОбъекта,
Метаданные.ИдентификаторОбъекта
ИЗ
Метаданные
ГДЕ
Метаданные.Тип = "Документ"
И Метаданные.ИмяОбъекта = "РеализацияТоваровУслуг"
Получив идентификатор, можно найти соответствующие таблицы в SQL – они начинаются с символа подчеркивания и содержат этот идентификатор в шестнадцатеричном виде. Для уточнения структуры удобно использовать системные представления SQL Server: sys.tables и sys.columns.
Если включена регистрация изменений или используется распределённая база, данные могут также попадать в таблицы с суффиксами _Tn или в регистры сведений. Это необходимо учитывать при построении запросов напрямую к SQL.
Виртуальные таблицы оптимизированы для логической целостности, но при анализе производительности и построении отчётов на уровне SQL важно опираться на фактические связи и структуру физического хранения.
Как узнать имя таблицы документа в SQL по его метаданным в 1С
В конфигурации 1С каждый документ соответствует набору таблиц в SQL. Основная таблица содержит данные шапки документа, остальные – движения по регистрам. Чтобы определить имя таблицы, необходимо использовать конфигуратор или отладчик 1С с доступом к метаданным.
Откройте конфигуратор и найдите интересующий документ в дереве метаданных. Обратите внимание на его Имя (не представление, а системное имя на английском). Например, если документ называется «РеализацияТоваровУслуг», то имя таблицы шапки будет _DocumentNN, где NN – числовой идентификатор документа в конфигурации.
Чтобы узнать этот идентификатор, используйте справочник метаданных – объект Метаданные.Документы в интерактивной сессии. Выполните следующий код в 1С:
Сообщить(Метаданные.Документы.РеализацияТоваровУслуг.УникальныйИдентификатор);
Полученный GUID помогает точно определить нужный документ в базе SQL. Но таблица имеет не GUID, а числовой код. Его можно узнать через прямой SQL-запрос к системной таблице _DocumentInfo или через реестр метаданных в 1С. Например:
ВЫБРАТЬ * ИЗ _DocumentInfo ГДЕ ИмяТипа = ‘РеализацияТоваровУслуг’
После определения числового идентификатора подставьте его в имя таблицы: _DocumentNN. Также возможны таблицы _DocumentNN_VT* для табличных частей.
Если в конфигурации используется режим управляемых блокировок или версия 8.3 и выше, структура может включать суффиксы и дополнительные таблицы, например _AccumRgNN – движения по регистрах накопления, _DocumentNNT – версии или текстовые данные.
Для точной работы рекомендуется использовать схему компоновки данных или внешние средства анализа метаданных, например хранилище конфигурации или выгрузку XML через конфигуратор.