1c-epf-build

Собрать внешнюю обработку 1С (EPF/ERF) из XML-исходников. Используй когда пользователь просит собрать, скомпилировать обработку или получить EPF/ERF файл из исходников

SKILL.md

GitHub

/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.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.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 (MIT). Как проверить у себя: собрать обработку, открыть в сеансе, добавить реквизит, пересобрать под тем же именем и открыть снова, не перезапуская сеанс. Реквизита нет - кеш есть.

Дополнительные аргументы платформы

Аргумент, которого нет среди параметров навыка, передается ключом -AdditionalV8Arguments списком через запятую: -AdditionalV8Arguments "/UseHwLicenses+,/ClearCache". Разделитель запятая, а не пробел, потому что значение аргумента платформы само содержит пробелы.

Постоянный набор задается в .v8-project.json рядом с проектом:

{
  "v8args": ["/UseHwLicenses+"],
  "ibcmdargs": ["--verbose"]
}

Файл ищется вверх по дереву от целевого каталога. Аргументы вызова заменяют значение из настроек целиком, а не дополняют его: иначе снять заданный в проекте аргумент было бы нечем.

Вывод платформы

Потоки процесса перехватываются в файлы и печатаются под заголовком --- Вывод платформы ---. Кодировка определяется по содержимому: платформа пишет в кодировке консоли (866 на русской Windows), утилита администрирования и часть сборок - в UTF-8. Вывод показывается и при успешном завершении: платформа сообщает предупреждения, не меняя код возврата.