1c-partial-cf — скилл

Скилл собирает маленький CF-файл с нужными объектами из выгрузки 1С, чтобы сравнение и объединение открывались за секунды

  • 28 ★ репозитория
  • Последний коммит
Скилл

Расширенный доступ

Почему такой уровень

  • Скрипт запускает `ibcmd` и пишет файлы CF и настройки объединения на диск.
  • Файл настроек `/MergeCfg` при ошибке выбора объектов может перезаписать в базе лишнее, поэтому объединение проверяют на копии.
Все причины и проверки
Российский стек

alonehobo/1c-partial-cf

Установка

В терминале, через 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-слияние

СкиллРасширенный доступ44Звезды репозитория
Российский стек

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

СкиллШирокий доступ129Звезды репозитория

Скиллы 1С для Claude Code

1C Skills for Claude Code

Выбор редакции

Набор скиллов для полного цикла разработки на 1С:Предприятие 8.3: от XML-исходников до публикации и тестов через веб-клиент

СкиллШирокий доступ781Звезды репозитория
Российский стек

Сборник скиллов для разработки на 1С под Codex и Claude Code: XML-исходники, формы, СКД, базы, веб-публикация и HTTP-мост для тестов

СкиллШирокий доступ62Звезды репозитория

Скиллы Claude Code для 1С

Claude Code Skills for 1C:Enterprise

Российский стек

Большой набор скиллов, правил и команд, с которыми агент собирает и разбирает исходники 1С по формату платформы, без Конфигуратора

СкиллРасширенный доступ93Звезды репозитория

Коротко о 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 минут.

Сообщить о проблеме