Инициализация проекта 1С:Элемент
Перед созданием Проект.xbsl прочитай docs/xbsl-spec.md.
Шаг 0: Собери параметры
Из запроса пользователя определи:
| Параметр | Обязательный | Дефолт |
|---|---|---|
Поставщик |
Да | — |
ИмяПроекта |
Да | — |
Представление |
Нет | {ИмяПроекта} |
ИмяПодсистемы |
Нет | Основное |
Версия |
Нет | 1.0 |
РежимСовместимости |
Нет | 10.0 |
ВидПроекта |
Нет | приложение; для библиотеки или расширения укажи явно |
РасширяемыеПроекты |
Нет | отсутствуют (универсальное расширение) |
ПользовательскиеСоглашения |
Нет | отсутствуют |
Если Поставщик или ИмяПроекта не указаны — спроси пользователя.
Примечание: если проект использует библиотеки —
РежимСовместимостидолжен совпадать со всеми библиотеками.
Режим совместимости не равен версии технологии
РежимСовместимости — параметр проекта в Проект.yaml. Его формат —
<major>.<minor>, например 9.1. technology-version — отдельный параметр
приложения в облаке; он содержит точную сборку, например 9.2.9-12.
- Если пользователь явно указал режим, сохраняй его без подмены.
- Если режим не указан, для нового проекта с целевой платформой 10.0
используй
10.0. Это дефолт скилла, а не утверждение о дефолте платформы. Справочник 10.0 подтверждает режимРежимСовместимости.Версия10_0. - Не выводи
РежимСовместимостиизtechnology-versionи не сравнивай их полные строки: пара9.1и9.2.9-12сама по себе не является доказанным конфликтом. - До создания файлов проверь формат режима отдельно. При несоответствии
<major>.<minor>остановись с диагностикойxbsl-init.compatibility_mode_format. Сборщикxbsl-deploy/scripts/build.pyповторяет эту fail-closed проверку до создания.xasm. - Корректный формат не доказывает, что конкретный режим поддержан. Проверяй
допустимость отдельно по документации выбранной технологии или ответу
платформы. Если платформа отклонила режим, покажи оба значения и точную
ошибку, затем запроси явное решение. Не изменяй
Проект.yamlавтоматически.
Шаг 1: Проверь конфликт
Убедись, что проект с таким именем ещё не существует:
find . -name "Проект.yaml" -not -path "*/.claude/*"
Если найден файл в директории {Поставщик}/{ИмяПроекта}/ — сообщи об этом и остановись.
Шаг 2: Сгенерируй UUID
Вызови скилл xbsl-uuid с N=1. Сохрани результат как {ПроектУИД}.
Шаг 3: Создай файлы
Создай три файла:
{Поставщик}/{ИмяПроекта}/Проект.yaml
Ид: {ПроектУИД}
Представление: "{Представление}"
Версия: {Версия}
Поставщик: {Поставщик}
Имя: {ИмяПроекта}
ПредставлениеПоставщика: "{Поставщик}"
РежимСовместимости: {РежимСовместимости}
ЯзыкиЛокализации: [Русский]
ЯзыкПоУмолчанию: Русский
ЯзыкРазработки: Русский
Важно: не добавляй поле
ВидЭлемента— его нет вПроект.yaml.Если пользователь создаёт библиотеку — добавь строку после
Ид:yaml ВидПроекта: БиблиотекаЕсли создаётся расширение для Element 10.0 — добавь
ВидПроекта: РасширениепослеИд. Для универсального расширения не добавляйРасширяемыеПроекты: оно содержит только собственные подсистемы. Для расширения конкретного проекта добавь кПроект.yamlсписок по подтверждённому формату:yaml РасширяемыеПроекты: - Поставщик: acme Имя: ОсновноеПриложение Версии: От: Версия: 1.0 До: Версия: 2.0 Включать: ЛожьУточни у пользователя имена расширяемых проектов и нужный диапазон, если запрос подразумевает изменение существующих объектов. Не выдумывай версии. Если расширяемых проектов несколько, для подсистемы-расширения обязательно укажиРасширяемаяПодсистема; для универсального расширения не создавай подсистему-расширение. Для неё используется файлПодсистема.Расширение.yaml; свойства самой расширяемой подсистемы менять нельзя. Проверяй тип добавляемых элементов по перечню в ограничениях расширений 10.0. Структура расширения 10.0.
Пользовательские соглашения (target 10.0+)
Свойство ПользовательскиеСоглашения опционально для проекта приложения. По схеме проекта 10.0 это массив значений Ссылка|Ресурс: ссылка может быть абсолютной или относительной к клиентскому приложению; файл должен иметь формат txt, pdf или html. При входе и самостоятельной регистрации платформа показывает ссылку на соглашение внизу формы. Проекту с ВидПроекта: Библиотека свойство задавать нельзя.
Не добавляй поле в стандартный scaffold и не записывай пустой массив. Если пользователь просит соглашение по ссылке, получи адрес и наименование, затем добавь языковую запись для ЯзыкПоУмолчанию:
ПользовательскиеСоглашения:
- Вид: Ссылка
Русский:
Наименование: Условия использования
Значение: https://example.com/terms
Для соглашения из файла помести txt, pdf или html в каталог ресурсов подсистемы. Файл должен быть виден из описания проекта, поэтому задай область видимости ВПроекте. Проверенный пример для файла Основное/Ресурсы/Соглашение.txt:
# Проект.yaml
ПользовательскиеСоглашения:
- Вид: Ресурс
Русский:
Наименование: Условия использования
Значение: Основное::Соглашение.txt
# Основное/Ресурсы/Ресурсы.yaml
ОбластьВидимости: ВПроекте
Ресурсы.yaml — специальное описание ресурсов: поле ВидЭлемента в нём не указывай. Ключ Русский в обоих примерах соответствует ЯзыкПоУмолчанию: Русский; соглашение без записи на языке по умолчанию платформа отклоняет. При другом языке по умолчанию проверь его языковое поле в целевой версии. Оба примера прошли создание и запуск отдельного приложения в Element 10.0.2-19, затем были выгружены через Console API без изменения YAML. После добавления соглашений повторно валидируй Проект.yaml и сборку на целевой технологии. Новое в 10.0, ресурсы проекта.
{Поставщик}/{ИмяПроекта}/Проект.xbsl
// @НастройкаПриложения(Ид = "НастройкаПриложения", Номер = 1)
// метод НастройкаПриложения(НоваяВерсия: Версия)
// TODO Раскомментируйте метод и вставьте код обработчика. Метод с таким Ид будет выполнен только один раз!
// ;
// @ОбновлениеПроекта(Ид = "КонвертацияДанных", Номер = 1)
// метод КонвертацияДанных(ИсходнаяВерсия: Версия, ЦелеваяВерсия: Версия)
// TODO Раскомментируйте метод и вставьте код обработчика. Метод с таким Ид будет выполнен только один раз!
// ;
{Поставщик}/{ИмяПроекта}/{ИмяПодсистемы}/Подсистема.yaml
Для расширения эта подсистема собственная, а не подсистема-расширение.
Интерфейс:
ВключатьВАвтоИнтерфейс: Истина
Шаг 4: Выведи итог
Сообщи пользователю созданные пути:
Проект создан:
{Поставщик}/{ИмяПроекта}/Проект.yaml
{Поставщик}/{ИмяПроекта}/Проект.xbsl
{Поставщик}/{ИмяПроекта}/{ИмяПодсистемы}/Подсистема.yaml
Если создавалось обычное приложение:
Следующий шаг: создай объекты метаданных через xbsl-meta-add
Если создавалась библиотека (ВидПроекта: Библиотека):
⚠️ Библиотека: этот проект нельзя развернуть как самостоятельное приложение —
платформа не поддерживает деплой библиотек. Библиотека подключается через
`Импорт` в другой проект.
Следующий шаг: добавь объекты через xbsl-meta-add, затем подключи библиотеку
к нужному приложению через поле `Импорт` в Подсистема.yaml или .xbsl файле.
Если создавалось расширение (ВидПроекта: Расширение):
Сообщи, что проект расширения имеет отдельный жизненный цикл: собери его в
среде разработки Element 10.0, затем подключи сборку на вкладке «Расширение»
в форме обновления нужного приложения. Проверь наличие и версии всех
РасширяемыеПроекты; порядок расширений влияет на применение изменений и
обработчики обновления. Скрипт xbsl-deploy/scripts/build.py пока не создаёт
архив расширения: формат его выгрузки не описан в документации 10.0.
Управление расширениями.