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

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

Объекты метаданных в 1С: что это и как они устроены

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

Объект метаданных в 1С — это описание структуры прикладного решения: платформа хранит не сами документы и справочники, а их «чертёж», по которому строит таблицы базы данных, формы, отчёты и права доступа. Когда разработчик добавляет в конфигураторе справочник «Номенклатура», он создаёт именно объект метаданных, а реальные товары, которые введёт пользователь, будут данными этого объекта.

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

Материал ориентирован на начинающих разработчиков 1С и администраторов, которые хотят понимать, что происходит внутри конфигурации. Разберём классификацию объектов, их роль в работе системы, типовые ошибки при изменении структуры и способы безопасной доработки.

Что такое метаданные и чем они отличаются от данных

Метаданные — это «данные о данных». В контексте 1С это совокупность описаний: какие справочники есть в системе, какие у них реквизиты, какого они типа и длины, какие документы могут делать движения по регистрам, какие роли дают доступ к объектам. Всё это разработчик видит в дереве конфигурации в конфигураторе.

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

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

Классификация объектов метаданных

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

Объекты для хранения данных

  • Справочники — условно-постоянная нормативная информация: контрагенты, номенклатура, сотрудники. Поддерживают иерархию, владельцев, предопределённые элементы.
  • Документы — факты хозяйственной деятельности, привязанные ко времени. Могут проводиться и формировать движения по регистрам.
  • Регистры сведений — хранилища произвольных данных в разрезе измерений (курсы валют, цены, штрихкоды).
  • Регистры накопления — остатки и обороты: товары на складах, деньги, взаиморасчёты.
  • Регистры бухгалтерии — проводки по плану счетов.
  • Регистры расчёта — начисления и удержания по плану видов расчёта.
  • Планы счетов, планы видов характеристик, планы видов расчёта, планы обмена — специализированные справочные структуры.
  • Бизнес-процессы и задачи — маршруты согласования и списки поручений.

Объекты для обработки и представления

  • Отчёты и обработки — алгоритмы анализа и изменения данных, не хранят учётных данных сами.
  • Подсистемы — логическое разбиение функциональности для командного интерфейса.
  • Роли — наборы прав на объекты; назначаются пользователям.
  • Общие модули, общие формы, макеты, картинки — переиспользуемые ресурсы конфигурации.
  • Константы — единственные значения на всю базу (наименование организации, валюта учёта).

Отдельно стоят сервисные объекты: журналы документов, последовательности, критерии отбора, HTTP-сервисы и веб-сервисы, регламентные задания. Они не хранят учётные данные, но определяют поведение системы.

Как платформа превращает метаданные в структуру базы данных

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

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

В конфигураторе посмотреть состав любого объекта можно двойным щелчком: откроется окно редактирования с закладками «Данные» (реквизиты, табличные части), «Движения» (регистры-получатели), «Права», «Поля ввода по строке» и другими. Это первый инструмент диагностики при изучении чужой конфигурации.

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

Стандартные реквизиты и свойства объектов

У каждого объекта метаданных есть набор стандартных (системных) реквизитов, которые платформа создаёт автоматически. У справочников это «Ссылка», «Код», «Наименование», «ПометкаУдаления», «Предопределенный»; у документов — «Ссылка», «Номер», «Дата», «Проведен»; у регистров — «Период», «Регистратор», «НомерСтроки». Удалить или переименовать их нельзя — можно лишь настроить длину кода и наименования, тип номера, периодичность нумерации.

Пользовательские реквизиты разработчик добавляет сам, выбирая тип: примитивный (строка, число, дата, булево), ссылочный (ссылка на другой объект) или составной. Составные типы удобны, но создают в базе более сложные структуры хранения и могут замедлять запросы — при возможности лучше ограничивать тип одним-двумя реально используемыми видами ссылок.

Индексы реквизитов настраиваются свойством «Индексировать». Индекс ускоряет поиск и отбор по реквизиту, но замедляет запись и увеличивает размер базы. Ставить индекс стоит на реквизиты, по которым реально выполняются отборы и соединения в запросах.

Справочник или регистр сведений

Справочник

Подходит, когда нужна ссылка на объект из других документов, иерархия, код и наименование. Ограничение: изменение элемента требует блокировки объекта.

Регистр сведений

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

Изменение метаданных: реструктуризация и риски

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

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

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

Типичные ошибки
01
Удаление 'неиспользуемого' реквизита без поиска ссылок на него — в коде остаются обращения, и база падает с ошибкой при выполнении
02
Составной тип реквизита 'на всякий случай' из десятка видов ссылок — раздувает таблицы и замедляет запросы
03
Изменение типовых объектов вместо расширения — конфигурация снимается с поддержки, обновления становятся ручными
04
Индексация всех реквизитов подряд — запись документов замедляется, а выигрыша в отборах нет
05
Редактирование метаданных напрямую в рабочей базе без тестирования на копии — ошибка проявляется у пользователей в момент проведения

Обращение к метаданным из встроенного языка

Встроенный язык 1С позволяет работать с метаданными программно через глобальную коллекцию Метаданные. Это используется в универсальных обработках, выгрузках, проверках структуры. Например, получить описание справочника можно так:

МетаСправочник = Метаданные.Справочники.Найти("Номенклатура");

Если МетаСправочник <> Неопределено Тогда

Для Каждого Реквизит Из МетаСправочник.Реквизиты Цикл

Сообщить(Реквизит.Имя + " : " + Строка(Реквизит.Тип));

КонецЦикла;

КонецЕсли;

Объект Метаданные доступен только на сервере и в толстом клиенте; в тонком и веб-клиенте прямой доступ к нему закрыт. Поэтому универсальные алгоритмы, анализирующие структуру конфигурации, размещают в серверных общих модулях.

Через метаданные также проверяют наличие объекта перед обращением к нему — это стандартный приём при написании кода, который должен работать в конфигурациях с разным составом (типично для расширений и внешних обработок).

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

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

Сохранение конфигурации
Норма

Проверка конфигурации завершается без ошибок

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

Ошибки компиляции модулей — есть обращения к удалённым объектам

Окно реструктуризации
Норма

В списке только добавление таблиц и полей

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

Есть пункты об удалении или изменении типа полей с данными

Работа пользователей после обновления
Норма

Документы проводятся, отчёты открываются

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

Ошибки 'Поле не найдено' — реквизит переименован, но код не исправлен

Практические рекомендации по проектированию

При создании новых объектов исходите из природы данных: если нужна ссылка из других объектов — справочник; факт во времени с проведением — документ; значение в разрезе измерений — регистр сведений; остатки и обороты — регистр накопления. Неправильный выбор на старте потом дорого исправлять: перенос данных между объектами разных типов — отдельный проект.

Имена объектов и реквизитов давайте осмысленные, без сокращений и транслита: они попадут в запросы, модули и представления пользователю. Синоним заполняйте всегда — именно его видит пользователь в интерфейсе.

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

Маршрут решения

Как выбрать способ доработки

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

Частые вопросы об объектах метаданных

Чем объект метаданных отличается от объекта базы данных?

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

Где посмотреть список всех объектов метаданных конфигурации?

В конфигураторе: Конфигурация → Открыть конфигурацию — дерево слева и есть полный список. Программно состав доступен через коллекцию Метаданные. Также полезна команда Конфигурация → Параметры для просмотра общих настроек конфигурации.

Можно ли удалить объект метаданных без потери данных?

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

Что такое предопределённые элементы и зачем они нужны?

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

Почему после изменения конфигурации пользователи не видят изменений?

Изменения сохранены в конфигурации, но не применены к базе данных. Нужно выполнить Конфигурация → Обновить конфигурацию базы данных. Также проверьте, не работаете ли вы с конфигурацией поставщика или расширением, которое не подключено к базе.

Как узнать, какие роли дают доступ к объекту?

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

Итог

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

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