/epf-build - Сборка обработки
Usage
/epf-build <ProcessorName> [SrcDir] [OutDir]
| Параметр | Обязательный | По умолчанию | Описание |
|---|---|---|---|
| ProcessorName | да | - | Имя обработки (имя корневого XML) |
| SrcDir | нет | src |
Каталог исходников |
| OutDir | нет | build |
Каталог для результата |
Параметры подключения (опционально)
Предпочтительно использовать конкретную базу - это надежнее и не требует создания временной базы.
- Прочитай
.v8-project.jsonиз корня проекта. Возьмиv8pathи разреши базу: - Если пользователь указал параметры подключения (путь, сервер) - используй напрямую
- Если указал базу по имени - ищи по id / alias / name в
.v8-project.json - Если не указал - сопоставь текущую ветку Git с
databases[].branches - Если ветка не совпала - используй
default - Если
.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. Вывод показывается и при
успешном завершении: платформа сообщает предупреждения, не меняя код возврата.