1c-partial-cf — скилл
Скилл собирает маленький CF-файл с нужными объектами из выгрузки 1С, чтобы сравнение и объединение открывались за секунды
- 28 ★ репозитория
- Последний коммит
Расширенный доступ
Почему такой уровень
- Скрипт запускает `ibcmd` и пишет файлы CF и настройки объединения на диск.
- Файл настроек `/MergeCfg` при ошибке выбора объектов может перезаписать в базе лишнее, поэтому объединение проверяют на копии.
Установка
- Работает в
- Сервисы
В терминале, через SkillFoxx CLI
npx skillfoxx add skills/1c-partial-cfОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Скрипт запускает `ibcmd` и пишет файлы CF и настройки объединения на диск.
- Файл настроек `/MergeCfg` при ошибке выбора объектов может перезаписать в базе лишнее, поэтому объединение проверяют на копии.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Скрипт `partial_cf.py` берет XML-выгрузку конфигуратора и собирает CF, где выбранные объекты лежат целиком вместе с формами, модулями и макетами, а их исходные UUID сохранены. Объекты, на которые ссылаются метаданные выбранных, попадают как заглушки с тем же UUID, а корень и подсистема `_Перенос` строятся заново. Рядом записываются список заглушек и файл настроек `/MergeCfg`, где выбранные объекты берутся из файла, а заглушки не меняют базу. Объекты задают списком через `--objects` или по git через `--since`. Для переноса только своих правок модулей работают `--patch` и `--methods`: изменения накладываются патчем на модули выгрузки базы-получателя. Базу скилл не меняет, объединение выполняет человек в конфигураторе или пакетно по явной команде.
Для кого. 1С-разработчикам, которые правят конфигурацию в XML-выгрузке и переносят изменения в базу, не загружая всю конфигурацию
Подходит, если
- Поправили несколько объектов в выгрузке, и перенос в базу должен открыться за секунды.
- Из общего модуля нужно перенести только свои методы, не трогая чужие доработки.
- Коммиты задачи надо собрать в CF для объединения с базой-получателем.
- Окно сравнения и объединения слишком долго строится на полной конфигурации.
Не подходит, если
- Нужна полная сборка CF, расширение CFE, внешняя обработка или файл обновления CFU.
- Платформы 1С с `ibcmd` на машине нет: без нее CF не собрать.
- Надо удалить объект в базе: CF удаление не переносит, это делают вручную.
Пример запроса к агенту
Собери маленькую CF из выгрузки только с документом РеализацияТоваровУслуг и справочником НоменклатураОграничения
Нужны Python 3.8 или новее на одной стандартной библиотеке, платформа 1С с `ibcmd` и git, если объекты выбирают через `--since`. Файлы выгрузки должны лежать на диске. Перенос патчами проверен только пакетным `/MergeCfg`, а если база изменилась после выгрузки для `--target`, объединение откажет целиком. Объекты выбираются на верхнем уровне, реквизит или форму отдельно не взять. Удаление объектов CF не переносит.
Как отключить. Удалите каталог `1c-partial-cf` из каталога скиллов. Собранные файлы CF и `.merge-settings.xml` удаляют вручную.
Частые вопросы
Как выбрать объекты для CF?
Списком через `--objects`, например `Document.РеализацияТоваровУслуг Catalog.Номенклатура`, или по git через `--since HEAD`: тогда берутся измененные с ревизии и новые объекты.
Что такое заглушки в CF?
Это объекты, на которые ссылаются выбранные: у них тот же UUID, но модулей нет, а настройки объединения не дают им менять базу.
Можно перенести только изменения модуля?
Да, `--patch` и `--methods` накладывают патч на модули выгрузки базы-получателя, переданной через `--target`.
Какие версии Python и платформы нужны?
Python 3.8 или новее на одной стандартной библиотеке и платформа 1С с `ibcmd`. Скрипт работает в Windows и Linux.
Что делает скилл с моей базой?
Базу скилл не меняет. Объединение запускает человек в конфигураторе или пакетно по явной команде.
Обсуждение
Вопросов и отзывов пока нет.
Скилл обновляет доработанную типовую конфигурацию 1С на новый релиз поставщика через трехстороннее git-слияние
1c-enterprise-skill: разработка конфигураций 1С из XML и BSL
1c-enterprise-skill
Скилл с линтером и шаблонами: агент создает и правит конфигурации 1С 8.3 в исходниках XML и BSL без ручного ввода в Конфигураторе
Скилл пакетных операций с платформой 1С: сборка и разборка обработок, загрузка и выгрузка конфигураций и расширений, запуск базы
Скиллы 1С для Claude Code
1C Skills for Claude Code
Набор скиллов для полного цикла разработки на 1С:Предприятие 8.3: от XML-исходников до публикации и тестов через веб-клиент
Скиллы 1С для ИИ-агентов
1C Skills for AI Agents
Сборник скиллов для разработки на 1С под Codex и Claude Code: XML-исходники, формы, СКД, базы, веб-публикация и HTTP-мост для тестов
Скиллы Claude Code для 1С
Claude Code Skills for 1C:Enterprise
Большой набор скиллов, правил и команд, с которыми агент собирает и разбирает исходники 1С по формату платформы, без Конфигуратора
Коротко о README
README объясняет, что попадает в CF: объекты, заглушки, корень и подсистема `_Перенос`. Затем описывает выбор объектов, перенос только изменений модулей и требования к окружению.
Бейдж для README
Исходный SKILL.md
--- name: 1c-partial-cf description: Маленькая CF из выгрузки конфигурации 1С (XML конфигуратора) только с нужными объектами и их исходными UUID — для быстрого «Сравнить, объединить с конфигурацией из файла» или пакетного /MergeCfg. Используй, когда пользователь поправил или добавил объекты в выгрузке и хочет перенести их в базу, просит «собрать маленькую CF», «CF для объединения», «перенести изменения выгрузки в базу», «перенести только свои изменения модуля или метода, не затрагивая чужие». Не используй для полной сборки CF, расширений (CFE), внешних обработок и файлов обновления поставки (CFU). --- # 1c-partial-cf Скрипт `scripts/partial_cf.py` рядом с этим файлом собирает CF, в которой: - **выбранные объекты** — целиком (формы, модули, макеты, справка) с исходными UUID; - **заглушки** — объекты, на которые ссылаются метаданные выбранных (типы реквизитов, регистры движений, владельцы, определяемые типы, картинки, стили и команды форм, таблицы и поля запросов динамических списков — с вложенными запросами и временными таблицами, `ОБЪЕДИНИТЬ`, `ВЫБОР`/`ВЫРАЗИТЬ`, ресурсами виртуальных таблиц, `.Ссылка.`/`.Регистратор.`/`.Владелец.`, общими реквизитами, — `ЗНАЧЕНИЕ()` в запросах модулей, колонки таблиц и деревьев значений формы, набор констант): тот же UUID и сгенерированные типы, а из состава — только то, на что ссылаются, и без чего платформа не загрузит объект; - **корень** — тот же UUID, имя, языки и режим совместимости; - **подсистема `_Перенос`** — в составе только выбранные объекты. Рядом с CF скрипт пишет `<имя>.merge-settings.xml` — настройки `/MergeCfg`: выбранные объекты берутся из файла; корень и `_Перенос` — `DoNotMerge`, заглушки — `MergePrioritizingMainConfiguration` (приоритет базы), а их модули, модули сохраненных команд и форм и урезанный состав функциональной опции — `DoNotMerge`: модулей заглушки в CF нет. Так заглушка базу не меняет — проверено сравнением выгрузки базы до и после `/MergeCfg` (8.3.27), в том числе когда модули базы отличаются от выгрузки. Без явного правила платформа объединяет и неперечисленное: корень терял `Ext/ClientApplicationInterface.xml`, заглушка затирала объект в базе, модуль заглушки добавлял в базу методы и перевод строки; заглушки с `DoNotMerge` большая конфигурация отвергает как «неразрешимые ссылки». **Перенос только своих изменений модулей (`--patch`).** С `--since` объект, у которого изменены только модули (объекта, менеджера, набора записей, общего модуля, формы, команды), переносится не целиком, а патчем каждого измененного модуля: в настройках у модуля `Patch` (unidiff), остальное в объекте — от базы, неизмененные формы, команды и макеты — `DoNotMerge`. Изменения задачи — от `--since` до `--until` (без него — рабочее дерево); задача из нескольких коммитов среди чужих — ее коммиты подряд или отдельная ветка. Объект, где изменено что-то кроме модулей, или новый объект идет целиком (`patched_whole`). - `--target <выгрузка базы>` — выгрузка базы-получателя (полная или `ibcmd infobase config export objects`): изменения задачи накладываются на ее модули (`git merge-file`), правки базы сохраняются. Пересечение с правками базы (в том числе соседние строки) — отказ до сборки: `conflicts`, файлы с маркерами `<<<<<<< база` / `>>>>>>> задача` — в `conflicts_folder`. Без `--target` патч строится на модуле как в `--since`: если в базе эти строки или их окружение изменены, `/MergeCfg` откажет («Методы, к которым не применились изменения: …») и не изменит ничего. - `--methods` — только изменения этих методов (`--patch` включается сам): `CommonModule.Модуль.Метод`, `Document.Д.ObjectModule.Метод` (также `ManagerModule`, `RecordSetModule`, `ValueManagerModule`), `Document.Д.Form.Форма.Метод`, `Document.Д.Command.Команда.Метод`, `CommonForm.Форма.Метод`, `CommonCommand.Команда.Метод`. Метод — заголовок, тело и комментарии и директивы прямо над ним; прочие изменения не переносятся (`patch_skipped`). - Патч применяется строго: если база изменилась после выгрузки для `--target`, `/MergeCfg` откажет целиком. Перенос патчами проверен только пакетным `/MergeCfg`. Нужны Python 3.8+ (только стандартная библиотека), платформа 1С с `ibcmd` и, для `--since`, git. Работает в Windows и Linux: `ibcmd` ищется в `Program Files\1cv8\<версия>\bin` и `/opt/1cv8/<арх>/<версия>`. ## Что выяснить у пользователя - Каталог выгрузки (там лежит `Configuration.xml`). - Какие объекты переносить: - `--objects` — `Вид.Имя` верхнего уровня на английском: `Document.РеализацияТоваровУслуг`, `Catalog.Номенклатура`, `CommonModule.ОбщегоНазначения`. Реквизит или форма не выбираются — только объект целиком; - или `--since <ревизия git>` — объекты, файлы которых изменены с ревизии, и новые неотслеживаемые. Для незакоммиченной правки — `--since HEAD`. Можно и то и другое сразу. - Переносить объекты целиком или только изменения модулей (`--patch`, `--methods`); если только изменения — есть ли выгрузка базы-получателя для `--target`. - Путь к CF (`--out`). - Версию платформы, если их несколько и нужна конкретная (`--platform 8.3.27`); иначе берется самая новая. Путь к `ibcmd` можно задать явно (`--ibcmd`). ## Запуск ``` python <каталог скилла>/scripts/partial_cf.py --export <выгрузка> --out <файл.cf> --since HEAD python <каталог скилла>/scripts/partial_cf.py --export <выгрузка> --out <файл.cf> --objects Document.А Catalog.Б python <каталог скилла>/scripts/partial_cf.py --export <выгрузка> --out <файл.cf> --since <начало задачи> --until <конец задачи> --patch --target <выгрузка базы> python <каталог скилла>/scripts/partial_cf.py --export <выгрузка> --out <файл.cf> --since HEAD --target <выгрузка базы> --methods CommonModule.ОбщегоНазначения.Метод ``` В Windows при необходимости `py -3` вместо `python`; в Linux — `python3`. Файлы выгрузки должны быть сохранены на диск. Отбор объектов занимает секунды (крупный документ с сотнями заглушек — до минуты), упаковка в CF через `ibcmd` — до минуты; давай команде 10 минут.