An open API service indexing awesome lists of open source software.

https://github.com/arkuznetsov/1cfilesconverter

Cкрипты для конвертации файлов 1С между различными форматами (Binary, XML, EDT)
https://github.com/arkuznetsov/1cfilesconverter

1c 1c-edt 1c-enterprise edt

Last synced: 3 months ago
JSON representation

Cкрипты для конвертации файлов 1С между различными форматами (Binary, XML, EDT)

Awesome Lists containing this project

README

        

[![GitHub release](https://img.shields.io/github/release/ArKuznetsov/1CFilesConverter.svg?style=flat-square)](https://github.com/ArKuznetsov/1CFilesConverter/releases)
[![GitHub license](https://img.shields.io/github/license/ArKuznetsov/1CFilesConverter.svg?style=flat-square)](https://github.com/ArKuznetsov/1CFilesConverter/blob/develop/LICENSE)
[![GitHub Releases](https://img.shields.io/github/downloads/ArKuznetsov/1CFilesConverter/latest/total?style=flat-square)](https://github.com/ArKuznetsov/1CFilesConverter/releases)
[![GitHub All Releases](https://img.shields.io/github/downloads/ArKuznetsov/1CFilesConverter/total?style=flat-square)](https://github.com/ArKuznetsov/1CFilesConverter/releases)

# Набор скриптов для конвертации файлов 1С между различными форматами (бинарные файлы, XML, EDT)

Цель - упростить использование инструментов конвертации до вызова одного скрипта с парой параметров.

Скрипты расположены в каталоге [scripts](./scripts)

Примеры и шаблоны производных (вспомогательных) скриптов расположениы в каталоге [examples](./examples), описание [README.md](./examples/readme.md).

* [Необходимые инструменты](#tools)
* [Переменные среды](#environment)
* [Скрипты конвертации](#scripts)
* [Автоматический разбор конфигураций, расширений, внешних отчетов и обработок (watchman)](#watchman)
* [Тесты](#tests)

## Необходимые инструменты

* [Платформа 1С:Предприятие 8.3](https://releases.1c.ru/project/Platform83)
* [Java runtime environment 11](https://releases.1c.ru/project/Liberica11FullJDK)
* [1C:Enterprise Development Tools (EDT)](https://releases.1c.ru/project/DevelopmentTools10)
* Утилита ring (входит в состав EDT)
* Утилита 1C:EDT CLI (входит в состав EDT)
* [watchman](https://facebook.github.io/watchman/docs/install) - для [автоматической конвертации файлов при изменении](#watchman) (рекомендуется прописать в переменную окружения `%PATH%`)

## Переменные среды

* **V8_VERSION** - используемая версия платформы 1С:Предприятие
* **V8_EDT_VERSION** - используемая версия 1C:EDT (если не указано, то ожидается использование единственной установленной версии)
* **V8_ENCODING** - кодировка вывода лога (по умолчанию: `65001`)
* **V8_TEMP** - путь к каталогу для создания временных файлов в процессе конвертации (по умолчанию: `%TEMP%\1c`)
* **V8_CONVERT_TOOL** - инструмент для конвертации файлов конфигурации/расширения (по умолчанию: `designer`):
* **designer** - для конвертации используется пакетный режим конфигуратора
* **ibcmd** - для конвертации используется утилита администрирования автономного сервера
* **V8_TOOL** - путь к исполняемому файлу 1С:Предприятие `1Cv8.exe` (по умолчанию: `%PROGRAMW6432%\1cv8\%V8_VERSION%\bin\1cv8.exe`)
* **IBCMD_TOOL** - путь к утилите управления автономным сервером `ibcmd` (по умолчанию: `%PROGRAMW6432%\1cv8\%V8_VERSION%\bin\ibcmd.exe`)
* **RING_TOOL** - путь к утилите ring из состава EDT (по умолчанию берется из переменной окружения `%PATH%`)
* **EDTCLI_TOOL** - путь к утилите 1cedtcli из состава EDT (по умолчанию ищется в каталоге `%PROGRAMW6432%\1C\1CE\components\1c-edt-%V8_EDT_VERSION%*`)
* **IBCMD_DATA** - путь к каталогу данных автономного сервера при использовании утилиты `ibcmd` (по умолчанию `%V8_TEMP%\ibcmd_data`)
* **V8_SKIP_ENV** - если установлена в `1`, то отключает чтение переменных среды из файла `.env`
* **V8_CONF_CLEAN_DST** - если установлена в `1`, то перед конвертацией конфигурации каталог назначения будет очищен
* **V8_EXT_CLEAN_DST** - если установлена в `1`, то перед конвертацией расширения каталог назначения будет очищен
* **V8_DP_CLEAN_DST** - если установлена в `1`, то перед конвертацией обработок/отчетов каталог назначения будет очищен

Значения переменных среды могут быть указаны в файле `.env` в текущем рабочем каталоге, пример приведен в файле [tests/example.env](./tests/example.env)

Переменная среды **V8_SKIP_ENV** позволяет отключить чтение переменных среды из файла `.env`: `V8_SKIP_ENV=1`

## Скрипты конвертации

### [conf2ib.cmd](./scripts/cf2ib.cmd)

Выполняет загрузку конфигурации из указанного источника в информационную базу.

Источником может выступать:

* Файл выгрузки конфигурации (cf)
* Каталог выгрузки конфигурации в файлы (xml)
* Каталог проекта 1C:Enterprise Development Tools (EDT)

Параметры:

* Путь к источнику конфигурации (переменная среды `%V8_SRC_PATH%`)
* Путь к информационной базе (переменная среды `%V8_DST_PATH%`)
* Для файловой информационной базы может указываться в одном из 2-х вариантов `"<путь к базе>"` или `"/F<путь к базе>"`
* Для серверной информационной базы может указываться в виде `"/S<имя сервера>\<путь к базе>"`, где <имя сервера>:
* при выгрузке с использованием пакетного режима конфигуратора (designer) - имя сервера 1С:Предприятие
* при выгрузке с использованием утилиты `ibcmd` - имя сервера СУБД
* Флаг создания новой информационной базы - если указано значение `create`, то будет создана новая информационная база, в противном случае будет выполнена загрузка конфигурации в существующую базу

Результат:

* Информационная база с загруженной исходной конфигурацией

```txt

Для указания инструмента конвертации необходимо установить переменную среды `%V8_CONVERT_TOOL%.
По умолчанию используется пакетный режим конфигуратора.

```

```txt

ВНИМАНИЕ! При использовании ibcmd могут возникать ошибки загрузки конфигурации из XML-файлов, если в пути к файлам присутствует `..`, т.е. рекомендуется указывать полные пути.

Проверялось на версии 8.3.20.2290, 8.3.23.1865, 8.3.23.2040

```

### [conf2cf.cmd](./scripts/conf2cf.cmd)

Выполняет конвертацию конфигурации из указанного источника в бинарный CF-файл.

Источником может выступать:

* Файловая информационная база
* Серверная информационная база
* Каталог выгрузки конфигурации в файлы (xml)
* Каталог проекта 1C:Enterprise Development Tools (EDT)

Параметры:

* Путь к источнику конфигурации (переменная среды `%V8_SRC_PATH%`)
* Для файловой информационной базы может указываться в одном из 2-х вариантов `"<путь к базе>"` или `"/F<путь к базе>"`
* Для серверной информационной базы может указываться в виде `"/S<имя сервера>\<путь к базе>"`, где <имя сервера>:
* при выгрузке с использованием пакетного режима конфигуратора (designer) - имя сервера 1С:Предприятие
* при выгрузке с использованием утилиты `ibcmd` - имя сервера СУБД
* Путь к файлу конфигурации (cf) (переменная среды `%V8_DST_PATH%`)

В случае выгрузки из серверной информационной базы и использовании утилиты `ibcmd` дополнительно требуется указать переменные среды:

* **V8_DB_SRV_DBMS** - тип сервера СУБД (MSSQLServer, PostgreSQL, IBMDB2, OracleDatabase) (опционально, по умолчанию: MSSQLServer)
* **V8_DB_SRV_USR** - пользователь сервера СУБД
* **V8_DB_SRV_PWD** - пароль пользователя сервера СУБД

Результат:

* Файл выгрузки исходной конфигурации (cf)

```txt

Для указания инструмента конвертации необходимо установить переменную среды `%V8_CONVERT_TOOL%.
По умолчанию используется пакетный режим конфигуратора.

```

```txt

ВНИМАНИЕ! При использовании ibcmd могут возникать ошибки загрузки конфигурации из XML-файлов, если в пути к файлам присутствует `..`, т.е. рекомендуется указывать полные пути.

Проверялось на версии 8.3.20.2290, 8.3.23.1865, 8.3.23.2040

```

### [conf2xml.cmd](./scripts/conf2xml.cmd)

Выполняет выгрузку конфигурации из указанного источника в формат выгрузки конфигуратора (XML).

Источником может выступать:

* Путь к файлу конфигурации (cf)
* Файловая информационная база
* Серверная информационная база
* Каталог проекта 1C:Enterprise Development Tools (EDT)

Параметры:

* Путь к источнику конфигурации (переменная среды `%V8_SRC_PATH%`)
* Для файловой информационной базы может указываться в одном из 2-х вариантов `"<путь к базе>"` или `"/F<путь к базе>"`
* Для серверной информационной базы может указываться в виде `"/S<имя сервера>\<путь к базе>"`, где <имя сервера>:
* при выгрузке с использованием пакетного режима конфигуратора (designer) - имя сервера 1С:Предприятие
* при выгрузке с использованием утилиты `ibcmd` - имя сервера СУБД
* Путь к каталогу выгрузки файлов конфигурации (переменная среды `%V8_DST_PATH%`)

Если перед выгрузкой необходимо очистить каталог назначения, то требуется установить переменную среды `V8_CONF_CLEAN_DST`=1.

В случае выгрузки из серверной информационной базы и использовании утилиты `ibcmd` дополнительно требуется указать переменные среды:

* **V8_DB_SRV_DBMS** - тип сервера СУБД (MSSQLServer, PostgreSQL, IBMDB2, OracleDatabase) (опционально, по умолчанию: MSSQLServer)
* **V8_DB_SRV_USR** - пользователь сервера СУБД
* **V8_DB_SRV_PWD** - пароль пользователя сервера СУБД
* **V8_CONVERT_TOOL** - тип конвертации 'ibcmd'
* **IBCMD_DATA** - путь к рабочему каталогу `ibcmd`. Если не указан, то создается во временных файлах.

Результат:

* Каталог, содержащий XML-файлы выгрузки исходной конфигурации

```txt

Для указания инструмента конвертации необходимо установить переменную среды `%V8_CONVERT_TOOL%.
По умолчанию используется пакетный режим конфигуратора.

```

### [conf2edt.cmd](./scripts/conf2edt.cmd)

Выполняет выгрузку конфигурации из указанного источника в проект 1C:Enterprise Development Tools (EDT).

Источником может выступать:

* Путь к файлу конфигурации (cf)
* Файловая информационная база
* Серверная информационная база
* Каталог выгрузки конфигурации в файлы (xml)

Параметры:

* Путь к источнику конфигурации (переменная среды `%V8_SRC_PATH%`)
* Для файловой информационной базы может указываться в одном из 2-х вариантов `"<путь к базе>"` или `"/F<путь к базе>"`
* Для серверной информационной базы может указываться в виде `"/S<имя сервера>\<путь к базе>"`, где <имя сервера>:
* при выгрузке с использованием пакетного режима конфигуратора (designer) - имя сервера 1С:Предприятие
* при выгрузке с использованием утилиты `ibcmd` - имя сервера СУБД
* Путь к каталогу проекта EDT (переменная среды `%V8_DST_PATH%`)

Для указания базовой конфигурации и информационной базы для выгрузки можно указать переменные среды

Если перед выгрузкой необходимо очистить каталог назначения, то требуется установить переменную среды `V8_CONF_CLEAN_DST`=1.

В случае выгрузки из серверной информационной базы и использовании утилиты `ibcmd` дополнительно требуется указать переменные среды:

* **V8_DB_SRV_DBMS** - тип сервера СУБД (MSSQLServer, PostgreSQL, IBMDB2, OracleDatabase) (опционально, по умолчанию: MSSQLServer)
* **V8_DB_SRV_USR** - пользователь сервера СУБД
* **V8_DB_SRV_PWD** - пароль пользователя сервера СУБД

Результат:

* Каталог, содержащий проект 1C:Enterprise Development Tools (EDT) исходной конфигурации

```txt

Для указания инструмента конвертации необходимо установить переменную среды `%V8_CONVERT_TOOL%.
По умолчанию используется пакетный режим конфигуратора.

```

### [dp2epf.cmd](./scripts/dp2epf.cmd)

Выполняет конвертацию внешних отчетов и обработок в бинарный формат (epf/erf).

Источником может выступать:

* Путь к основному файлу внешнего отчета или обработки в формате выгрузки конфигуратора (XML)
* Каталог внешних отчетов и обработок формате выгрузки конфигуратора (XML)
* Каталог проекта 1C:Enterprise Development Tools (EDT)

Параметры:

* Путь к источнику внешних отчетов и обработок (переменная среды `%V8_SRC_PATH%`)
* Путь к каталогу для сохранения бинарных файлов внешних отчетов и обработок (переменная среды `%V8_DST_PATH%`)

Если перед выгрузкой необходимо очистить каталог назначения, то требуется установить переменную среды `V8_DP_CLEAN_DST`=1.

Для указания базовой конфигурации и информационной базы для выгрузки можно указать переменные среды:

* **V8_BASE_IB** - путь к служебной информационной для выполнеия выгрузки (если не указан, будет использована временная файловая информационная база)
* Для файловой информационной базы может указываться в одном из 2-х вариантов `"<путь к базе>"` или `"/F<путь к базе>"`
* Для серверной информационной базы может указываться в виде `"/S<имя сервера>\<путь к базе>"`, где <имя сервера>:
* при выгрузке с использованием пакетного режима конфигуратора (designer) - имя сервера 1С:Предприятие
* при выгрузке с использованием утилиты `ibcmd` - имя сервера СУБД
* **V8_BASE_CONFIG** - путь к конфигурации в любом из форматов (CF, XML, EDT) (если не указан, будет использована либо конфигурация из `V8_BASE_IB`, либо пустая конфигурация)

Результат:

* Каталог, содержащий бинарные файлы исходных внешних отчетов (epf) и обработок (erf)

Для использования базовой конфигурации в различных форматах может потребовать наличия скрипта [conf2ib.cmd](./scripts/conf2ib.cmd)

### [dp2xml.cmd](./scripts/dp2xml.cmd)

Выполняет конвертацию файлов внешних отчетов и обработок в формат выгрузки конфигуратора (XML).

Источником может выступать:

* Файл внешнего отчета или обработки (epf, erf)
* Каталог, содержащий бинарные файлы внешних отчетов и обработок (epf, erf)
* Каталог проекта 1C:Enterprise Development Tools (EDT)

Параметры:

* Путь к источнику внешних отчетов и обработок (переменная среды `%V8_SRC_PATH%`)
* Путь к каталогу для сохранения в формате выгрузки конфигуратора (XML) (переменная среды `%V8_DST_PATH%`)

Если перед выгрузкой необходимо очистить каталог назначения, то требуется установить переменную среды `V8_DP_CLEAN_DST`=1.

Для указания базовой конфигурации и информационной базы для выгрузки можно указать переменные среды:

* **V8_BASE_IB** - путь к служебной информационной для выполнеия выгрузки (если не указан, будет использована временная файловая информационная база)
* Для файловой информационной базы может указываться в одном из 2-х вариантов `"<путь к базе>"` или `"/F<путь к базе>"`
* Для серверной информационной базы может указываться в виде `"/S<имя сервера>\<путь к базе>"`, где <имя сервера>:
* при выгрузке с использованием пакетного режима конфигуратора (designer) - имя сервера 1С:Предприятие
* при выгрузке с использованием утилиты `ibcmd` - имя сервера СУБД
* **V8_BASE_CONFIG** - путь к конфигурации в любом из форматов (CF, XML, EDT) (если не указан, будет использована либо конфигурация из `V8_BASE_IB`, либо пустая конфигурация)

Результат:

* Каталог, содержащий XML-файлы выгрузки исходных внешних отчетов (epf) и обработок (erf)

Для использования базовой конфигурации в различных форматах может потребовать наличия скрипта [conf2ib.cmd](./scripts/conf2ib.cmd)

### [dp2edt.cmd](./scripts/dp2edt.cmd)

Выполняет конвертацию файлов внешних отчетов и обработок в проект 1C:Enterprise Development Tools (EDT).

Источником может выступать:

* Файл внешнего отчета или обработки (epf, erf)
* Каталог, содержащий бинарные файлы внешних отчетов и обработок (epf, erf)
* Каталог внешних отчетов и обработок формате выгрузки конфигуратора (XML)

Параметры:

* Путь к источнику внешних отчетов и обработок (переменная среды `%V8_SRC_PATH%`)
* Путь к каталогу проекта 1C:Enterprise Development Tools (EDT) (переменная среды `%V8_DST_PATH%`)

Если перед выгрузкой необходимо очистить каталог назначения, то требуется установить переменную среды `V8_DP_CLEAN_DST`=1.

Для указания базовой конфигурации и информационной базы для выгрузки можно указать переменные среды:

* **V8_BASE_IB** - путь к служебной информационной для выполнеия выгрузки (если не указан, будет использована временная файловая информационная база)
* Для файловой информационной базы может указываться в одном из 2-х вариантов `"<путь к базе>"` или `"/F<путь к базе>"`
* Для серверной информационной базы может указываться в виде `"/S<имя сервера>\<путь к базе>"`, где <имя сервера>:
* при выгрузке с использованием пакетного режима конфигуратора (designer) - имя сервера 1С:Предприятие
* при выгрузке с использованием утилиты `ibcmd` - имя сервера СУБД
* **V8_BASE_CONFIG** - путь к конфигурации в любом из форматов (CF, XML, EDT) (если не указан, будет использована либо конфигурация из `V8_BASE_IB`, либо пустая конфигурация)

Результат:

* Каталог, содержащий проект 1C:Enterprise Development Tools (EDT) исходных внешних отчетов и обработок

Для использования базовой конфигурации в различных форматах может потребовать наличия скрипта [conf2ib.cmd](./scripts/conf2ib.cmd)

### [ext2ib.cmd](./scripts/cf2ib.cmd)

Выполняет загрузку расширения конфигурации из указанного источника в информационную базу.

Источником может выступать:

* Файл выгрузки расширения конфигурации (cfe)
* Каталог выгрузки расширения конфигурации в файлы (xml)
* Каталог проекта 1C:Enterprise Development Tools (EDT)

Параметры:

* Путь к источнику расширения конфигурации (переменная среды `%V8_SRC_PATH%`)
* Путь к информационной базе для загрузки расширения (переменная среды `%V8_DST_PATH%`)
* Для файловой информационной базы может указываться в одном из 2-х вариантов `"<путь к базе>"` или `"/F<путь к базе>"`
* Для серверной информационной базы может указываться в виде `"/S<имя сервера>\<путь к базе>"`, где <имя сервера>:
* при выгрузке с использованием пакетного режима конфигуратора (designer) - имя сервера 1С:Предприятие
* при выгрузке с использованием утилиты `ibcmd` - имя сервера СУБД
* Имя расширения (переменная среды `%V8_EXT_NAME%`)

Результат:

* Информационная база с загруженным расширением конфигурации

```txt

Для указания инструмента конвертации необходимо установить переменную среды `%V8_CONVERT_TOOL%.
По умолчанию используется пакетный режим конфигуратора.

```

### [ext2cfe.cmd](./scripts/ext2cfe.cmd)

Выполняет конвертацию расширения конфигурации из указанного источника в бинарный CFE-файл.

Источником может выступать:

* Файловая информационная база
* Серверная информационная база
* Каталог выгрузки расширения конфигурации в файлы (xml)
* Каталог проекта 1C:Enterprise Development Tools (EDT)

Параметры:

* Путь к источнику расширения конфигурации (переменная среды `%V8_SRC_PATH%`)
* Путь к бинарному файлу расширения конфигурации (cfe) (переменная среды `%V8_DST_PATH%`)
* Имя расширения (переменная среды `%V8_EXT_NAME%`)

Для указания базовой конфигурации и информационной базы для выгрузки можно указать переменные среды:

* **V8_BASE_IB** - путь к служебной информационной для выполнеия выгрузки (если не указан, будет использована временная файловая информационная база)
* Для файловой информационной базы может указываться в одном из 2-х вариантов `"<путь к базе>"` или `"/F<путь к базе>"`
* Для серверной информационной базы может указываться в виде `"/S<имя сервера>\<путь к базе>"`, где <имя сервера>:
* при выгрузке с использованием пакетного режима конфигуратора (designer) - имя сервера 1С:Предприятие
* при выгрузке с использованием утилиты `ibcmd` - имя сервера СУБД
* **V8_BASE_CONFIG** - путь к конфигурации в любом из форматов (CF, XML, EDT) (если не указан, будет использована либо конфигурация из `V8_BASE_IB`, либо пустая конфигурация)

В случае использования для выгрузки служебной серверной информационной базы и использовании утилиты `ibcmd` дополнительно требуется указать переменные среды:

* **V8_DB_SRV_DBMS** - тип сервера СУБД (MSSQLServer, PostgreSQL, IBMDB2, OracleDatabase) (опционально, по умолчанию: MSSQLServer)
* **V8_DB_SRV_USR** - пользователь сервера СУБД
* **V8_DB_SRV_PWD** - пароль пользователя сервера СУБД

Результат:

* Файл выгрузки исходного расширения конфигурации (cfe)

```txt

Для указания инструмента конвертации необходимо установить переменную среды `%V8_CONVERT_TOOL%.
По умолчанию используется пакетный режим конфигуратора.

```

Для использования базовой конфигурации в различных форматах может потребовать наличия скрипта [conf2ib.cmd](./scripts/conf2ib.cmd)

### [ext2xml.cmd](./scripts/ext2xml.cmd)

Выполняет конвертацию расширения конфигурации в формат выгрузки конфигуратора (XML).

Источником может выступать:

* Файловая информационная база
* Серверная информационная база
* Файл выгрузки расширения конфигурации (cfe)
* Каталог проекта 1C:Enterprise Development Tools (EDT)

Параметры:

* Путь к источнику расширения конфигурации (переменная среды `%V8_SRC_PATH%`)
* Путь к каталогу для сохранения в формате выгрузки конфигуратора (XML) (переменная среды `%V8_DST_PATH%`)
* Имя расширения (переменная среды `%V8_EXT_NAME%`)

Если перед выгрузкой необходимо очистить каталог назначения, то требуется установить переменную среды `V8_EXT_CLEAN_DST`=1.

Для указания базовой конфигурации и информационной базы для выгрузки можно указать переменные среды:

* **V8_BASE_IB** - путь к служебной информационной для выполнеия выгрузки (если не указан, будет использована временная файловая информационная база)
* Для файловой информационной базы может указываться в одном из 2-х вариантов `"<путь к базе>"` или `"/F<путь к базе>"`
* Для серверной информационной базы может указываться в виде `"/S<имя сервера>\<путь к базе>"`, где <имя сервера>:
* при выгрузке с использованием пакетного режима конфигуратора (designer) - имя сервера 1С:Предприятие
* при выгрузке с использованием утилиты `ibcmd` - имя сервера СУБД
* **V8_BASE_CONFIG** - путь к конфигурации в любом из форматов (CF, XML, EDT) (если не указан, будет использована либо конфигурация из `V8_BASE_IB`, либо пустая конфигурация)

В случае использования для выгрузки служебной серверной информационной базы и использовании утилиты `ibcmd` дополнительно требуется указать переменные среды:

* **V8_DB_SRV_DBMS** - тип сервера СУБД (MSSQLServer, PostgreSQL, IBMDB2, OracleDatabase) (опционально, по умолчанию: MSSQLServer)
* **V8_DB_SRV_USR** - пользователь сервера СУБД
* **V8_DB_SRV_PWD** - пароль пользователя сервера СУБД

Результат:

* Каталог, содержащий XML-файлы выгрузки исходного расширения конфигурации

```txt

Для указания инструмента конвертации необходимо установить переменную среды `%V8_CONVERT_TOOL%.
По умолчанию используется пакетный режим конфигуратора.

```

Для использования базовой конфигурации в различных форматах может потребовать наличия скрипта [conf2ib.cmd](./scripts/conf2ib.cmd)

### [ext2edt.cmd](./scripts/ext2edt.cmd)

Выполняет конвертацию расширения конфигурации в проект 1C:Enterprise Development Tools (EDT).

Источником может выступать:

* Файловая информационная база
* Серверная информационная база
* Файл выгрузки расширения конфигурации (cfe)
* Каталог выгрузки расширения конфигурации в файлы (xml)

Параметры:

* Путь к источнику расширения конфигурации (переменная среды `%V8_SRC_PATH%`)
* Путь к каталогу проекта 1C:Enterprise Development Tools (EDT) (переменная среды `%V8_DST_PATH%`)
* Имя расширения (переменная среды `%V8_EXT_NAME%`)

Если перед выгрузкой необходимо очистить каталог назначения, то требуется установить переменную среды `V8_EXT_CLEAN_DST`=1.

Для указания базовой конфигурации и информационной базы для выгрузки можно указать переменные среды:

* **V8_BASE_IB** - путь к служебной информационной для выполнеия выгрузки (если не указан, будет использована временная файловая информационная база)
* Для файловой информационной базы может указываться в одном из 2-х вариантов `"<путь к базе>"` или `"/F<путь к базе>"`
* Для серверной информационной базы может указываться в виде `"/S<имя сервера>\<путь к базе>"`, где <имя сервера>:
* при выгрузке с использованием пакетного режима конфигуратора (designer) - имя сервера 1С:Предприятие
* при выгрузке с использованием утилиты `ibcmd` - имя сервера СУБД
* **V8_BASE_CONFIG** - путь к конфигурации в любом из форматов (CF, XML, EDT) (если не указан, будет использована либо конфигурация из `V8_BASE_IB`, либо пустая конфигурация)

В случае использования для выгрузки служебной серверной информационной базы и использовании утилиты `ibcmd` дополнительно требуется указать переменные среды:

* **V8_DB_SRV_DBMS** - тип сервера СУБД (MSSQLServer, PostgreSQL, IBMDB2, OracleDatabase) (опционально, по умолчанию: MSSQLServer)
* **V8_DB_SRV_USR** - пользователь сервера СУБД
* **V8_DB_SRV_PWD** - пароль пользователя сервера СУБД

Результат:

* Каталог, содержащий проект 1C:Enterprise Development Tools (EDT) исходного расширения конфигурации

```txt

Для указания инструмента конвертации необходимо установить переменную среды `%V8_CONVERT_TOOL%.
По умолчанию используется пакетный режим конфигуратора.

```

Для использования базовой конфигурации в различных форматах может потребовать наличия скрипта [conf2ib.cmd](./scripts/conf2ib.cmd)

### [edt-validate.cmd](./scripts/edt-validate.cmd)

Выполняет проверку проекта 1C:Enterprise Development Tools (EDT) (`ring edt validate` или `1cedtcli -command validate`).
Может использоваться для проектов конфигураций, расширений, внешних отчетов и отбработок.

Проверяем проектом может выступать:

* Путь к файловой информационной базе 1С
* Сервер\имя серверной информационной базе 1С
* Файл конфигурации (cf)
* Файл расширения конфигурации (cfe)
* Каталог выгрузки конфигурации или расширения в файлы (xml)
* Каталог файлов внешних отчетов и обработок (epf, erf)
* Каталог внешних отчетов и обработок формате выгрузки конфигуратора (XML)
* Каталог проекта 1C:Enterprise Development Tools (EDT)

Параметры:

* Проверяемый проект (переменная среды `%V8_SRC_PATH%`)
* Для файловой информационной базы может указываться в одном из 2-х вариантов `"<путь к базе>"` или `"/F<путь к базе>"`
* Для серверной информационной базы может указываться в виде `"/S<имя сервера>\<путь к базе>"`, где <имя сервера>:
* при выгрузке с использованием пакетного режима конфигуратора (designer) - имя сервера 1С:Предприятие
* при выгрузке с использованием утилиты `ibcmd` - имя сервера СУБД
* Путь к файлу отчета о проверке

В случае использования серверной информационной базы и использовании утилиты `ibcmd` дополнительно требуется указать переменные среды:

* **V8_DB_SRV_DBMS** - тип сервера СУБД (MSSQLServer, PostgreSQL, IBMDB2, OracleDatabase) (опционально, по умолчанию: MSSQLServer)
* **V8_DB_SRV_USR** - пользователь сервера СУБД
* **V8_DB_SRV_PWD** - пароль пользователя сервера СУБД

Результат:

* Отчет о проверке конфигурации средствами 1C:Enterprise Development Tools (EDT)

Для работы с конфигурациями, расширениями, внешними отчетами/обработками в различных форматах может потребовать наличия скриптов:

* [conf2edt.cmd](./scripts/conf2edt.cmd)
* [dp2edt.cmd](./scripts/dp2edt.cmd)
* [ext2edt.cmd](./scripts/ext2edt.cmd)

## Автоматический разбор конфигураций, расширений, внешних отчетов и обработок (watchman)

Помогает решать задачу автоматического разбора на исходные файлы бинарных файлов конфигураций, расширений, внешних отчетов и обработок сразу после внесения изменений. Позволяет увидеть внесенные изменения до помещения в git.

Для автоматического разбора используется инструмент [watchman](https://facebook.github.io/watchman/docs/install).

Примеры настройки и скрипты расположены в каталоге [./wmscripts](./wmscripts)

### Регистрация каталога для отслеживания [watch](https://facebook.github.io/watchman/docs/cmd/watch)

Примеры:

```bat

rem Через параметры командной строки
watchman watch "\ext"

```

```bat

rem Передача текста JSON на stdin
echo ["watch", "\ext"] | watchman -j

```

```bat

rem Передача файла JSON на stdin
watchman -j < .\wmscripts\watch_example.json

```

### Подключение триггера изменения файлов [trigger](https://facebook.github.io/watchman/docs/cmd/trigger)

Примеры:

```bat

rem Передача текста JSON на stdin
echo ["trigger", "\ext", ^{"name": "myEPFTrigger", "expression": ["anyof", ["imatch","*.epf"]], "command": ["convert.cmd", "dp2xml", "\ext", "\src\ext"], "stdin": "NAME_PER_LINE"^}] | watchman -j

```

```bat

rem Передача файла JSON на stdin
watchman -j < .\wmscripts\trigger_example.json

```

### Просмотр списка подключенных триггеров [trigger-list](https://facebook.github.io/watchman/docs/cmd/trigger-list)

Примеры:

```bat

watchman trigger-list "\ext"

```

### Отключение триггера [trigger-del](https://facebook.github.io/watchman/docs/cmd/trigger-del)

Примеры:

```bat

watchman trigger-del "\ext" "myEPFTrigger"

```

### Просмотр списка отслеживаемых каталогов [watch-list](https://facebook.github.io/watchman/docs/cmd/watch-list)

Примеры:

```bat

watchman watch-list

```

### Остановка отслеживания каталога [watch-del](https://facebook.github.io/watchman/docs/cmd/watch-del)

Примеры:

```bat

rem Через параметры командной строки
watchman watch-del "\ext"

```

### Запуск отслеживания каталога [settrigger.cmd](./wmscripts/settrigger.cmd)

Скрипт регистрации отслеживания каталога, содержащего файлы для конвертации. Использует [watchman](https://facebook.github.io/watchman/docs/install).

Выполняет [регистрацию каталога для отслеживания](#wm_watch) и [подключает триггер на изменение файлов](#wm_trigger).

Переменные среды:

* **WATCH_TOOL** - путь к утилите watchman (по умолчанию берется из переменной окружения `%PATH%`)
* **WATCH_LOG** - путь к файлу протокола выполнения обработки изменения файлов

Параметры:

* Имя триггера, который будет отслеживать изменения файлов (переменная среды `%TRIGGER_NAME%`)
* Путь к отслеживаемому каталогу (переменная среды `%WATCH_PATH%`)
* Список расширений отслеживаемых файлов разделенных `пробелом` (переменная среды `%WATCH_FILES%`), может быть указан псевдоним списка расширений:
* **1cdpr** - внешние отчеты и обработки
* **1cxml** - исходные файлы конфигурации в формате XML
* **1cedt** - исходные файлы конфигурации в формате проекта 1C:Enterprise Development Tools (EDT)
* Имя или путь к скрипту, исполняемому при изменении файлов в отслеживаемом каталоге (переменная среды `%WATCH_SCRIPT%`). См. [описания скриптов](#scripts). Если взаимное расположение и имена каталогов скриптов не изменялись, то можно просто указать имя скрипта без расширения.
* Путь к каталогу для сохранения результатов конвертации (переменная среды `%WATCH_OUT_PATH%`)

Пример:

```bat

.\settrigger.cmd MyEPFTrigger "\ext" 1cdpr dp2xml "\src\ext"
```

### Конвертация [convert.cmd](./wmscripts/convert.cmd)

Скрипт - обертка для запуска скриптов конвертации при срабатывании зарегистрированного тригера. Выполняет конвертацию файлов 1С с использованием указанного скрипта конвертации в указанный каталог.

`Не предполагался для ручного запуска`

Параметры:

* Имя или путь к исполняемому скрипту (переменная среды `%CONVERT_SCRIPT%`). См. [описания скриптов](#scripts). Если взаимное расположение и имена каталогов скриптов не изменялись, то можно просто указать имя скрипта без расширения.
* Путь к отслеживаемому каталогу (переменная среды `%CONVERT_SRC_PATH%`)
* Путь к каталогу для сохранения результатов конвертации (переменная среды `%CONVERT_DST_PATH%`)

Пример:

```bat

.\convert.cmd dp2xml "\ext" "\src\ext"
```

## Тесты

Тесты расположены в каталоге [tests](./tests).

* В каталоге [tests/fixtures](./tests/fixtures) расположены тестовые данные (конфигурация, расширения, отчеты и обработки в бинарном формате).
* В каталоге [tests/before](./tests/before) расположены скрипты подготовки тестовых данных
* В каталоге [tests/tests](./tests/tests) расположены модульные тесты
* В каталоге [tests/after](./tests/after) расположены скрипты, выполняемые после запуска тестов

Для выполнения тестов с серверной информационной базой 1С необходимо наличие и доступность сервера 1С:Предприятие и сервера СУБД, а также потребуется указание переменных среды:

* **V8_DB_SRV_DBMS** - тип сервера СУБД (MSSQLServer, PostgreSQL, IBMDB2, OracleDatabase) (опционально, по умолчанию: MSSQLServer)
* **V8_DB_SRV_ADDR** - адрес сервера СУБД
* **V8_DB_SRV_USR** - пользователь сервера СУБД
* **V8_DB_SRV_PWD** - пароль пользователя сервера СУБД
* **V8_SRV_ADDR** - адрес сервера 1С:Предприятие
* **V8_SRV_AGENT_PORT** - порт агента сервера 1С:Предприятие (например: 1540)
* **V8_SRV_REG_PORT** - порт главного менеджера кластера 1С:Предприятие (например: 1541)
* **V8_SRV_PORT_RANGE** - диапазон сетевых портов рабочих процессов 1С:Предприятие (например: 1560-1591)
* **V8_RAS_PORT** - порт службы RAS (например: 1545) (поднимается автоматически на машине запуска тестов)
* **V8_IB_NAME** - имя временной информационной базы 1С для выполнения тестов

Значения переменных могут быть указаны в файле `./tests/.env`, пример приведен в файле [tests/example.env](./tests/example.env)

Запуск тестов выполняется скриптом [tests/test.cmd](./tests/test.cmd)

### Структура скрипта теста модуля

```bat

@ECHO OFF

rem Заголовок теста
set TEST_NAME="Conf CF -> XML (ibcmd)"

rem Путь к каталогу выходных данных
set TEST_OUT_PATH=%OUT_PATH%\%~n0
set TEST_OUT_PATH=%TEST_OUT_PATH: =_%

rem Список файлов, наличие которых проверяется после выполнения теста
set TEST_CHECK_PATH=%TEST_OUT_PATH%\Configuration.xml

rem Инструмент конвертации файлов 1С
set V8_CONVERT_TOOL=ibcmd

echo ===
echo Test %TEST_COUNT%. ^(%~n0^) %TEST_NAME%
echo ===

rem Команда запуска теста (выполнения конвертации)
call %SCRIPTS_PATH%\conf2xml.cmd "%TEST_BINARY%\1cv8.cf" "%TEST_OUT_PATH%"

rem Переменной TEST_ERROR_MESSAGE можно присвоить произвольный текст ошибки
IF ERRORLEVEL 1 set TEST_ERROR_MESSAGE=Error running test "%TEST_NAME%"

```