Разработка и Конфигурация · 10 мин
Метаданные в 1С: что это такое и примеры объектов
Метаданные в 1С — что это такое простыми словами, примеры объектов метаданных, зачем они нужны разработчику и как работать с ними в конфигураторе.
Метаданные в 1С — это описание структуры конфигурации: какие объекты в ней есть, какие у них реквизиты, табличные части, формы и движения. Проще говоря, метаданные — это «данные о данных»: не сами документы и справочники с записями, а их устройство, заданное разработчиком в конфигураторе.
Когда вы открываете конфигуратор и видите дерево объектов — «Справочники», «Документы», «Регистры накопления» — вы смотрите именно на метаданные. Изменение метаданных (например, добавление нового реквизита в документ) меняет структуру базы, а не содержимое записей.
Понимание метаданных критично для любой доработки: без него невозможно грамотно добавить реквизит, написать обработку, которая обходит все документы, или разобраться в чужой конфигурации. Ниже разберём, что входит в метаданные, как выглядит конкретный пример и как обращаться к метаданным из кода.
Что такое метаданные в 1С простыми словами
Представьте бланк накладной: в нём есть поля «Поставщик», «Дата», таблица с товарами. Сам бланк — это метаданные, а заполненная им накладная — данные. В 1С всё устроено аналогично: разработчик в конфигураторе описывает «бланки» (объекты метаданных), а пользователи заполняют их реальными записями.
Метаданные хранятся в конфигурации и определяют, как платформа будет хранить информацию в базе: какие таблицы создать в СУБД, какие поля в них будут, какие индексы построить. При обновлении конфигурации базы данных платформа сравнивает метаданные с текущей структурой базы и приводит её в соответствие.
Из каких объектов состоят метаданные
Все объекты метаданных видны в дереве конфигурации. Основные группы, с которыми работают чаще всего:
- Справочники — хранят условно-постоянную информацию: номенклатуру, контрагентов, склады.
- Документы — отражают события хозяйственной жизни: поступление, реализацию, начисление зарплаты.
- Регистры (накопления, сведений, расчёта, бухгалтерии) — накапливают итоги и хранят разрезы учёта.
- Перечисления — фиксированные списки значений, например «Виды оплат».
- Планы видов характеристик, планы счетов, планы видов расчёта — задают аналитику и виды расчёта.
- Отчёты и обработки — инструменты анализа и пакетной работы с данными.
- Общие объекты — модули, роли, подсистемы, константы, общие реквизиты.
У каждого объекта есть собственный состав: реквизиты (поля), табличные части, стандартные реквизиты (код, наименование, номер, дата), формы, макеты, команды. Например, у регистра сведений есть измерения, ресурсы и реквизиты — это тоже метаданные.
Пример метаданных на практике
Конкретный пример: в конфигурации есть объект метаданных «Документ.РеализацияТоваровУслуг». Его метаданные описывают:
- стандартные реквизиты — номер, дата, признак проведения;
- реквизиты шапки — «Контрагент», «Договор», «Склад», «Организация»;
- табличную часть «Товары» с колонками «Номенклатура», «Количество», «Цена», «Сумма»;
- движения — регистры, по которым документ проводится (например, «ОстаткиТоваров» и «Продажи»);
- формы документа и списка, макеты печатных форм.
Всё это — метаданные. А каждый конкретный проведённый документ «Реализация № 15 от 12 марта» — это данные, созданные по описанной структуре. Если разработчик добавит в метаданные новый реквизит «Комментарий», у всех существующих документов появится это поле (пустое), потому что изменилась структура хранения.
Как посмотреть и изменить метаданные в конфигураторе
Для работы с метаданными нужен конфигуратор и права на изменение конфигурации. Типовой порядок действий при добавлении нового реквизита:
- 1Откройте конфигуратор и выполните «Конфигурация — Открыть конфигурацию»
- 2В дереве объектов найдите нужный объект, например «Документы — РеализацияТоваровУслуг»
- 3Откройте ветку «Реквизиты» и добавьте новый реквизит, указав имя и тип
- 4Включите реквизит в форму документа, чтобы пользователи его видели
- 5Выполните «Конфигурация — Обновить конфигурацию базы данных» (F7) и подтвердите реструктуризацию
- 6Проверьте в режиме предприятия, что поле появилось и сохраняется
При обновлении конфигурации базы данных платформа показывает окно реструктуризации — список изменений структуры таблиц. Внимательно читайте его: удаление реквизита из метаданных приведёт к удалению колонки и потере хранившихся в ней значений.
Обращение к метаданным из кода
Во встроенном языке есть глобальный объект Метаданные, через который программно получают описание конфигурации. Это используют в универсальных обработках: например, чтобы вывести список всех документов или проверить, есть ли у объекта нужный реквизит.
Для Каждого МетаДокумент Из Метаданные.Документы Цикл
Сообщить(МетаДокумент.Имя + " — " + МетаДокумент.Синоним);
КонецЦикла;
// Проверка наличия реквизита у объекта
Мета = ДокументСсылка.Метаданные();
Если Мета.Реквизиты.Найти("Комментарий") <> Неопределено Тогда
// реквизит есть, можно обращаться
КонецЕсли;Типовые приёмы: Метаданные.НайтиПоТипу(ТипЗнч(Ссылка)) позволяет по ссылке узнать, какому объекту она принадлежит; Метаданные.Справочники.Номенклатура.Реквизиты — получить коллекцию реквизитов.
Метаданные в расширениях и типовых конфигурациях
Если конфигурация типовая и находится на поддержке, прямое изменение метаданных снимает объекты с полной поддержки и усложняет обновления. Современная альтернатива — расширения конфигурации: они добавляют собственные объекты метаданных и заимствуют типовые, не меняя основную конфигурацию.
Расширение подключается в режиме предприятия через «Администрирование — Печатные формы, отчеты и обработки — Расширения» и применяется без реструктуризации исходной конфигурации (хотя добавленные расширением реквизиты всё же создают свои таблицы). Это безопасный путь для доработок, которые должны переживать обновления.
Сравнение вариантов
Подходит для собственных или снятых с поддержки конфигураций. Минус — усложняет обновление типовых решений
Подходит для типовых конфигураций на поддержке: доработки сохраняются при обновлении. Ограничение — не все объекты и изменения доступны в расширениях
Пользовательский механизм без конфигуратора: реквизит хранится в отдельном регистре. Подходит для простых полей, но уступает по скорости и удобству отборов
Как проверить результат изменения метаданных
После обновления конфигурации базы данных убедитесь, что изменения применились корректно и ничего не сломалось.
Как проверить результат
Список изменений соответствует задуманному: только добавленные объекты и реквизиты
В списке есть удаление таблиц или полей, которое вы не планировали
Новый реквизит виден, заполняется и сохраняется после перезаписи
Поле отсутствует на форме или значение пропадает после записи
Проведение работает, движения формируются как раньше
Ошибки при проведении, отсутствуют движения по регистрам
У ролей есть доступ к новому объекту или реквизиту
Пользователи видят ошибку «Нарушение прав доступа»
Дополнительно полезно выполнить тестирование и исправление информационной базы в режиме проверки логической целостности — это выявит рассинхронизацию структуры после нештатных обновлений.
Частые вопросы о метаданных 1С
Чем метаданные отличаются от данных?
Метаданные — это описание структуры (какие объекты есть, какие у них поля), данные — сами записи, созданные по этой структуре. Метаданные меняются в конфигураторе, данные — в режиме предприятия. Удаление реквизита из метаданных удаляет и соответствующие данные.
Можно ли посмотреть метаданные без конфигуратора?
Да, программно через объект «Метаданные» во встроенном языке, а также через внешние инструменты: EDT, инструменты разработчика и специализированные обработки, которые выводят структуру конфигурации в пользовательском режиме.
Где физически хранятся метаданные?
В файловой базе — внутри файла 1Cv8.1CD, в клиент-серверном варианте — в служебных таблицах СУБД. Напрямую редактировать их там нельзя: только через конфигуратор или механизмы загрузки конфигурации.
Что произойдёт с данными при изменении типа реквизита?
При реструктуризации платформа попытается преобразовать значения к новому типу. Несовместимые значения будут потеряны, а при сужении длины строки — обрезаны. Перед таким изменением обязательно делайте резервную копию и проверяйте результат на копии базы.
Зачем в коде проверять наличие реквизита через Метаданные.Реквизиты.Найти()?
Это защищает универсальный код от ошибок: обработка, рассчитанная на разные конфигурации, сначала убеждается, что реквизит существует, и только потом обращается к нему. Иначе при отсутствии поля возникнет ошибка обращения к свойству объекта.
Что важно запомнить
Метаданные — это описание структуры конфигурации: объекты, реквизиты, табличные части и связи, а не сами записи. Изменяются они только в конфигураторе с обновлением конфигурации базы данных и всегда после резервной копии. Из кода структуру читают через объект «Метаданные», а для доработки типовых решений предпочтительны расширения конфигурации.