Подсистемы 1С: как найти объекты вне состава и пересечения

подсистемы 1Сархитектураметаданные

Практический разбор состава подсистем 1С через analyze_subsystems: объекты вне подсистем, принадлежность объекта и пересечения между корневыми ветками.

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

Инструмент analyze_subsystems появился в v2.26.0 MCP-1C. Он доступен в Открытой редакции и включён в Расширенную и Профессиональную. В платных редакциях готовая выгрузка служит источником дерева; без неё используется живой запрос к базе. Описание находится в справочнике analyze_subsystems, история развития — в релизах.

В статье: три действия, объекты вне подсистем, пересечения, решения по карте.

Три вопроса к составу конфигурации

Действие На какой вопрос отвечает
orphans Какие объекты не входят ни в одну подсистему
containing В какие подсистемы входит выбранный объект
intersections Какие объекты входят в несколько подсистем

Для конкретного документа начните с аргументов инструмента:

{
  "action": "containing",
  "object": "Документ.РеализацияТоваровУслуг"
}

Имя условное. Лучше передавать полное имя метаданных. Если короткое имя неоднозначно, инструмент возвращает все совпадения; object_type помогает уточнить вид объекта. Совпадение по короткому имени нельзя молча трактовать как один документ.

Объект вне подсистемы — повод разобраться

Вызов {"action":"orphans"} позволяет получить кандидатов для разбора. Проверка охватывает не только документы и справочники, но и служебные объекты, которые могут входить в подсистемы: общие модули, роли, сервисы, задания, подписки и другие объекты. Сами подсистемы и языки в эту выборку не входят.

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

Также не смешивайте состав подсистемы с фактической видимостью команды. На интерфейс влияют дополнительные настройки и права. Список принадлежности даёт структурный факт, который стоит проверить перед изменением навигации.

Найдите общие объекты разных веток

Для общей карты вызовите intersections. Если интересуют пересечения между корневыми ветками, добавьте фильтр:

{
  "action": "intersections",
  "cross_branch_only": true
}

Например, один справочник может входить в «Продажи» и «Закупки». Это часто соответствует общему справочному объекту, а не дублированию кода. У результата есть смысл лишь в контексте назначения объекта и ответственности за его изменение.

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

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

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

При живом подключении нужны соответствующие возможности установленного расширения 1С; поддержка анализа подсистем появилась в MCP_HTTPService 0.7.2. Для текущей установки следуйте инструкции обновления и требованиям вашей версии сервера.

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

Рядом пригодятся чтение структуры объектов и разбор прав по ролям.