Работа с базой данных 1С:Предприятие через SQL-запросы — неотъемлемая часть жизни разработчиков, администраторов и опытных пользователей. Однако даже специалисты с опытом сталкиваются с проблемой: как узнать точное название таблицы 1С в SQL, если оно не совпадает с именем объекта метаданных? Платформа 1С автоматически генерирует имена таблиц в базе данных, добавляя префиксы, суффиксы и кодируя символы, что усложняет их идентификацию.
В этой статье мы разберём 5 рабочих методов, как найти имя таблицы — от простых (через консоль управления СУБД) до продвинутых (анализ системных представлений 1С). Особое внимание уделим нюансам для разных версий платформы (8.3.20+) и популярных СУБД: Microsoft SQL Server, PostgreSQL и IBM DB2. Вы также узнаете, почему имена таблиц в SQL могут меняться после обновления конфигурации или реструктуризации базы, и как этого избежать.
1. Метод 1: Просмотр через консоль управления СУБД
Самый универсальный способ — использовать встроенные инструменты вашей СУБД. Он подходит для любых баз 1С, независимо от версии платформы или конфигурации.
Для Microsoft SQL Server:
- Откройте
SQL Server Management Studio (SSMS). - Подключитесь к серверу, где размещена база 1С.
- Раскройте узел
Databases → [Имя вашей базы] → Tables. - Используйте фильтр по имени (например, введите
_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_ЦеныНоменклатуры |
3. Метод 3: Через конфигуратор 1С (для разработчиков)
Если у вас есть доступ к конфигуратору, можно узнать имя таблицы без прямых SQL-запросов. Этот метод подходит для 1С:Предприятие 8.3 и новее.
Инструкция:
- Откройте конфигуратор в режиме
1С:Предприятие. - Перейдите в
Администрирование → Поддержка и обслуживание → Тестирование и исправление. - Нажмите
Показать информацию о базе данных. - В открывшемся окне выберите вкладку
Таблицы базы данных. - Используйте поиск по имени объекта метаданных.
⚠️ Внимание: В некоторых конфигурациях (например, 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. Особенности для разных СУБД
Каждая система управления базами данных имеет свои нюансы при работе с таблицами 1С. Рассмотрим ключевые отличия.
Microsoft SQL Server:
- 📌 Поддерживает
CLR-интеграцию, что позволяет использовать .NET-код для анализа метаданных. - 📌 Таблицы 1С часто имеют тип
NVARCHARдля строковых полей (в отличие отVARCHARв других СУБД).
PostgreSQL:
- 📌 Имена таблиц приводятся к нижнему регистру, если не взяты в двойные кавычки.
- 📌 Для работы с 1С требуется расширение
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.