Skip to main content
Glama

1c-meta — создание и правка метаданных 1С в выгрузке конфигуратора и проекте EDT

Инструмент для ИИ-агентов: создаёт и правит метаданные, формы и код BSL в выгрузке конфигуратора и в проекте 1C:EDT. Каналов два — командная строка (CLI) и MCP-сервер, задание у них одно. Инструмент пишет файлы выгрузки так же, как их пишет конфигуратор, и не даёт нарушить правила, которые иначе всплывают только при загрузке в базу.

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

Лицензия — MIT (LICENSE); сторонние компоненты — THIRD_PARTY_NOTICES.md.

Оглавление

Related MCP server: xbsl-mcp

Установка

Нужны Python 3.10 или новее (проверено на 3.13) и git в PATH. Пакеты:

py -3 -m pip install "lxml>=5.0"     # всегда: разбор и сборка файлов выгрузки
py -3 -m pip install "mcp>=1.29"     # только для MCP-сервера (pydantic придёт с ним)
py -3 -m pip install pytest ruff     # только для проверок

На Linux и macOS вместо py -3 — python3. Инструмент запускается из каталога репозитория как есть; пакетом для pip install он не оформлен. pyproject.toml хранит настройки ruff и pytest и метаданные проекта, а установка — как описано в этом разделе.

Для проекта 1C:EDT нужна ещё таблица метамодели EDT — порядок и умолчания свойств объектов и форм. В репозитории её нет: она снимается с моделей установленного 1C:EDT, на той машине, где инструмент работает:

py -3 tools/edt_model_from_xcore.py     # без аргумента — пул p2: %USERPROFILE%\.p2\pool\plugins

Получится meta/acl/edt_metamodel.py (в .gitignore). Без неё выгрузка конфигуратора работает полностью, у проекта EDT работают проверки и нормализация, а запись и показ отклоняются с этой же подсказкой. Таблицу снимают заново после обновления EDT и после обновления инструмента, если в нём менялся список моделей скрипта (так, с поддержкой расширения конфигурации в неё вошли модели расширения).

Выгрузка — каталог, который пишет конфигуратор командой «Конфигурация → Выгрузить конфигурацию в файлы». Результат загружается обратно командой «Загрузить конфигурацию из файлов» — целиком, а не частично (раздел «Ограничения»).

Быстрый старт

Командная строка

Задание — файл JSON: куда писать (repo — каталог выгрузки, где лежит Configuration.xml) и что сделать. Для пробы годится пустая выгрузка: скопируйте meta/tests/эталоны/формы/Configuration.xml в пустой каталог и укажите его в repo. Примеры дальше ссылаются и на типовые объекты (Справочник.Организации и другие) — в пустой выгрузке их нет, и такие ссылки получат ТИП-НЕТ, пока объекты не заведены. Справочник с одним реквизитом:

{"repo": "C:/путь/к/выгрузке/cf",
 "objects": [
   {"вид": "Справочник",
    "поля": {"имя": "мой_Пример", "синоним": "Пример",
             "реквизиты": [
               {"имя": "Комментарий", "синоним": "Комментарий",
                "тип": {"вид": "Строка", "длина": 100}}]}}]}

Сохраните его в UTF-8 как задание.json и посмотрите, что будет сделано, — на диск при этом не пишется ничего:

py -3 meta/add.py задание.json
Выгрузка: C:/путь/к/выгрузке/cf
Справочник мой_Пример
   замечаний нет
   синоним: Пример
   реквизиты: Комментарий «Комментарий» (Строка(100))
   (ещё 50 полей не названы в задании — значения по умолчанию; …)

План:
   создать  C:\путь\к\выгрузке\cf\Catalogs\мой_Пример.xml (6150 Б)
   изменить C:\путь\к\выгрузке\cf\Configuration.xml (станет … Б, было … Б)

Просмотр: ничего не записано. Для записи повторите с --apply.

План тот — записываем:

py -3 meta/add.py задание.json --apply

Ключи командной строки — в docs/cli.md.

MCP-сервер

Второй канал — тот же инструмент для агентов, у которых нет оболочки. Сервер подключается в настройках MCP-клиента; у Claude Code — файл .mcp.json проекта, ключ mcpServers:

{"mcpServers": {
  "1c-meta": {"type": "stdio", "command": "py",
              "args": ["-3", "C:\\путь\\к\\1c-meta\\meta\\mcp_server.py"],
              "env": {"META_ROOTS": "C:\\путь\\к\\проекту1\\cf;C:\\путь\\к\\проекту2\\cf",
                      "META_PROFILE": "C:\\путь\\к\\профиль.json"}}}}

py -3 — запуск Python на Windows; на Linux и macOS — "command": "python3" и путь к mcp_server.py без -3. Разделитель путей в META_ROOTS — «;».

META_ROOTS — белый список: сервер работает только с выгрузками из него, и на чтение, и на запись; без настройки отказ получает любой инструмент с repo, работает только справка fields. META_PROFILE — путь к профилю соглашений команды (docs/profile.md); без профиля соглашения нейтральные.

То же задание принимает MCP-сервер: metadata_check — просмотр, metadata_apply — запись (раздел «MCP-сервер для агентов»: там все инструменты сервера).

Что умеет

  • Объекты метаданных — 15 видов: создать сразу с содержимым (реквизиты, табличные части, измерения и ресурсы, права роли), добавить вложенную сущность, изменить свойство, удалить с поиском ссылок, переименовать со всеми ссылками, завести атомарные роли — docs/metadata.md.

  • Управляемые формы — новая или существующая форма: реквизиты, команды, элементы пятнадцати видов, обработчики; для типовой формы — код доработки вместо правки XML — docs/forms.md.

  • Код BSL вставками — метки с датой, задачей и автором, комментирование заменяемого кода, откат вставок задачи, переименование и перенос метода — docs/code.md.

  • Проверка правок задачи, нормализация формата файлов и сверка плана изменений с фактом — docs/verify.md.

  • Проект 1C:EDT и расширение конфигурации — docs/edt.md.

  • Внешние обработки и отчёты в их собственной выгрузке — docs/external.md.

  • Профиль соглашений команды — приставка, метки, атомарные роли, уровни правил — docs/profile.md.

Полная таблица операций — в docs/metadata.md.

Ограничения

  • Формат выгрузки — 2.21, то есть платформа 8.5. Выгрузку другого формата инструмент читает, но метаданные и формы в неё не пишет (раздел «Запуск»).

  • Загрузка обратно — только полная. Служебный ConfigDumpInfo.xml инструмент не правит: его пересобирает платформа при загрузке.

  • Заведено 15 видов объектов конфигурации из 43 (и внешние обработка с отчётом) и 15 видов элементов форм из 31; чего нет, перечислено в разделе «Чего нет».

  • Проект EDT поддерживается наравне с выгрузкой; оговорки — в разделе «Проект EDT».

  • Внешние обработка и отчёт — в своей выгрузке, без удаления и переименования; оговорки — в разделе «Внешняя обработка и отчёт».

Язык

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

Лицензия

MIT — LICENSE. Сторонние компоненты и их лицензии — THIRD_PARTY_NOTICES.md.

Related MCP Connectors

Related MCP Servers