Утилита для автоматической обработки исходных файлов конфигурации, внешних отчетов и обработок для платформы 1С:Предприятие при помещении в репозиторий git
Данное решение базируется на идеях проекта precommit1c, но является самостоятельным решением.
Указанным продуктом пользовались долгое время, он очень хорош, но потребность в развитии и невозможность реализации некоторых сценариев работы в публичной версии сподвигли к реализации нового решения.
- Возможность расширения функциональности под свои нужды без потери совместимости с публичной версией
- Централизованная установка и обновление скриптов без необходимости утяжелять репозиторий проекта
- Максимально использует возможности платформы 1С:Предприятие последних версий (тестировалось на 8.3.10+, возможно на версиях 8.3.8-9 тоже будет работать)
- Возможность хранить внешние отчеты, обработки и расширения с одинаковыми именами
- Корректно обрабатывается удаление файлов
Установка на компьютер стандартна
opm install precommit4onecили- распаковать в нужный каталог архив репозитория или
- для Windows запустить installlocalhost.bat
Перед использованием необходима установка precommit-hook'а в репозиторий:
- для выполнения установки в конкретный репозиторий необходимо выполнить команду
precommit4onec install repo_name - для выполнения установки во все репозитории каталога необходимо выполнить команду
precommit4onec install folder_reps -r - если каталог исходных файлов в репозитории отличается от стандартного "src" (например, когда исходные файлы в формате EDT), необходимо явно указать его с помощью дополнительного параметра
-source-dir "configuration"
Для корректного отображения путей с кириллицей прекоммит установит настройку Git core.quotePath для локального репозитория.
После этого, при каждом коммите будет выполняться обработка файлов.
В комплекте присутствуют следующие сценарии обработки файлов:
ВставкаКопирайтов- добавляет текст копирайта в файлы модулей. См. подробнееДобавлениеПробеловПередКлючевымиСловами- добавляет отсутствующие пробелы перед ключевыми словами в файлах модулей. На данный момент обрабатывается только ключевое словоЭкспорт.ЗапретИспользованияПерейти- проверяет модуль на использование методовПерейти.ИсправлениеНеКаноническогоНаписания- исправляет неканоничное написание ключевых слов в модулях.КорректировкаXMLФорм- исправляет дубли индексов элементов в файлах описаний форм (могут образоваться при объединениях). Поддерживаются как файлы в формате выгрузки конфигуратора (Form.xml), так и в формате EDT (Form.form).ОбработкаЮнитТестов- обновляет метод-загрузчик сценариев в общих модулях расширения с unit-тестами (по умолчанию отключен).ОтключениеПолнотекстовогоПоиска- отключает полнотекстовый поиск в файлах описаний метаданных. См. подробнееОтключениеРазрешенияИзменятьФорму- снимает флагРазрешеноИзменятьФормув описаниях форм. См. подробнееПроверкаДублейПроцедурИФункций- проверяет уникальность названий процедур и функций в модулях.ПроверкаКорректностиИнструкцийПрепроцессора- проверяет корректность написания инструкций препроцессора в модулях.ПроверкаКорректностиОбластей- проверяет корректность "скобок" областей в модулях (парность и последовательность).ПроверкаНецензурныхСлов- проверяет наличие нецензурных слов в модулях. См. подробнееРазборОбычныхФормНаИсходники- раскладывает файлы обычных форм (Form.bin) на исходные файлы с помощью инструментаv8unpack.РазборОтчетовОбработокРасширений- раскладывает средствами платформы файлы внешних отчетов, обработок и расширений на исходные файлы. См. подробнееСинхронизацияОбъектовМетаданныхИФайлов- анализирует наличие файлов и объектов конфигурации. Поддерживается как файл в формате выгрузки конфигуратора (Configuration.xml), так и в формате EDT (Configuration.mdo).СортировкаПравРолей- упорядочивает по имени объекты в файле описания прав роли.СортировкаСостава- сортирует описания состава конфигурации и некоторых объектов метаданных. См. подробнееУдалениеДублейМетаданных- удаляет дубли объектов метаданных в файле описания конфигурации (могут образоваться при объединениях). Поддерживается как файл в формате выгрузки конфигуратора (Configuration.xml), так и в формате EDT (Configuration.mdo)..УдалениеЛишнихКонцевыхПробелов- удаляет лишние пробелы и табы в конце не пустых строк в файлах модулей.УдалениеЛишнихПустыхСтрок- удаляет лишние пустые строки в модулях (лишними считаются 2 и более идущих подряд пустых строк).
При использовании таск-трекеров может возникнуть необходимость указывать номер задачи в каждом комментарии коммита. Специально для этой задачи реализована функциональность проверки комментария коммита на соответствие маске. См. подробнее
precommit4onec может читать настройки своей работы из специального конфигурационного файла.
Управление настройками происходит с использованием команды configure:
- Печать настроек -
precommit4onec configure -global - Сброс настроек на заводские -
precommit4onec configure -global -reset - Интерактивное изменение настроек -
precommit4onec configure -global -config.
Предоставляется возможность в репозитории иметь свои, отличные от глобальных, настройки. Для этого необходимо вместо флага -global в указанных выше командах передавать параметр -rep-path с указанием пути к каталогу репозитория.
Также можно настроить различное поведение для различных каталогов репозитория, для работы с подкаталогами (проектами) используется ключ -child-path.
Настройки проектов полностью переопределяют базовые настройки. Например если в основной настройке указаны ОтключенныеСценарии,
а для проекта configuration\ они не заполнены, то для каталога configuration\ будут выполнены все сценарии.
Конфигурирование дает возможности:
- Изменить список сценариев обработки файлов
- Активизировать алгоритм подключения сценариев из каталогов репозитория
Некоторые сценарии поддерживают возможность изменения своих настроек со значений по умолчанию на установленные в конфигурационном файле. На данный момент реализована возможность указывать необходимую версию платформы 1С:Предприятие в сценарии РазборОтчетОбработокРасширений. Для всех сценариев поддерживается возможность указания маски обрабатываемых файлов с помощью свойств: ВключатьФайлы, ИсключатьФайлы.
{
"GLOBAL": { // необязательная секция
"ВерсияПлатформы": "8.3.10.2309", // используемая версия платформы например для разбора на исходники
"version": "2.0", // версия конфигурационного файла (необязательно)
"ФорматEDT": true, // признак использования исходных файлов в формате EDT
},
"Precommt4onecСценарии": {
"ИспользоватьСценарииРепозитория": false, // Признак, выполнения проверок из репозитория
"КаталогЛокальныхСценариев": "", // Относительный путь к каталогу локальных проверок
"ГлобальныеСценарии": [...], // Список проверок, которые будут выполнятся
"ОтключенныеСценарии": [...], // Список проверок, которые не будут выполнятся (имеет больший приоритет относительно ГлобальныеСценарии)
"ВключатьФайлы": [], // Массив масок регулярных выражений, если указан, будут обрабатываться только файлы, соответствующие одной из масок
"ИсключатьФайлы": [], // Массив масок регулярных выражений, если указан, будут пропускаться файлы, соответствующие одной из масок
"НастройкиСценариев": { // Настройки выполняемых проверок
...
},
"Проекты":{ // Настройки проектов (подкаталогов репозитория). Настройки проектов полностью переопределяют настройки и имеют такую же структуру
"configuration\\": { // Имя проекта (подкаталога)
"ИспользоватьСценарииРепозитория": false,
"ГлобальныеСценарии": []
}
}
}
}Команда exec-rules предназначена для запуска выбранных сценариев в указанном репозитории. См. подробнее
Для создания нового сценария обработки файлов необходимо воспользоваться шаблоном, находящимся в каталоге СценарииОбработки скрипта.
Чтобы сценарий работал для всех репозиториев необходимо
- сохранить файл сценария в каталог
СценарииОбработки - выполнить команду сброса настроек либо интерактивного изменения, где указать сценарий в списке загружаемых
Чтобы сценарий работал в конкретном репозитории необходимо
- Решить, в каком каталоге в репозиториях будут хранится сценарии, например
tools\СценарииОбработки - Создать каталог в репозитории и скопировать в него файл сценария
- Вызвать команду конфигурирования, в которой включить использование сценариев из репозитория
- Указать имя каталога
Если при выполнении precommit4onec не найдет файлов сценариев в указанном каталоге, либо не найдет каталог, он об этом сообщит в лог и продолжит работу без ошибок.