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

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

Метаданные в 1С: что это такое и примеры объектов

Метаданные в 1С — что это такое простыми словами, примеры объектов метаданных, зачем они нужны разработчику и как работать с ними в конфигураторе.

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

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

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

Что такое метаданные в 1С простыми словами

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

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

Из каких объектов состоят метаданные

Все объекты метаданных видны в дереве конфигурации. Основные группы, с которыми работают чаще всего:

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

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

Пример метаданных на практике

Конкретный пример: в конфигурации есть объект метаданных «Документ.РеализацияТоваровУслуг». Его метаданные описывают:

  • стандартные реквизиты — номер, дата, признак проведения;
  • реквизиты шапки — «Контрагент», «Договор», «Склад», «Организация»;
  • табличную часть «Товары» с колонками «Номенклатура», «Количество», «Цена», «Сумма»;
  • движения — регистры, по которым документ проводится (например, «ОстаткиТоваров» и «Продажи»);
  • формы документа и списка, макеты печатных форм.

Всё это — метаданные. А каждый конкретный проведённый документ «Реализация № 15 от 12 марта» — это данные, созданные по описанной структуре. Если разработчик добавит в метаданные новый реквизит «Комментарий», у всех существующих документов появится это поле (пустое), потому что изменилась структура хранения.

Как посмотреть и изменить метаданные в конфигураторе

Для работы с метаданными нужен конфигуратор и права на изменение конфигурации. Типовой порядок действий при добавлении нового реквизита:

Порядок действий
  1. 1
    Откройте конфигуратор и выполните «Конфигурация — Открыть конфигурацию»
  2. 2
    В дереве объектов найдите нужный объект, например «Документы — РеализацияТоваровУслуг»
  3. 3
    Откройте ветку «Реквизиты» и добавьте новый реквизит, указав имя и тип
  4. 4
    Включите реквизит в форму документа, чтобы пользователи его видели
  5. 5
    Выполните «Конфигурация — Обновить конфигурацию базы данных» (F7) и подтвердите реструктуризацию
  6. 6
    Проверьте в режиме предприятия, что поле появилось и сохраняется

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

Обращение к метаданным из кода

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

bsl
Для Каждого МетаДокумент Из Метаданные.Документы Цикл
  Сообщить(МетаДокумент.Имя + " — " + МетаДокумент.Синоним);
КонецЦикла;

// Проверка наличия реквизита у объекта
Мета = ДокументСсылка.Метаданные();
Если Мета.Реквизиты.Найти("Комментарий") <> Неопределено Тогда
  // реквизит есть, можно обращаться
КонецЕсли;

Типовые приёмы: Метаданные.НайтиПоТипу(ТипЗнч(Ссылка)) позволяет по ссылке узнать, какому объекту она принадлежит; Метаданные.Справочники.Номенклатура.Реквизиты — получить коллекцию реквизитов.

Типичные ошибки
01
Путать метаданные и данные: попытка «найти документ» через коллекцию Метаданные.Документы — там только описания, а не ссылки
02
Изменять метаданные прямо в рабочей базе без копии — при ошибке реструктуризации восстановление возможно только из резервной копии
03
Удалять «ненужный» реквизит без анализа — вместе с ним удаляются все накопленные значения
04
Использовать обращение к Метаданные в цикле по тысячам записей без кэширования — это замедляет код
05
Забывать добавить новый реквизит на форму — поле есть в структуре, но пользователи его не видят

Метаданные в расширениях и типовых конфигурациях

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

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

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

Изменение основной конфигурации

Подходит для собственных или снятых с поддержки конфигураций. Минус — усложняет обновление типовых решений

Расширение конфигурации

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

Дополнительные реквизиты и сведения

Пользовательский механизм без конфигуратора: реквизит хранится в отдельном регистре. Подходит для простых полей, но уступает по скорости и удобству отборов

Как проверить результат изменения метаданных

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

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

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

Окно реструктуризации при обновлении
Норма

Список изменений соответствует задуманному: только добавленные объекты и реквизиты

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

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

Режим предприятия, форма объекта
Норма

Новый реквизит виден, заполняется и сохраняется после перезаписи

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

Поле отсутствует на форме или значение пропадает после записи

Отчёты и движения документа
Норма

Проведение работает, движения формируются как раньше

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

Ошибки при проведении, отсутствуют движения по регистрам

Права пользователей
Норма

У ролей есть доступ к новому объекту или реквизиту

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

Пользователи видят ошибку «Нарушение прав доступа»

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

Частые вопросы о метаданных 1С

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

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

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

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

Где физически хранятся метаданные?

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

Что произойдёт с данными при изменении типа реквизита?

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

Зачем в коде проверять наличие реквизита через Метаданные.Реквизиты.Найти()?

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

Итог

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

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