К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как узнать имя таблицы в 1С

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

Имя таблицы в 1С нужно в нескольких типовых ситуациях: при написании запроса на встроенном языке, при прямом обращении к базе данных SQL-сервера, при настройке обмена или при разборе структуры хранения. Проблема в том, что у объекта конфигурации есть имя в метаданных (например, «Номенклатура»), имя таблицы запроса (Справочник.Номенклатура) и физическое имя таблицы на SQL-сервере (например, _Reference123) — и это три разных имени.

Способ узнать имя зависит от того, какое именно имя требуется и где вы работаете: в конфигураторе, в пользовательском режиме или на уровне СУБД. Ниже разобраны все рабочие варианты — от просмотра структуры метаданных до получения физических имён таблиц в SQL Server и PostgreSQL.

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

Какие имена таблиц существуют в 1С

Прежде чем искать имя, определите, какое из трёх вам нужно. Первое — имя объекта метаданных: то, что видно в дереве конфигурации, например «РеализацияТоваровУслуг». Второе — имя таблицы запроса: полное имя с типом объекта, например Документ.РеализацияТоваровУслуг. Третье — физическое имя таблицы в СУБД: служебное имя вида _Document456, которое платформа назначает автоматически.

Для написания запросов на встроенном языке нужен второй вариант. Для прямой работы с базой через SQL Management Studio или pgAdmin — третий. Путаница между ними — самая частая причина ошибок вида «Таблица не найдена».

Как узнать имя таблицы запроса в конфигураторе

Откройте конфигуратор и найдите нужный объект в дереве метаданных: справочники, документы, регистры сведений, регистры накопления. Имя объекта отображается в колонке «Имя» окна свойств (открывается по правому клику → «Свойства»). Синоним — это представление для пользователя, а для запроса нужно именно имя.

Имя таблицы запроса строится по шаблону: ТипОбъекта.ИмяОбъекта. Для справочника «Контрагенты» это Справочник.Контрагенты, для регистра сведений «КурсыВалют» — РегистрСведений.КурсыВалют. У регистров накопления есть виртуальные таблицы: РегистрНакопления.Продажи.Обороты, .Остатки, .ОстаткиИОбороты.

Проверка через консоль запросов

Быстрый способ убедиться, что имя верное: откройте консоль запросов (в режиме предприятия через «Все функции» → стандартные обработки, если они есть в конфигурации, или внешнюю консоль запросов) и выполните простой запрос ВЫБРАТЬ ПЕРВЫЕ 1 * ИЗ Справочник.Номенклатура. Если имя ошибочное, конструктор выдаст сообщение «Таблица не найдена» с указанием позиции ошибки.

Порядок действий
  1. 1
    Откройте конфигуратор и найдите объект в дереве метаданных
  2. 2
    Откройте свойства объекта и скопируйте значение поля «Имя»
  3. 3
    Добавьте префикс типа: Справочник, Документ, РегистрСведений, РегистрНакопления
  4. 4
    Проверьте имя простым запросом ВЫБРАТЬ ПЕРВЫЕ 1 в консоли запросов

Как узнать таблицу объекта в режиме «Предприятие»

Если конфигуратор недоступен, имя объекта можно выяснить из пользовательского режима. Откройте нужный документ или элемент справочника и посмотрите на команду «Вывести список» или на структуру подчинённости — там виден тип объекта. Точное имя метаданных покажет команда «Все функции» (меню → Сервис → Параметры → включить «Отображать команду "Все функции"»).

В окне «Все функции» перечислены все объекты конфигурации по веткам: Справочники, Документы, Регистры сведений и так далее. Подписи там совпадают с синонимами, но порядок и группировка соответствуют метаданным. Для регистров сведений откройте запись и через «Ещё» → «Изменить форму» можно увидеть технические имена полей.

Ещё один путь — стандартная обработка динамического списка: выделите любую строку списка, нажмите «Ещё» → «Вывести список» — в заголовке настройки будет указан тип объекта источника данных.

Как узнать физическое имя таблицы на SQL-сервере

Физические имена таблиц платформа генерирует автоматически: _Reference для справочников, _Document для документов, _InfoRg для регистров сведений, _AccumRg для регистров накопления — плюс числовой идентификатор. Угадать соответствие невозможно, его нужно получить из структуры хранения.

Для этого используется метод встроенного языка ПолучитьСтруктуруХраненияБазыДанных(). Он возвращает таблицу значений с колонками: имя таблицы хранения, имя таблицы метаданных, назначение, поля и индексы. Выполните его через внешнюю обработку или консоль кода.

bsl
СтруктураХранения = ПолучитьСтруктуруХраненияБазыДанных();
Для Каждого СтрокаТЗ Из СтруктураХранения Цикл
    Если СтрокаТЗ.ИмяТаблицы = "Справочник.Номенклатура" Тогда
        Сообщить(СтрокаТЗ.ИмяТаблицыХранения); // например _Reference123
    КонецЕсли;
КонецЦикла;

Есть и обратная задача: по физическому имени _Document456 найти объект конфигурации. Тот же метод решает её — отфильтруйте таблицу по колонке «ИмяТаблицыХранения» и получите имя метаданных. Это полезно при анализе нагрузки на СУБД, когда мониторинг показывает тяжёлую таблицу, а её назначение неизвестно.

Как узнать имя таблицы движений документа

Документ, проводящийся по регистрам, хранится не в одной таблице, а в нескольких: собственная таблица документа плюс таблицы движений по каждому регистру. Чтобы узнать полный список, откройте документ в конфигураторе и посмотрите свойство «Движения» — там перечислены все регистры, по которым объект делает записи.

Таблицы движений в запросах адресуются как таблицы самих регистров: РегистрНакопления.ТоварыНаСкладах. Связать движение с документом-регистратором можно по полю Регистратор. Физически в СУБД для каждого регистра создаётся отдельная таблица, а не вложенная в таблицу документа.

Табличные части

Табличные части документов и справочников — отдельные таблицы как в запросах, так и в СУБД. В запросе имя строится через точку: Документ.РеализацияТоваровУслуг.Товары. На SQL-сервере табличная часть получает собственную физическую таблицу вида _Document456_VT789. Узнать её имя можно той же структурой хранения — назначение таблицы будет указано как табличная часть.

Сравнение вариантов

Свойства объекта в конфигураторе

Подходит для имён запросов; не показывает физические имена СУБД

Команда «Все функции» в режиме Предприятие

Работает без конфигуратора; показывает синонимы, а не технические имена

ПолучитьСтруктуруХраненияБазыДанных()

Единственный способ узнать физические имена таблиц; требует права на выполнение кода

Просмотр таблиц в Management Studio

Показывает физические имена, но без привязки к метаданным — нужна структура хранения для расшифровки

Частые ошибки и ограничения

Ошибка «Таблица не найдена» при заведомо существующем объекте почти всегда означает одно из трёх: перепутан тип объекта (написано Справочник вместо Перечисление), использован синоним вместо имени, либо лишний пробел или опечатка. Перечисления, кстати, в запросах адресуются как Перечисление.СтавкиНДС, но хранятся иначе, чем справочники.

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

Проверка результата

После того как имя получено, проверьте его до использования в рабочем коде. Для имён запросов достаточно выполнить тестовый запрос в консоли. Для физических имён сверьте количество строк в таблице СУБД с количеством элементов в 1С — расхождение на порядки означает, что вы смотрите не ту таблицу.

Контрольные точки

Как проверить результат

Запрос ВЫБРАТЬ ПЕРВЫЕ 1 по имени таблицы
Норма

Запрос выполняется и возвращает строку

Тревожный признак

Ошибка «Таблица не найдена» — проверьте тип объекта и имя

Количество записей в физической таблице СУБД
Норма

Сопоставимо с числом элементов в 1С

Тревожный признак

Ноль строк или на порядки больше — таблица другого объекта

Назначение таблицы в структуре хранения
Норма

Совпадает с типом объекта (справочник, регистр, табличная часть)

Тревожный признак

Назначение не соответствует — уточните фильтр по имени метаданных

FAQ

Чем имя таблицы запроса отличается от имени в SQL Server?

Имя запроса (Справочник.Номенклатура) — логическое имя, которое понимает платформа 1С. Физическое имя (_Reference123) — реальная таблица в СУБД, которую платформа создаёт и именует сама. Соответствие между ними хранится в структуре хранения базы данных.

Можно ли узнать имя таблицы без доступа к конфигуратору?

Да. В режиме «Предприятие» включите команду «Все функции» — там видны все объекты по типам. Физические имена можно получить обработкой с вызовом ПолучитьСтруктуруХраненияБазыДанных() при наличии права на выполнение внешнего кода.

Почему запрос выдаёт «Таблица не найдена», хотя объект есть в конфигурации?

Чаще всего перепутан тип объекта: например, написано Справочник.СтавкиНДС, хотя это перечисление. Проверьте ветку объекта в дереве метаданных и используйте именно имя, а не синоним.

Как узнать, какой таблице SQL соответствует регистр накопления?

Выполните ПолучитьСтруктуруХраненияБазыДанных() и найдите строку, где имя таблицы метаданных равно РегистрНакопления.ИмяРегистра. Колонка «ИмяТаблицыХранения» покажет физическое имя вида _AccumRg с номером.

Меняются ли физические имена таблиц при обновлении конфигурации?

Обычно нет, но при реструктуризации, загрузке конфигурации из файла или переносе базы платформа может переназначить идентификаторы. Поэтому физические имена нельзя фиксировать в сторонних скриптах — их нужно получать динамически.

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

Каждая табличная часть — отдельная физическая таблица, связанная с таблицей документа по ссылке. В запросах 1С она доступна как Документ.ИмяДокумента.ИмяТабличнойЧасти, а физическое имя смотрите в структуре хранения по назначению «Табличная часть».

Итог

Что важно запомнить

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