Друзья, данное расширение предназначено для формирования текста команды для последующего выполнения через метод глобального контекста "ЗапуститьПриложение".
В расширении реализовано:
- Склейка команд
- Подстановка переменных
- Переходы по условиям
- Запуск регламентным заданием
Рассмотрим базовую функциональность на примере конвертации хранилища 1с в Git в формате EDT. Предполагаем что EDT и Git установлены, также выполнено создание проекта и выгружена первая версия хранилища, а структура каталогов проекта имеет следующий вид:
- D:\Workspace\Project\cs\repo - конвертируемое хранилище 1c
- D:\Workspace\Project\cs\gitsync - служебная папка с временными файлами
- D:\Workspace\Project\cs\cs_1_0 - рабочий каталог проекта (репозиторий Git)
- D:\Workspace\Base\cs_gitsync - пустая база 1с c конвертируемым расширением без подключения к хранилищу
- D:\Workspace\Base\cs_gitsync_bind - пустая база 1с c конвертируемым расширением с подключением к хранилищу
- D:\Workspace\Base\1CE\rosbr\cs_gitsync - пустой каталог для импорта конфигурации в EDT
Для конвертации хранилища, нам необходимо последовательно выполнить 10 шагов для каждой версии, воспользуемся конструктором скриптов:
1. Сформировать отчет по истории хранилища для определения версии к выгрузке.
Выполним построение отчета по истории хранилища /ConfigurationRepositoryReport с отбором версий без меток -DoNotIncludeVersionsWithLabels, т.е. предполагается что установленных меток в хранилище нет, будем брать первую версию без метки, а уже после выгрузки установим метку "uploaded to git" - признак выгрузки и в следующую итерацию версия уже не попадет.
Конструктор скриптов позволяет склеивать командные строки и повторно использовать в следующих командах ссылаясь на них. Введем 4 базовые командные строки (заготовки, такие строки не выполняются) и каждую склеим с предыдущей (3я колонка):
№1 Запуск в режиме конфигуратора с отключением стартовых диалогов и доменной авторизации и указанием языка
C:\Program Files\1cv8\8.3.22.1923\bin\1cv8" DESIGNER /WA- /DisableStartupDialogs /L ru /VL ru
№2 Добавление ведения логов в файл
/Out "D:\Workspace\Project\cs\gitsync\log.txt" -NoTruncate
№3 Указание строки соединения с информационной базой
/IBConnectionString "File=""D:\Workspace\Base\cs_gitsync"";" /N "" /P ""
№4 Указание параметров подключения к хранилищу
/ConfigurationRepositoryF "D:\Workspace\Project\cs\repo" /ConfigurationRepositoryN "gitsync" /ConfigurationRepositoryP ""
Введем командную строку №5, опишем параметры построения отчета по истории хранилища и укажем ссылку на строку №4. По цепочке связей выполнится склеивание всех предыдущих и добавление новой, при этом изменение любой строки приведет к изменению всех ссылающихся.
/ConfigurationRepositoryReport "D:\Workspace\Project\cs\gitsync\ConfigurationRepositoryReport.mxl" -DoNotIncludeVersionsWithLabels -Extension "КонструкторСкриптов"
2. Извлечь из отчета по истории хранилища номер версии, автора и комментарий.
Для извлечения свойств версии из файла mxl "D:\Workspace\Project\cs\gitsync\ConfigurationRepositoryReport.mxl" воспользуемся командой "Инициализация переменных" способной выполнять произвольный код.
Исполнение произвольного кода осуществляется с доступом к 2ум переменным "ВыполнениеПараметры" (структура, ключи которой можно использовать в качестве шаблонов подстановки), "КомандаПараметры" (массив переданных входящих параметров).
Произвольный код команды №6:
// Выполним чтение свойств следующей версии к выгрузке
// Инициализируем соответсиве свойств параметрам
СвойствоПараметрИмяСоответствие = Новый Соответствие;
СвойствоПараметрИмяСоответствие.Вставить("Версия:", "ХранилищеВерсияНомер");
СвойствоПараметрИмяСоответствие.Вставить("Пользователь:", "ХранилищеВерсияАвтор");
СвойствоПараметрИмяСоответствие.Вставить("Дата создания:", "ХранилищеВерсияДатаСоздания");
СвойствоПараметрИмяСоответствие.Вставить("Время создания:", "ХранилищеВерсияВремяСоздания");
СвойствоПараметрИмяСоответствие.Вставить("Версия конфигурации:", "ХранилищеКонфигурацияВерсия");
СвойствоПараметрИмяСоответствие.Вставить("Комментарий:", "ХранилищеВерсияКомментарий");
// Выполним чтение табличного документа
ТабличныйДокументФайлИмя = КомандаПараметры[0];
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.Прочитать(ТабличныйДокументФайлИмя);
ЧтениеСтрокПродолжить = Истина;
ТабличныйДокументСтрокиМассив = Новый Массив;
Для Сч = 5 По 10 Цикл
СвойствоОбластьИмя = СтрШаблон("R%1C1", Сч);
ЗначениеОбластьИмя = СтрШаблон("R%1C2:R%1C%2", Сч, ТабличныйДокумент.ШиринаТаблицы);
Свойство = ТабличныйДокумент.Область(СвойствоОбластьИмя).Текст;
Значение = ТабличныйДокумент.Область(ЗначениеОбластьИмя).Текст;
ПараметрИмя = СвойствоПараметрИмяСоответствие[Свойство];
Если ЗначениеЗаполнено(ПараметрИмя) Тогда
ВыполнениеПараметры.Вставить(ПараметрИмя, Значение);
Иначе
ОшибкаТекст = СтрШаблон("Ошибка разбора отчета по невыгруженным версиям хранилища: %1", ТабличныйДокументФайлИмя);
ВызватьИсключение ОшибкаТекст;
КонецЕсли;
КонецЦикла;
По аналогии выполним формирование текста коммита и очистку служебных каталогов. Подробнее с содержимым можно ознакомиться установив расширение и выполнив заполнение по шаблону. Команда "Загрузить шаблон конвертации хранилища" расположена в группе "Еще" элемента справочника "Скрипты (КС)". Шаблон содержит в себе рассматриваемый пример.
3. Обновить конфигурацию указанной версией из хранилища.
Добавим команду №9 и установим шаблон подмены [ХранилищеВерсияНомер], который заполнится из переменной "ВыполнениеПараметры" инициализированной командой №6.
/ConfigurationRepositoryUpdateCfg -force -v [ХранилищеВерсияНомер] -Extension "КонструкторСкриптов"
4. Выгрузить загруженную из хранилища конфигурацию в файлы.
Добавим команду №10.
/DumpConfigToFiles "D:\Workspace\Project\cs\gitsync\ConfigDumpFiles" -force -Extension "КонструкторСкриптов"
5. Импортировать файлы конфигурации в новый проект EDT.
Добавим команду №11.
cmd /C D:\Program\1CE\components\1c-enterprise-ring-0.11.8+4-x86_64\ring edt@2022.2.0:x86_64 workspace import --configuration-files "D:\Workspace\Project\cs\gitsync\ConfigDumpFiles" --workspace-location "D:\Workspace\Base\1CE\rosbr\cs_gitsync" --project-name "cs_gitsync" --version "8.3.22"
6. Переместить папки исходников импортированного в каталог Git.
Добавим команду №12.
cmd /C move "D:\Workspace\Base\1CE\rosbr\cs_gitsync\cs_gitsync\src" "D:\Workspace\Project\cs\cs_1_0\src"
7. Выполнить индексацию Git.
Добавим команды №13 и 14.
cmd /C cd /d "D:\Workspace\Project\cs\cs_1_0\" && git add --all ./
8. Выполнить коммит.
Добавим команду №15 и установим шаблон подмены [ХранилищеВерсияКомментарийФайлИмя], инициализированный командой №7.
cmd /C cd /d "D:\Workspace\Project\cs\cs_1_0\" && git commit -F "[ХранилищеВерсияКомментарийФайлИмя]" --allow-empty-message --cleanup=verbatim
9. Установить автора коммита.
Добавим команду №16 и установим шаблон подмены [ХранилищеВерсияАвтор], инициализированный командой №6.
cmd /C cd /d "D:\Workspace\Project\cs\cs_1_0\" && git commit --amend --author "[ХранилищеВерсияАвтор] <[ХранилищеВерсияАвтор]@rosbr.com>" --no-edit
10. Установить метку версии хранилища 1с "uploaded to git".
Добавим команду №17 и установим шаблон подмены [ХранилищеВерсияНомер], инициализированный командой №6.
/IBConnectionString "File=""D:\Workspace\Base\cs_gitsync_bind"";" /N "" /P "" /ConfigurationRepositoryF "D:\Workspace\Project\cs\repo" /ConfigurationRepositoryN "gitsync" /ConfigurationRepositoryP "" /ConfigurationRepositorySetLabel -v "[ХранилищеВерсияНомер]" -name "uploaded to git" -Extension "КонструкторСкриптов"
На этом версия конфигурации хранилища выгружена в Git, остается только настроить регламентное задание. В форме списка справочника "Скрипты (КС)" в группе "Ещё" доступна команда "Инициализировать обработку регламентных заданий (КС)". Эта команда создает обработку "Обработка регламентных заданий (КС)" в дополнительных отчетах и обработках, в которой для каждого скрипта будет отдельная команда и расписание.
Как видите, все просто, данная разработка в помощь!
Примеры и исходный код доступен на GitLab.
-----
Требования:
- Версия платформы >= 8.3.14, тестировалось на 8.3.14.2095
- БСП >= 3.1, тестировалось на 3.1.1.91
- Отключенная настройка "Безопасный режим" в параметрах расширения
-----
Ссылки:
- Проект в GitLab