Работа с базой данных 1С:Предприятие через SQL-запросы — неотъемлемая часть жизни разработчиков, администраторов и опытных пользователей. Однако даже специалисты с опытом сталкиваются с проблемой: как узнать точное название таблицы 1С в SQL, если оно не совпадает с именем объекта метаданных? Платформа автоматически генерирует имена таблиц в базе данных, добавляя префиксы, суффиксы и кодируя символы, что усложняет их идентификацию.

В этой статье мы разберём 5 рабочих методов, как найти имя таблицы — от простых (через консоль управления СУБД) до продвинутых (анализ системных представлений ). Особое внимание уделим нюансам для разных версий платформы (8.3.20+) и популярных СУБД: Microsoft SQL Server, PostgreSQL и IBM DB2. Вы также узнаете, почему имена таблиц в SQL могут меняться после обновления конфигурации или реструктуризации базы, и как этого избежать.

1. Метод 1: Просмотр через консоль управления СУБД

Самый универсальный способ — использовать встроенные инструменты вашей СУБД. Он подходит для любых баз , независимо от версии платформы или конфигурации.

Для Microsoft SQL Server:

  1. Откройте SQL Server Management Studio (SSMS).
  2. Подключитесь к серверу, где размещена база .
  3. Раскройте узел Databases → [Имя вашей базы] → Tables.
  4. Используйте фильтр по имени (например, введите _Doc% для поиска таблиц документов).

Для PostgreSQL:

-- Подключитесь к базе через psql или pgAdmin

SELECT table_name

FROM information_schema.tables

WHERE table_schema = 'public' AND table_name LIKE '%Склад%';

💡

В PostgreSQL таблицы 1С часто располагаются в схеме public, но в некоторых конфигурациях (например, 1С:ERP) могут использоваться отдельные схемы для модулей.

⚠️ Внимание: В больших базах количество таблиц может превышать 10 000. Используйте точные фильтры (например, _Doc_ПоступлениеТоваров%), чтобы не перегружать интерфейс.

2. Метод 2: Системные представления 1С

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

Выполните следующий запрос в консоли вашей СУБД:

-- Для MSSQL и PostgreSQL

SELECT

t.Name AS TableName,

m.Name AS MetadataName,

m.Type AS MetadataType

FROM

_1SMetadata AS m

JOIN

_1STables AS t ON m.ID = t.MetadataID

WHERE

m.Name LIKE '%НазваниеОбъекта%';

Где %НазваниеОбъекта% — часть имени объекта метаданных (например, %Склад% или %Документ%).

Тип метаданных Префикс таблицы в SQL Пример имени таблицы
Документ _Document или _Doc _Document123_ПоступлениеТоваров
Справочник _Reference или _Ref _Reference10_Номенклатура
Регистр накопления _AccumulationRegister или _AccRg _AccumulationRegister5_ТоварыНаСкладах
Регистр сведений _InformationRegister или _InfoRg _InfoRg7_ЦеныНоменклатуры
📊 Какую СУБД вы используете для 1С?
Microsoft SQL Server
PostgreSQL
IBM DB2
Oracle
Другую

3. Метод 3: Через конфигуратор 1С (для разработчиков)

Если у вас есть доступ к конфигуратору, можно узнать имя таблицы без прямых SQL-запросов. Этот метод подходит для 1С:Предприятие 8.3 и новее.

Инструкция:

  1. Откройте конфигуратор в режиме 1С:Предприятие.
  2. Перейдите в Администрирование → Поддержка и обслуживание → Тестирование и исправление.
  3. Нажмите Показать информацию о базе данных.
  4. В открывшемся окне выберите вкладку Таблицы базы данных.
  5. Используйте поиск по имени объекта метаданных.

⚠️ Внимание: В некоторых конфигурациях (например, 1С:УТ 11 или 1С:ERP) этот метод может не показывать виртуальные таблицы или таблицы, созданные динамически.

Проверьте права доступа (нужны права администратора)

Закройте все сеансы пользователей

Сделайте резервную копию базы

Отключите регламентные задания-->

4. Метод 4: Использование внешних обработок

Для автоматизации поиска таблиц можно использовать внешние обработки. Например, обработка "Анализ таблиц базы данных" от 1С-Рарус или Инфостарт.

Преимущества метода:

  • 🔍 Визуальный интерфейс с фильтрами по типам объектов.
  • 📊 Экспорт списка таблиц в Excel или JSON.
  • 🛠️ Проверка целостности ссылок между таблицами.

Где скачать:

Как установить обработку в 1С?

1. Скачайте файл с расширением .epf или .cf.

2. В конфигураторе выберите Файл → Открыть и укажите путь к файлу.

3. Нажмите Выполнить и следуйте инструкциям обработки.

5. Метод 5: Анализ журналов реструктуризации

Если таблица была создана или изменена недавно, её имя можно найти в журналах реструктуризации базы данных. Этот метод полезен после обновления конфигурации или изменения структуры объектов.

Как найти журналы:

  • 📁 В каталоге базы данных (...\1Cv8\БазаИмя\) ищите файлы с расширением .lgf или .log.
  • 🔎 Используйте поиск по ключевым словам: CREATE TABLE, ALTER TABLE или названию объекта метаданных.

Пример записи в журнале:

{1}.{2}: DDL: CREATE TABLE "_Document123_РеализацияТоваров" ("_IDRRef" NVARCHAR(16) NOT NULL, ...)

⚠️ Внимание: Журналы реструктуризации могут занимать десятки гигабайт. Для поиска используйте специализированные инструменты вроде Notepad++ с плагином Search in Files или GrepWin.

6. Частые ошибки и как их избежать

При поиске таблиц 1С в SQL разработчики часто сталкиваются с типичными проблемами. Вот самые распространённые из них и способы их решения:

Ошибка 1: Таблица не найдена, хотя объект существует в метаданных

  • 🔹 Проверьте, не отключён ли объект в конфигурации (параметр Включать в полнотекстовый поиск).
  • 🔹 Убедитесь, что база данных синхронизирована с конфигурацией (запустите Тестирование и исправление).

Ошибка 2: Несовпадение имён таблиц после обновления

  • 🔹 Используйте Идентификатор объекта метаданных (GUID) вместо имени при работе с SQL. Его можно найти в конфигураторе через свойства объекта.
  • 🔹 После обновления запустите полную реструктуризацию базы.
💡

Всегда проверяйте актуальность структуры базы данных после обновления конфигурации. Даже незначительные изменения в метаданных могут привести к созданию новых таблиц или изменению существующих.

7. Особенности для разных СУБД

Каждая система управления базами данных имеет свои нюансы при работе с таблицами . Рассмотрим ключевые отличия.

Microsoft SQL Server:

  • 📌 Поддерживает CLR-интеграцию, что позволяет использовать .NET-код для анализа метаданных.
  • 📌 Таблицы 1С часто имеют тип NVARCHAR для строковых полей (в отличие от VARCHAR в других СУБД).

PostgreSQL:

  • 📌 Имена таблиц приводятся к нижнему регистру, если не взяты в двойные кавычки.
  • 📌 Для работы с требуется расширение uuid-ossp для генерации GUID.

IBM DB2:

  • 📌 Использует схему DBO по умолчанию для таблиц 1С.
  • 📌 Имеет ограничение на длину имени таблицы — 128 символов (в отличие от 255 в MSSQL).
СУБД Макс. длина имени таблицы Регистрозависимость Тип строковых полей
Microsoft SQL Server 128 символов Нет (по умолчанию) NVARCHAR
PostgreSQL 63 символа Да (если без кавычек) TEXT или VARCHAR
IBM DB2 128 символов Да VARCHAR

FAQ: Ответы на популярные вопросы

Можно ли узнать имя таблицы 1С в SQL без доступа к базе?

Нет, без прямого доступа к СУБД или конфигуратору это невозможно. Однако вы можете:

  • Посмотреть Идентификатор объекта в конфигураторе (он часто совпадает с частью имени таблицы).
  • Использовать типовую структуру имён (например, _Document{ID}_ИмяОбъекта).
Почему после обновления конфигурации таблицы в SQL изменили имена?

Это происходит из-за:

  • Изменения Идентификатора объекта метаданных (GUID).
  • Реструктуризации базы данных (например, при добавлении новых реквизитов).
  • Оптимизации хранилища, запущенной платформой автоматически.

Чтобы избежать проблем, используйте Полное имя таблицы (с префиксами) или Синонимы в SQL-запросах.

Как найти таблицу для регистра сведений с периодичностью "По позиции регистратора"?

Такие регистры хранятся в нескольких таблицах:

  • Основная таблица: _InfoRg{ID}_ИмяРегистра.
  • Таблица записей: _InfoRg{ID}_ИмяРегистра_VT{Номер} (где {Номер} — идентификатор виртуальной таблицы).

Используйте запрос к системному представлению _1SVirtualTables для точного определения.

Можно ли переименовать таблицу 1С в SQL вручную?

Категорически не рекомендуется! Это приведёт к:

  • Потере связи между метаданными и физическими таблицами.
  • Ошибкам при запуске 1С:Предприятие (например, "Не найдена таблица X").
  • Необходимости полного восстановления базы из резервной копии.

Если нужно изменить имя объекта, сделайте это через конфигуратор — платформа сама обновит структуру SQL.

Как узнать, какая таблица в SQL соответствует динамическому списку в 1С?

Динамические списки не имеют прямых аналогов в SQL. Они формируются на основе:

  • Виртуальных таблиц (например, Документ.ПоступлениеТоваров).
  • Временных таблиц, создаваемых на лету (имена начинаются с # или @).
  • Объединения нескольких физических таблиц через JOIN.

Чтобы проанализировать запрос динамического списка, используйте План запроса в конфигураторе или включите Протоколирование SQL.