1
0
mirror of https://github.com/arkuznetsov/1CFilesConverter.git synced 2025-03-05 14:45:12 +02:00
1CFilesConverter/README.md
2024-10-09 11:44:46 +03:00

723 lines
51 KiB
Markdown

[![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)
## <a id="tools"></a>Необходимые инструменты
* [Платформа 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%`)
## <a id="environment"></a>Переменные среды
* **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`
## <a id="scripts"></a>Скрипты конвертации
### [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)
## <a id="watchman"></a>Автоматический разбор конфигураций, расширений, внешних отчетов и обработок (watchman)
Помогает решать задачу автоматического разбора на исходные файлы бинарных файлов конфигураций, расширений, внешних отчетов и обработок сразу после внесения изменений. Позволяет увидеть внесенные изменения до помещения в git.
Для автоматического разбора используется инструмент [watchman](https://facebook.github.io/watchman/docs/install).
Примеры настройки и скрипты расположены в каталоге [./wmscripts](./wmscripts)
### <a id="wm_watch"></a>Регистрация каталога для отслеживания [watch](https://facebook.github.io/watchman/docs/cmd/watch)
Примеры:
```bat
rem Через параметры командной строки
watchman watch "<path to my repo>\ext"
```
```bat
rem Передача текста JSON на stdin
echo ["watch", "<path to my repo>\ext"] | watchman -j
```
```bat
rem Передача файла JSON на stdin
watchman -j < .\wmscripts\watch_example.json
```
### <a id="wm_trigger"></a>Подключение триггера изменения файлов [trigger](https://facebook.github.io/watchman/docs/cmd/trigger)
Примеры:
```bat
rem Передача текста JSON на stdin
echo ["trigger", "<path to my repo>\ext", ^{"name": "myEPFTrigger", "expression": ["anyof", ["imatch","*.epf"]], "command": ["convert.cmd", "dp2xml", "<path to my repo>\ext", "<path to my repo>\src\ext"], "stdin": "NAME_PER_LINE"^}] | watchman -j
```
```bat
rem Передача файла JSON на stdin
watchman -j < .\wmscripts\trigger_example.json
```
### <a id="wm_trigger_list"></a>Просмотр списка подключенных триггеров [trigger-list](https://facebook.github.io/watchman/docs/cmd/trigger-list)
Примеры:
```bat
watchman trigger-list "<path to my repo>\ext"
```
### <a id="wm_trigger_del"></a>Отключение триггера [trigger-del](https://facebook.github.io/watchman/docs/cmd/trigger-del)
Примеры:
```bat
watchman trigger-del "<path to my repo>\ext" "myEPFTrigger"
```
### <a id="wm_watch_list"></a>Просмотр списка отслеживаемых каталогов [watch-list](https://facebook.github.io/watchman/docs/cmd/watch-list)
Примеры:
```bat
watchman watch-list
```
### <a id="wm_trigger_del"></a>Остановка отслеживания каталога [watch-del](https://facebook.github.io/watchman/docs/cmd/watch-del)
Примеры:
```bat
rem Через параметры командной строки
watchman watch-del "<path to my repo>\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 "<path to my repo>\ext" 1cdpr dp2xml "<path to my repo>\src\ext"
```
### Конвертация [convert.cmd](./wmscripts/convert.cmd)
Скрипт - обертка для запуска скриптов конвертации при срабатывании зарегистрированного тригера. Выполняет конвертацию файлов 1С с использованием указанного скрипта конвертации в указанный каталог.
`Не предполагался для ручного запуска`
Параметры:
* Имя или путь к исполняемому скрипту (переменная среды `%CONVERT_SCRIPT%`). См. [описания скриптов](#scripts). Если взаимное расположение и имена каталогов скриптов не изменялись, то можно просто указать имя скрипта без расширения.
* Путь к отслеживаемому каталогу (переменная среды `%CONVERT_SRC_PATH%`)
* Путь к каталогу для сохранения результатов конвертации (переменная среды `%CONVERT_DST_PATH%`)
Пример:
```bat
.\convert.cmd dp2xml "<path to my repo>\ext" "<path to my repo>\src\ext"
```
## <a id="tests"></a>Тесты
Тесты расположены в каталоге [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%"
```