Перейти к содержимому
XBSL (1C:Element)
Русский
Esc
↑↓navigate↵open⌘Jpreview
На этой странице

Данные платформы

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

Семантические правила, автодополнение и панель документации читают данные, извлечённые из дистрибутива. Эта страница – про сами данные: что ещё из них собирается и как разводятся версии.

Вариантность и аргументы обобщенных баз

Два необязательных раздела stdlib.json описывают связи обобщенных типов: type_param_variance хранит упорядоченный список режимов out, in или in_out; generic_bases связывает тип с его базами и формулами их аргументов. Формулы берутся из документированной иерархии, вариантность – только из однозначно прочитанных описаний среды. Неподдерживаемые описания пропускаются.

Для получения этих полей повторно извлеките stdlib. Правило style/redundant-union-member подставляет формулы и учитывает вариантность, в том числе у вложенных аргументов. Старый каталог, отсутствующая или поврежденная запись сохраняют консервативное инвариантное сравнение.

Поиск по документации

tools/extract_docs.py извлекает справку Элемента из дистрибутива – из .car сервера с IDE – в базу docs.sqlite рядом с данными языка. В базу попадают страницы stdlib с очищенным HTML: тип, его методы, свойства и параметры. Рядом ложится полнотекстовый индекс SQLite FTS5 из стандартной библиотеки и канонические ссылки на первоисточник вида https://1cmycloud.com/docs/help/... – адрес берётся из sitemap.xml дистрибутива. Картинки страниц сохраняются тут же. Справка 1С под охраной авторского права, поэтому базу не кладут в пакет: её генерируют из своего дистрибутива, как и данные языка. Кроме справочника типов в базу попадают остальные разделы меню сайта: руководства разработчика и администратора, свойства элементов проекта и компонентов интерфейса, схема процесса интеграции, язык запросов и глоссарий.

python tools/extract_docs.py --dist "$ELEMENT_DIST"

Базу docs.sqlite читает API xbsl.docs: search, page, tree, for_symbol, asset, а также чистые sections и summarize над HTML страницы. Если базы нет, поиск просто пуст. for_symbol не отвечает страницей справочников свойств и глоссария: их заголовки повторяют имена типов, членов и переменных, поэтому к таким страницам ведут поиск и дерево. На этом API работают инструменты MCP, а в дальнейшем будет работать и панель справки в расширении VS Code.

Снятые компоненты интерфейса

Необязательный раздел retired_components в stdlib.json хранит описания среды выполнения для компонентов, от которых в справке осталась снятая страница. Запись содержит term, namespace, baseType, предел совместимости to, типизированные свойства и имена событий из дистрибутива. Схема интерфейса использует запись только при совпадении имени со снятой страницей и наличии предела. Результат помечается source: runtime, retired: true и until.

Известные типы свойств и унаследованные свойства попадают в props. Известный ключ без типа или сигнатуры события остается в yaml_props; тип не угадывается. Для получения записей нужно повторно извлечь stdlib и uischema. Шаг uischema читает stdlib.json той версии, которую строит; в корне без него схема собирается без снятых компонентов, и шаг об этом предупреждает. Набор без нового раздела работает как раньше; текущая страница справки не заменяется описанием среды выполнения.

Запросы компонента и его свойств сохраняют эти определения для существующей разметки. Краткий каталог передает retired и until. Палитра вставки исключает снятые компоненты и контейнеры: допустимость их вставки в режиме текущего проекта не предполагается.

Значения перечислений метамодели

metamodel.json перечисляет значения всех перечислений, которыми типизированы свойства: enums хранит русские значения в том порядке, в каком их объявляет платформа, а enum_items – запись о каждом значении, то есть об элементе перечисления, как его называет платформа.

"enum_items": {
  "<перечисление>": {
    "<русское значение>": {"en": "<английское значение>", "since": "<режим>", "until": "<режим>"}
  }
}

en – английское написание в том виде, в каком его пишет само это перечисление. Плоская таблица пар держит не каждое слово: одно и то же русское значение у важности команды пишется Normal, а у важности избранного – Usual. translate и панель свойств английского проекта пишут значение по записи его собственного перечисления.

since – режим совместимости, в котором значение появилось, until – последний режим, в котором оно еще есть; значение без них есть в любом режиме. Режимы берутся из скомпилированных классов платформы и из ее таблицы языков: файлы модели значений не датируют. Панель свойств предлагает только значения, которые допускает режим проекта, а значение, уже записанное в файле, показывает при любом режиме. MCP metadata_schema отдает ограничения в enum_modes.

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

Версии Элемента

Данные версионированы по версии платформы:

xbsl/data/element/
    index.json            # { available: [...], default: "<версия>" }
    <версия>/{language.json, stdlib.json, metamodel.json}

Версию выбирают ключом --element-version, переменной окружения XBSL_ELEMENT_VERSION или полем default из индекса. Что доступно, показывает --version. Новая версия появляется от повторного запуска xbsl extract с новым --dist. Версией по умолчанию индекс делает самую новую, а повторная генерация старой версии умолчание не двигает.

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

Что изменилось в платформе между двумя версиями данных, показывает xbsl data-diff [старая] [новая]. Без аргументов он сравнивает версию по умолчанию с ближайшей более старой. В отчет идут все файлы версии: каталог stdlib (типы и члены, а также остальное – обработчики модулей, сигнатуры, доступность, конструкторы, параметры типов, устаревшие члены, снятые компоненты), свойства метамодели, компоненты и их свойства, пары терминов, написания интерфейса (uiterms.json), словарь компилятора (terms_full.json) и страницы документации: появившиеся, снятые, переименованные и те, у которых изменилось содержимое, – страницы сравниваются по хешу. Раздел без собственного сравнения сравнивается по записям, поэтому раздел, который добавит новый экстрактор, из отчета не выпадет. --format md пишет полный отчет в Markdown, --format json – машинный вид, а в текстовом виде у каждого списка – число и первые записи, не больше --limit; --limit 0 выводит все. Члены типов сравниваются с развернутым наследованием, и изменение поднимается к корню иерархии: добавка в базовом типе не повторяется у каждого наследника. Так же сравниваются сигнатуры, базовые типы и другие разделы, которые хранятся по типам.

Сам корень данных ищется по порядку: ключ --data-dir, переменная окружения XBSL_DATA_DIR, корень из установленной точки расширения xbsl.data, затем xbsl/data/element внутри пакета.

Общее хранилище

xbsl data-pack ИСТОЧНИК РЕЗУЛЬТАТ строит общее поколение данных. Повторяющиеся факты словаря, определения свойств и страницы справки используют неизменяемые записи каталога. Картинка хранится один раз по SHA-256, а прежний логический путь сохраняется в манифесте версии.

index.json выбирает каталог и неизменяемые манифесты версий. Чтение старого каталога с отдельными JSON и SQLite остается доступным. xbsl data-export ИСТОЧНИК РЕЗУЛЬТАТ восстанавливает прежний формат для старых потребителей. Ответы Python, LSP и MCP сохраняют прежнюю форму.

xbsl data-pack old-data packed-data
xbsl data-verify packed-data
xbsl data-export packed-data legacy-copy
xbsl data-prune packed-data
xbsl data-prune packed-data --apply

data-prune только показывает неиспользуемые сгенерированные объекты, пока не указан --apply. Текущие зависимости не удаляются. Файлы, удерживаемые Windows, отмечаются как отложенные. Обновление выбранных версий через повторяемый data-pack --version сохраняет остальные версии результата. Извлечение в упакованный корень использует временное старое представление и публикует индекс только после успешного завершения.

В каталоге хранятся канонические факты и пересобираемые сжатые представления JSON. Последние уменьшают стоимость запуска; data-verify сверяет их с каноническими определениями. Полнотекстовые индексы разделены по версиям и используют общее содержимое. Поэтому ранжирование опирается на прежний набор документов и идентификаторы строк.

Последнее обновление 2 октября 2026 г.

Эта страница была полезной?