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

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

Что такое метаданные конфигурации 1С

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

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

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

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

Из чего состоят метаданные конфигурации

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

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

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

Чем метаданные отличаются от данных и конфигурации базы данных

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

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

Кроме того, в 1С существует разделение на основную конфигурацию (конфигурацию разработчика, которую правят в конфигураторе) и конфигурацию базы данных (рабочую структуру, с которой реально работают пользователи). Изменения метаданных в конфигураторе не применяются к базе, пока не выполнена команда «Обновить конфигурацию базы данных».

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

Где посмотреть и как изменить метаданные

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

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

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

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

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

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

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

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

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

Важно понимать: через Метаданные получают только описание, а не сами записи. Чтобы прочитать данные, нужно использовать запросы или объектные методы (Справочники.Номенклатура.НайтиПоКоду() и т.п.), опираясь на структуру, заданную метаданными.

Как метаданные связаны с базой данных

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

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

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

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

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

Список изменений соответствует вашим правкам, нет неожиданных удалений

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

Платформа собирается удалить объекты или реквизиты, которые вы не трогали

Режим предприятия после обновления
Норма

Объекты открываются, новые реквизиты видны и сохраняются

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

Ошибки при открытии форм или записи объектов

Запуск под пользователями
Норма

Все роли имеют доступ к новым объектам

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

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

Типичные ошибки и ограничения при работе с метаданными

Большинство проблем с метаданными возникает не из-за сложности механизма, а из-за невнимательности к последствиям изменений. Ниже — то, что чаще всего ломает базы и усложняет поддержку.

Типичные ошибки
01
Снятие типовой конфигурации с поддержки ради мелкой доработки — затрудняет все последующие обновления; используйте расширения
02
Удаление «ненужных» реквизитов без анализа — значения удаляются из всех записей безвозвратно
03
Переименование объектов без учёта внешних обработок и обменов — обмены по именам объектов перестают работать
04
Обновление конфигурации БД на рабочей базе в разгар дня — длительная реструктуризация блокирует пользователей
05
Игнорирование окна реструктуризации — платформа молча удалит то, что вы не заметили в списке
06
Изменение типа реквизита без проверки существующих данных — часть значений теряется при конвертации

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

Когда достаточно расширения, а когда нужна правка конфигурации

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

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

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

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

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

Итог

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

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

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

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

Частично — да. Из режима предприятия структуру видно через код с использованием объекта Метаданные, а также через универсальные обработки и отчёты по структуре конфигурации. Полноценное редактирование доступно только в конфигураторе.

Что произойдёт, если удалить объект метаданных?

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

Чем расширение конфигурации отличается от внешней обработки?

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

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

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

Как программно узнать, есть ли у документа нужный реквизит?

Через объект метаданных: получите описание по полному имени (Метаданные.НайтиПоПолномуИмени("Документ.РеализацияТоваровУслуг")) и проверьте коллекцию Реквизиты методом Найти(). Это стандартный приём для универсального кода, работающего с разными конфигурациями.

Влияет ли количество объектов метаданных на производительность?

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