Набор утилит для автоматической разборки/сборки внешних обработок и отчетов, при помещении (commit) в git
 Здесь вы можете задавать любые вопросы разработчикам и активным участникам
precommit1c - инструмент для хранения в Git исходников внешних отчетов/обработок, технически состоит из:
- v8files-extractor.os - скрипт для OneScript, получающий список помещаемых файлов при коммите, фильтрующий по расширению только внешние отчёты/обработки, расширения и запускающий команды для распаковки этих файлов. Так же позволяет собирать обработки из полученных исходников.
 - V8Reader.epf - внешняя обработка 1С, которая с помощью v8unpack разбирает внешние обработки, определяет нормальные наименования для каталогов форм, файлов модулей объектов и т. д. и раскладывает их в нормальную структуру папок.
 - pre-commit - собственно командный файл, вызываемый git перед каждым помещением. Выполняет роль простой запускалки скрипта v8files-extractor.os
 
-  
Зависимости:
- OneScript http://oscript.io/
 - установленная платформа 1С:Предприятие 8
 - git
 - в случае запуска из под wine необходим msscriptcontrol
 - Библиотеки oscript-library
 
 -  
По умолчанию считается, что пути к oscript.exe и git.exe находятся в переменной path, иначе необходимо указать явный путь в файле pre-commit
 -  
Путь хранения исходных текстов разобранных обработок по умолчанию используется как src (для обеспечения совместимости со старыми версиями обработки), однако его можно переназначить в файле
pre-commit 
-  
Выполните установку precommit1c из командной строки
opm install precommit1c(предполагается, что OneScript уже установлен и командная строка запущена с правами администратора). При этом необходимые библиотеки oscript будут установлены автоматически. -  
Перейдите в рабочий каталог репозитория, для которого следует использовать автоматическую сборку/разборку.
 -  
Выполните из командной строки
precommit1c --install(здесь можно без прав администратора). 
-  
Скачайте zip-архив precommit1c.zip со страницы последнего релиза.
 -  
Содержимое архива необходимо разархивировать в каталог .git/hooks/ вашего проекта.
 
Примечание: каталог .git по умолчанию скрыт.
 В итоге у вас должна получиться следующая структура каталога:
.git\ hooks\ pre-commit V8Reader tools v8files-extractor.os - Установите необходимые библиотеки oscript - их список можно посмотреть в списке зависимостей в файле 
packagedef. 
-  
Склонируйте репозиторий
precommit1cв удобное место. -  
После клонирования репозитория необходимо инициализировать используемые подмодули.
Откройте командую строку и выполните команды: 
cd путь/к/репозиторию/precommit1c git submodule update --init --recursive- Cодержимое каталога необходимо скопировать в каталог .git/hooks/ вашего проекта.
Примечание: каталог .git по умолчанию скрыт.
В итоге у вас должна получиться следующая структура каталога: 
.git\ hooks\ pre-commit V8Reader tools v8files-extractor.os - Установите необходимые библиотеки oscript - их список можно посмотреть в списке зависимостей в файле 
packagedef. 
После установки достаточно для проверки сделать commit для любого файла epf/erf/cfe, и в вашем репозитории автоматически должна создаться папка src, полностью повторяющая структуру проекта, изменённые или добавленные файлы распакуются в папки с аналогичными наименованиями.
oscript v8files-extractor.os ? Утилита сборки/разборки внешних файлов 1С Параметры командной строки: --decompile inputPath outputPath Разбор файлов на исходники --help Показ этого экрана --git-check-config Проверка настроек репозитория git --git-precommit outputPath [--remove-orig-bin-files] Запустить чтение индекса из git и определить список файлов для разбора, разложить их и добавить исходники в индекс Если передан флаг --remove-orig-bin-files, обработанные файлы epf/erf будут удалены из индекса git --compile inputPath outputPath [--recursive] Собрать внешний файл/обработку. Если указан параметр --recursive, скрипт будет рекурсивно искать исходные коды отчетов и обработок в указанном каталоге и собирать их, повторяя структуру каталога --install [--remove-orig-bin-files] Установить precommit1c для текущего репозитория git Если передан флаг --remove-orig-bin-files, обработанные файлы epf/erf будут удалены из индекса git Общие параметры: --use-designer Если передан этот флаг, то для операций сборки/разборки будет использован конфигуратор 1С. ТОЛЬКО ДЛЯ ВЕРСИЙ ПЛАТФОРМЫ 8.3.8 И ВЫШЕ! --ib-connection-string Строка подключения к информационной базе (для Windows-путей обязательно экранировать '\' так: '\\'!) --ib-user Имя пользователя в информационной базе --ib-pwd Пароль пользователя в информационной базе Дополнительно необходимы настройки git для возможности использования кириллических наименований внешних обработок, длинных имён файлов и корректной работы с окончаниями строк:
git config --local core.quotepath false git config --local core.longpaths trueНе стоит называть файлы с разным расширением epf и erf одинаковыми именами - каталоги с исходниками создаются только по наименованию без учёта расширения и возможен конфликт имен.
Начиная с версии 8.3.9.2016 1С встроила в платформу механизмы защиты открытия внешних отчетов и обработок. Как обойти данное ограничение написано на ИТС:
Защита считается отключенной, если строка соединения с информационной базой удовлетворяет одному из шаблонов, указанных в параметре DisableUnsafeActionProtection файла conf.cfg.
Т.о. в файл C:\Program Files (x86)\1cv8\conf\conf.cfg необходимо добавить строку DisableUnsafeActionProtection=.* Подробнее на ИТС
При использовании v8Reader макеты выгружаются в файлы, соответствующие их типам, дополнительно обрабатываются специальные случаи:
- У макетов табличных документов дополнительно создаются .txt версии, чтобы их было легче сравнивать в текстовом редакторе.
 - У макетов типа html дополнительно выгружаются файлы вложений.
 - Макеты в двоичных данных выгружаются либо в .bin, либо (для печатных форм) в тот тип файла, который указан в имени макета (например, 
ПФ_MXL_КакаяТоПечатнаяФормабудет выгружен вПФ_MXL_КакаяТоПечатнаяФорма.mxl). 
- При использовании некоторых версий SourceTree (удобный клиент git) может возникать следующая ошибка:
 
.git/hooks/pre-commit: line 4: oscript: command not foundНесколько вариантов решения:
- убедиться, что команда 
oscriptдоступна- для проверки вызвать из командной строки или Win+R 
cmd /k oscript 
 - для проверки вызвать из командной строки или Win+R 
 - откатиться на предыдущую версию SourceTree 
- рекомендуется
 
 - указать полный путь к 
oscript.exeв файлеpre-commitвнутри своего репозитария.- не рекомендуется, т.к. данную операцию нужно будеть делать для каждого репозитария
 
 
- Нужно выполнить следующее:
 
- добавить нужную обработку в индекс git - например, 
git add XXX.epf - установить переменную среды 
LOGOS_CONFIGили заполнить спец.файл настройки логов - выполнить 
git commitилиprecommit1c --git-precommit - Например, рядом с файлом 
v8files-extractor.osположить файлlogos.cfgсо следующим текстомlogger.rootLogger=DEBUG - или переименовать файл-пример 
logos.debug-example.cfgвlogos.cfg - Или создать и выполнить командный файл
 
git add XXX.epf @set LOGOS_CONFIG=logger.rootLogger=DEBUG @precommit1c --git-precommit src- где каталог 
src- выходной каталог, где хранятся исходники 
- Для отключения отладочных логов выполнить обратные действия
 
Как это работает: v8files-extractor.os полностью повторяет иерархию папок относительно корня репозитория только в папке SRC (от слова source), для каждой изменённой внешней обработки создаётся своя папка и туда с помощью v8unpack распаковывается помещаемая обработка, с помощью v8reader определяются наименования макетов, форм, модуля обработки и переименовываются, переименования сохраняются в служебном файле renames.txt, те файлы, которые невозможно определить или же носят чисто служебный характер, переносятся в каталог und.
Файлы расширений *.cfe распаковываются на исходники штатными средствами 1С.
Лицензировано на условиях Apache License 2.0. Смотрите файл LICENSE.md в корневом каталоге репозитория.