Собрать внешнюю обработку 1С (EPF/ERF) из XML-исходников. Используй когда пользователь просит собрать, скомпилировать обработку или получить EPF/ERF файл из исходников
Scanned 9/2/2026
Install to Claude Code
npx -y skills add Desko77/claude-code-skills-1c --skill 1c-epf-build --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of 1c Epf Build?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/desko77-1c-epf-build)More formats (shields.io, HTML) on the badges page.
---
name: 1c-epf-build
description: Собрать внешнюю обработку 1С (EPF/ERF) из XML-исходников. Используй когда пользователь просит собрать, скомпилировать обработку или получить EPF/ERF файл из исходников
argument-hint: <ProcessorName>
allowed-tools:
- Bash
- Read
- Glob
- Grep
---
# /epf-build - Сборка обработки
## Usage
```
/epf-build <ProcessorName> [SrcDir] [OutDir]
```
| Параметр | Обязательный | По умолчанию | Описание |
|---------------|:------------:|--------------|--------------------------------------|
| ProcessorName | да | - | Имя обработки (имя корневого XML) |
| SrcDir | нет | `src` | Каталог исходников |
| OutDir | нет | `build` | Каталог для результата |
## Параметры подключения (опционально)
Предпочтительно использовать конкретную базу - это надежнее и не требует создания временной базы.
1. Прочитай `.v8-project.json` из корня проекта. Возьми `v8path` и разреши базу:
2. Если пользователь указал параметры подключения (путь, сервер) - используй напрямую
3. Если указал базу по имени - ищи по id / alias / name в `.v8-project.json`
4. Если не указал - сопоставь текущую ветку Git с `databases[].branches`
5. Если ветка не совпала - используй `default`
6. Если `.v8-project.json` нет или база не найдена - не указывай параметры подключения: скрипт автоматически создаст временную базу. Для EPF со ссылочными типами (CatalogRef, DocumentRef и т.д.) генерируются заглушки метаданных. Временная база удаляется после сборки.
Если `v8path` не задан - автоопределение: `Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort -Desc | Select -First 1`
Если использованная база не зарегистрирована - после выполнения предложи добавить через `/db-list add`.
## Команда
```powershell
powershell.exe -NoProfile -File skills/1c-epf-build/scripts/epf-build.ps1 <параметры>
```
### Параметры скрипта
| Параметр | Обязательный | Описание |
|----------|:------------:|----------|
| `-V8Path <путь>` | нет | Каталог bin платформы (или полный путь к 1cv8.exe) |
| `-InfoBasePath <путь>` | * | Файловая база |
| `-InfoBaseServer <сервер>` | * | Сервер 1С (для серверной базы) |
| `-InfoBaseRef <имя>` | * | Имя базы на сервере |
| `-UserName <имя>` | нет | Имя пользователя |
| `-Password <пароль>` | нет | Пароль |
| `-SourceFile <путь>` | да | Путь к корневому XML-файлу исходников |
| `-OutputFile <путь>` | да | Путь к выходному EPF/ERF-файлу |
| `-StrictLog` | нет | Отказ в журнале поднимает код возврата до 1, даже если платформа вернула 0 |
| `-AdditionalV8Arguments <список>` | нет | Аргументы платформы через запятую, доходят и до временной базы |
> `*` - опционально. Если не указано - автоматически создается временная база со заглушками метаданных
## Примеры
```powershell
# Сборка обработки (файловая база)
powershell.exe -NoProfile -File skills/1c-epf-build/scripts/epf-build.ps1 -InfoBasePath "C:\Bases\MyDB" -SourceFile "src/МояОбработка.xml" -OutputFile "build/МояОбработка.epf"
# Серверная база
powershell.exe -NoProfile -File skills/1c-epf-build/scripts/epf-build.ps1 -InfoBaseServer "srv01" -InfoBaseRef "MyDB" -UserName "Admin" -Password "secret" -SourceFile "src/МояОбработка.xml" -OutputFile "build/МояОбработка.epf"
```
## После пересборки: кеш метаданных по имени файла
Платформа (по сообщениям, начиная с 8.3.11) кеширует метаданные внешней обработки, привязывая кеш к
**имени файла**. Пересобрал обработку под тем же именем - в сеансе может подхватиться структура из
кеша: новые реквизиты и команды "не видны", хотя в файле они есть. Лечится сменой UUID обработки при
пересборке либо новым именем файла.
**Своей проверкой это не подтверждено** - нужна живая платформа, в тестовом контуре набора ее нет.
Источник - свод правил проекта [1c-ai-dev-env](https://github.com/Pradushkoai/1c-ai-dev-env) (MIT).
Как проверить у себя: собрать обработку, открыть в сеансе, добавить реквизит, пересобрать под тем же
именем и открыть снова, не перезапуская сеанс. Реквизита нет - кеш есть.
## Дополнительные аргументы платформы
Аргумент, которого нет среди параметров навыка, передается ключом `-AdditionalV8Arguments`
списком через запятую: `-AdditionalV8Arguments "/UseHwLicenses+,/ClearCache"`. Разделитель
запятая, а не пробел, потому что значение аргумента платформы само содержит пробелы.
Постоянный набор задается в `.v8-project.json` рядом с проектом:
```json
{
"v8args": ["/UseHwLicenses+"],
"ibcmdargs": ["--verbose"]
}
```
Файл ищется вверх по дереву от целевого каталога. Аргументы вызова заменяют значение из
настроек целиком, а не дополняют его: иначе снять заданный в проекте аргумент было бы нечем.
## Вывод платформы
Потоки процесса перехватываются в файлы и печатаются под заголовком `--- Вывод платформы ---`.
Кодировка определяется по содержимому: платформа пишет в кодировке консоли (866 на русской
Windows), утилита администрирования и часть сборок - в UTF-8. Вывод показывается и при
успешном завершении: платформа сообщает предупреждения, не меняя код возврата.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!