Skip to content

Исходники в формате 1С:EDT

Команды, работающие с каталогом исходников, понимают два формата:

  • XML-дамп Конфигуратора - классическая выгрузка (Configuration.xml в корне);
  • 1С:EDT - проект 1С:EDT (.project, каталог src/ с файлами *.mdo).

Платформа 1С не умеет читать формат EDT напрямую, поэтому vanessa-runner конвертирует EDT ⇄ XML утилитой 1cedtcli (поставляется с 1С:EDT), а затем подаёт XML в обычный конвейер. Конвертация прозрачна: каталог EDT определяется автоматически, временный XML создаётся и удаляется самостоятельно.

Поддержка по командам

КомандаВвод EDTВывод EDT
cf compile, cf load, infobase init-
cf decompile-
cfe compile, cfe load-
cfe decompile-
epf compile, epf decompile

Внешние обработки (epf) не являются EDT-проектом, поэтому формат EDT для них не поддерживается - при обнаружении EDT (или --src-format edt) команда завершится ошибкой.

Опции

ОпцияПеременная окруженияОписание
--src-format-Формат каталога: auto (по умолчанию), edt, xml
--edt-versionVRUNNER_EDT_VERSIONВерсия установленной EDT (например 2024.1) для выбора среди нескольких. Из неё определяется путь к 1cedtcli
--edt-workspaceVRUNNER_EDT_WORKSPACEБазовый каталог рабочей области EDT (по умолчанию - временный)
--edt-timeoutVRUNNER_EDT_TIMEOUTТаймаут операций 1cedtcli (export/import/validate) в секундах. По умолчанию 1cedtcli использует свой (60 с) - на больших конфигурациях его может не хватать

Таймаут на больших конфигурациях. Конвертация и проверка через 1cedtcli по умолчанию ограничены таймаутом в 60 секунд. Для тяжёлых конфигураций (1С:ERP и т. п.) экспорт/импорт не успевает завершиться - увеличьте таймаут опцией --edt-timeout (например --edt-timeout 5400) или переменной окружения VRUNNER_EDT_TIMEOUT.

Определение формата

При --src-format auto (по умолчанию) формат определяется по маркерам на диске:

  1. EDT - если в каталоге есть .project и исходники *.mdo (или служебный каталог DT-INF);
  2. XML - если есть Configuration.xml/ConfigDumpInfo.xml;
  3. если в каталоге лежит ровно один вложенный EDT-проект - используется он;
  4. иначе каталог считается XML.

--src-format edt|xml отключает автоопределение и форсирует формат.

Поиск 1cedtcli

Путь к 1cedtcli определяется в порядке приоритета:

  1. поиск установленной EDT по версии --edt-version (через библиотеку edtfind; без версии - берётся максимальная);
  2. поиск в PATH.

--edt-version - это версия 1С:EDT (например 2024.1), она не связана с версией платформы 1С (--v8version, например 8.3.24).

Инкрементальная загрузка из EDT

1cedtcli умеет только полный экспорт EDT → XML (нет частичной/инкрементальной выгрузки), а платформа не читает EDT напрямую. Поэтому при cf load --increment для EDT-исходников vanessa-runner:

  1. индексирует изменения по каталогу EDT-исходников (.mdo/.bsl/.form - стабильные файлы), а не по временному XML-дампу, который пересоздаётся при каждом экспорте;
  2. по диффу определяет изменённые объекты конфигурации (<Вид>/<Имя>, например Catalogs/Справочник1);
  3. выполняет полный экспорт EDT → XML, после чего грузит в базу только XML-файлы изменённых объектов.

Когда выполняется полная загрузка (а не выборочная):

  • при первом запуске (индекс ещё не построен);
  • при добавлении или удалении объектов/файлов под src/;
  • при изменении корня конфигурации (src/Configuration - состав метаданных, языки, общие настройки).

Если изменений в EDT-исходниках нет - загрузка пропускается целиком.

Выборочная загрузка применяется при модификации существующих объектов (правка модулей, форм, свойств) - это основной сценарий итеративной разработки.

bash
vrunner cf load ./edt-project --ibconnection /F./ib --increment --src-format edt

Примеры

bash
# Сборка cf из EDT-проекта (формат определится автоматически)
vrunner cf compile ./build/App.cf --s ./edt-project

# Форсировать формат EDT и выбрать конкретную версию EDT
vrunner cf compile ./build/App.cf --s ./edt-project \
  --src-format edt \
  --edt-version 2024.1

# Разобрать cf в EDT-проект (вывод в формате EDT)
vrunner cf decompile ./edt-out --cf-file ./build/App.cf --src-format edt

# Инициализация ИБ из EDT-проекта
vrunner infobase init --source ./edt-project --edt-version 2024.1

# Расширение из EDT-проекта
vrunner cfe compile ./build/Ext.cfe --s ./edt-ext --extension-name MyExt