Imported from artamir/v8unpack_skills (
v8-cf-add-object/SKILL.md). Install upstream withnpx skills add artamir/v8unpack_skills --skill v8-cf-add-object. Copyright stays with the author.
v8-cf-add-object
Назначение
Скилл создаёт новые объекты метаданных 1С в исходниках распакованной конфигурации.
Поддерживаемые типы (и аналогичные им):
ConstantCatalogDocumentEnumInformationRegisterAccumulationRegisterReportDataProcessor- другие типы, для которых найден валидный шаблон
<Тип>.json
Алгоритм работы
- Определить тип создаваемого объекта и целевой проект (папка в
src/). - Найти шаблон существующего объекта этого же типа (или принять явно заданный шаблон).
- Загрузить JSON-шаблон и выполнить безопасную регенерацию GUID:
- заменить все UUID, кроме нулевого
00000000-0000-0000-0000-000000000000; - сохранять консистентность ссылок через карту старый UUID -> новый UUID.
- заменить все UUID, кроме нулевого
- Обновить бизнес-поля объекта:
name;name2.ru;comment(если задан).
- Сохранить объект в целевую структуру:
src/<Проект>/<Тип>/<ИмяОбъекта>/<Тип>.json.
- Для
Enumвыполнить дополнительные обязательные шаги (см. раздел ниже). - Для специальных случаев (например, расширенная настройка перечислений) использовать специализированные скрипты.
Критерии успешности
- Новый JSON-файл объекта создан в правильной папке типа.
- Структура JSON валидна и повторяет формат шаблона.
- Все технические GUID уникальны и согласованы внутри объекта.
- Имя и синоним заполнены согласно запросу.
- Для
Enum: Enum.id.json создан и UUID зарегистрирован в Configuration.json.
Пример использования
- "Создай константу ВалютаУчета в проекте NLTrade"
- "Добавь справочник Поставщики с русским синонимом Поставщики"
- "Создай документ ИнвойсПоставщика в NLTrade_invoice"
- "Создай перечисление СтатусыИнвойса"
Связанные скиллы
- v8-cf-v8pack
- v8-cf-v8unpack
- v8-cf-diff
Скрипт автоматизации для перечислений: tools/add_enum.py
Команды
Создание нового перечисления
python tools/add_enum.py new <Имя> <РусскоеИмя> <Знач1> [<Знач2> ...] [--project <путьКSrc>]
<Имя>— техническое имя (латиница/кириллица, без пробелов)<РусскоеИмя>— синоним<Знач1> ...— имена значений перечисления--project <путь>— путь к src-папке проекта (по умолчаниюsrc/NLTrade_invoice)
Пример:
python tools/add_enum.py new СтатусЗаказа "Статус заказа" Новый Подтверждён Выполнен Отменён --project src/NLTrade_invoice
Добавление значения в существующее перечисление
python tools/add_enum.py add <путьКEnum.json> <НовоеЗначение>
Что делает add_enum.py при создании нового перечисления
1. Создаёт Enum/<Имя>/Enum.json
Тело перечисления с внутренними UUID (сгенерированы заново), именем, синонимом и значениями.
2. Создаёт Enum/<Имя>/Enum.id.json
{"uuid": "<новый-внешний-uuid>"}
Внешний UUID — уникальный идентификатор объекта для 1С-платформы.
Он не совпадает ни с одним из UUID внутри Enum.json — это независимый идентификатор.
3. Регистрирует UUID в Configuration.json — секция 1 (список объектов)
Путь в JSON: header[0][4][1][1][17]
Структура массива:
[0] = "f6a80749-5ad7-400b-8519-39dc5dff2542" ← фиксированный UUID типа Enum
[1] = "166" ← счётчик (кол-во Enum-объектов в конфигурации)
[2] = "7a01a7c8-..." ← UUID первого Enum
[3] = "31cddd35-..." ← UUID второго Enum
...
[N] = "<новый-external-uuid>" ← добавляется в конец
Действия:
[1]увеличить на 1 (строка"166"→"167")- Добавить в конец списка новый внешний UUID
4. Регистрирует UUID в Configuration.json — секция 2 (versions)
Путь в JSON: versions[0]
Структура массива (плоский список пар, отсортированных по ключу):
[0] = "1" ← маркер структуры
[1] = "9173" ← счётчик пар
[2] = '""' ← ключ первой пары (пустая строка в кавычках)
[3] = uuid ← значение (UUID версии)
[4] = '"003c77a4-..."' ← ключ второй пары (UUID с экранированными кавычками)
[5] = uuid ← значение (UUID версии)
[6] = '"003c77a4-....0"' ← ключ (под-объект UUID.0)
[7] = uuid
...
Для нового Enum добавляется одна пара:
- Ключ:
'"<external-uuid>"'— UUID в экранированных кавычках (формат"\"UUID\""в JSON) - Значение: новый сгенерированный UUID (версия объекта)
Пара вставляется в отсортированную позицию (сортировка лексикографическая по ключу-строке).
Счётчик [1] увеличивается на 1.
Примечание: В отличие от объектов с вложенными sub-объектами (документы, справочники с формами),
у простых Enum нет суффиксных записей "UUID.0" в versions. Добавляется только одна пара.
Что НЕ изменяется при добавлении нового Enum
-
Role-файлы (
Role/<Роль>/Role.json,Role/<Роль>/Role.0.c1brace) — права ролей на Enum-объекты НЕ хранятся в виде UUID-ссылок в этих файлах. При загрузке конфигурации в 1С права на новое перечисление назначаются через конфигуратор вручную. -
Другие объекты конфигурации — добавление Enum не влечёт изменений в других объектах.
Проверка корректности
После создания перечисления в src и перепаковки CF:
- Загрузить CF в 1С через конфигуратор
- Убедиться что новое перечисление отображается в дереве метаданных
- Принять изменения конфигурации в базу данных