Приложение oscript для загрузки и обработки релизов конфигураций 1С.
Требуются следующие библиотеки и инструменты:
Важно 1: Архиватор 7-zip должен поддерживать распаковку rar-архивов. Для этого на linux нужно поставить пакет с поддержкой такого режима. Например, на Ubuntu:
apt-get install p7zip-rar p7zip-full
Важно 2: Для конвертации в формат ЕДТ необходима установленная ЕДТ и ring
-
выполняет загрузку приложений с сайта релизов 1С
-
для релизов конфигураций доступны следующие возможности:
- загрузка указанных версий конфигурации
- распаковка архива конфигурации (требуется 7-zip)
- распаковка файлов шаблона конфигурации в указанный каталог (из формата EFD)
- последовательная сборка CF-файлов конфигурации из CFU-файлов обновлений (требуется начальный CF)
- Конвертация в формат ЕДТ (при необходимости)
- последовательная выгрузка версий конфигурации в формате XML в указанный репозитарий GIT
-
Реализованы 2 варианта работы:
- запуск отдельных команд для каждого этапа обработки релизов конфигураций
- экспериментальный пакетный режим с конвейерной обработкой данных (pipeline), т.е. каждая порция данных, полученная в текущей обработке передается в указанный(-ные) в настройках обработчик(-и) для последующей обработки
-
настройки пакетного режима описываются в формате JSON (см. Файл настроек)
-
process (p) - выполняет обработку данных настройкам из файла (.json)
- --work-dir - путь к рабочему каталогу (по умолчанию: текущий каталог)
- <Путь> - путь к файлу настроек (по умолчанию ./yardsettings.json)
Пользователя и пароль портала 1С можно передать с помощью переменных среды:
YARD_RELEASES_USER
- пользователь портала 1С;YARD_RELEASES_PWD
- пароль пользователя портала 1С.
yard process --work-dir "c:\tmp" ".\examples\releases2templates.json"
см. Файл настроек
- releases (r) - работа с релизами с сайта 1С
-
--user - пользователь портала 1С
-
--pwd - пароль пользователя портала 1С
-
list (l) - получение списка приложений и версий с портала 1С
- --app-filter - фильтр приложений по имени (регулярное выражение)
- --version-filter - фильтр версий по номеру (регулярное выражение)
- --version-start-date - фильтр по начальной дате версии (формат: dd.MM.yyyy, включая дату)
- --version-end-date - фильтр по последней дате версии (формат: dd.MM.yyyy, включая дату)
- --output-file - путь к фалу (json) для сохранения списка приложений и версий
-
yard releases --user "user" --pwd "pwd" list --app-filter "Библиотека стандартных подсистем.*3\.1" --version-filter 3\.1.* --version-start-date "01.01.2019" --output-file ".\tmp\releases.json"
- get (g) - загрузка указанных версий, указанных приложений с портала 1С
- --app-filter - фильтр приложений по имени (регулярное выражение)
- --version-filter - фильтр версий по номеру (регулярное выражение)
- --version-start-date - фильтр по начальной дате версии (формат: dd.MM.yyyy, включая дату)
- --version-end-date - фильтр по последней дате версии (формат: dd.MM.yyyy, включая дату)
- --distr-filter - фильтр заголовков ссылок на скачивание дистрибутива если не указан, то будет выполнена проверка наличия ссылки ""Полный дистрибутив"", затем ""Дистрибутив обновления""
- --path - каталог для загрузки релизов 1С
- --from-last-version - флаг загрузки версий с номером старше последней версии в каталоге для загрузки (проверяются файлы
description.json
) - --last-version-description - путь к файлу
description.json
с описанием последней загруженной версией - --download-existing - флаг принудительной загрузки ранее загруженных версий в каталоге для загрузки (проверяются файлы
description.json
) - --download-limit - ограничение количества загружаемых версий за 1 запуск
- --download-only - только скачать дистрибутив с сайта и не выполнять дальнейшую обработку
- --download-changelog - Скачать "Новое в версии" в файл changelog.htm
- --extract - флаг распаковки загруженного архива
- --extract-path - каталог для распаковки загруженного архива
- --extract-dir - регулярное выражение, отбора каталогов в архиве EFD для распаковки
- --extract-files - список файлов для распаковки из архива дистрибутива, разделенный "|"
- --extract-existing - флаг принудительной распаковки ранее распакованных дистрибутивов версий в каталоге для распаковки (проверяются файлы
description.json
) - --delete - флаг удаления загруженного архива после распаковки
yard releases --user "user" --pwd "pwd" get --app-filter "Библиотека стандартных подсистем.*3\.1" --version-filter 3\.1.* --version-start-date "01.01.2019" --path ".\tmp\distr" --extract --extract-path ".\tmp\tmplts"
- extract (e) - распаковка шаблона конфигурации 1С из EFD-файла дистрибутива конфигурации 1С
- --path - путь к дистрибутиву конфигурации 1С
- --extract-path - каталог для распаковки загруженного архива
- --extract-dir - регулярное выражение, отбора каталогов в архиве EFD для распаковки
- --extract-files - список файлов для распаковки из архива дистрибутива, разделенный "|"
- --extract-existing - флаг принудительной распаковки ранее распакованных дистрибутивов в каталоге для распаковки (проверяются файлы
description.json
) - --app-name - имя конфигурации 1С (если не указано, значение будет считано из файла 1cv8.mft дистрибутива)
- --app-id - идентификатор конфигурации 1С (если не указано, значение будет считано из файла 1cv8.mft дистрибутива)
- --app-version - версия конфигурации 1С (если не указано, значение будет считано из файла 1cv8.mft дистрибутива)
yard unpack --app-name "Библиотека стандартных подсистем, редакция 3.1" --app-id "SSL31" --app-version "3.1.2.332" --path ".\tmp\distr\SSL31\3.1.2.332" --extract-path ".\tmp\tmplts"
- extract-all (ea) - для всех дистрибутивов в каталоге выполняет распаковку шаблонов конфигураций 1С из EFD-файлов
- --path - путь к каталогу содержащему дистрибутивы конфигурации для распаковки
- --extract-path - каталог для распаковки шаблонов конфигурации
- --extract-dir - регулярное выражение, отбора каталогов в архиве EFD для распаковки
- --extract-files - список файлов для распаковки из архива дистрибутива, разделенный "|"
- --extract-existing - флаг принудительной распаковки ранее распакованных дистрибутивов в каталоге для распаковки (проверяются файлы
description.json
)
yard unpack --app-name "Библиотека стандартных подсистем, редакция 3.1" --app-id "SSL31" --app-version "3.1.2.332" --path ".\tmp\distr\SSL31\3.1.2.332" --extract-path ".\tmp\tmplts"
- build-cf (b) - выполняет обновление конфигурации (CF) файлом обновления (CFU) и помещает результат в новый файл CF
- --cf-path - путь к файлу конфигурации (CF) предыдущей версии
- --cfu-path - путь к файлу обновления (CFU) новой версии
- --ibconnection - строка подключения к служебной базе 1С для выполнения обновления (если не указана, будет использована временная ИБ)
yard build-cf --cf-path ".\tmp\tmplts\1c\AccountingCorp\3_0_64_54\1cv8.cf" --cfu-path ".\tmp\tmplts\1c\AccountingCorp\3_0_66_53\1cv8.cfu" --ibconnection "/SMyServer\TMP_BASE"
- build-all (ba) - для всех файлов обновления (CFU) в каталоге ищет доступные для обновления файлы(CF) и выполняет обновление
- --path - путь к каталогу содержащему версии конфигурации для формирования CF-файлов
- --ibconnection - строка подключения к служебной базе 1С для выполнения обновления (если не указана, будет использована временная ИБ)
yard build-all --path ".\tmp\tmplts\1c\AccountingCorp" --ibconnection "/SMyServer\TMP_BASE"
- upload-cf (ucf) - выполняет выгрузку конфигурации 1С из файла конфигурации (CF) в репозитарий git
- --cf-path - путь к файлу конфигурации (CF) для выгрузки
- --git-path - путь к репозитарию git
- --git-branch - имя ветки git в которую будет выполняться выгрузка (по умолчанию: base1c)
- --git-author - имя автора коммита в git (по умолчанию: 1c)
- --git-author-email - почта автора коммита в git (по умолчанию: [email protected])
- --git-commit-date - дата коммита в git в формате POSIX (формат: yyyy-MM-dd hh:mm:ss, по умолчанию: <ТекущаяУниверсальнаяДата>)
- --git-commit-message - сообщение коммита в git
- --ibconnection - строка подключения к служебной базе 1С для выполнения обновления (если не указана, будет использована временная ИБ)
yard upload-cf --cf-path ".\tmp\tmplts\SSL31\3.1.1.91\1cv8.cf" --git-path ".\tmp\repo\SSL31" --git-commit-message "Тест выгрузки БСП 3.1.1.91" --ibconnection "/SMyServer\TMP_BASE"
- upload-all (ua) - выполняет выгрузку всех версий конфигурации 1С в каталоге в репозитарий git
- --path - путь к каталогу содержащему версии конфигурации для выгрузки в git
- _--cf-name - имя файла конфигурации (по умолчанию: 1cv8.cf)
- --git-path - путь к репозитарию git
- --git-author - имя автора коммита в git (по умолчанию: 1c)
- --git-author-email - почта автора коммита в git (по умолчанию: [email protected])
- --ibconnection - строка подключения к служебной базе 1С для выполнения обновления (если не указана, будет использована временная ИБ)
yard upload-all --path ".\tmp\tmplts\SSL31\" --cfname "1cv8.cf" --git-path ".\tmp\repo\SSL31" --ibconnection "/SMyServer\TMP_BASE"
Управляющая обработка-менеджер, читает настройки, запускает и управляет обработкой данных.
Обработка для интерактивного выполнения команд обработки релизов.
Функция ОписаниеПараметров() - возвращает структуру с описанием параметров обработки
Функция МенеджерОбработкиДанных() - возвращает ссылку на вызывающую/управляющую обработку - менеджер обработки данных
Процедура УстановитьМенеджерОбработкиДанных(Знач НовыйМенеджерОбработкиДанных) - устанавливает ссылку на вызывающую/управляющую обработку - менеджер обработки данных
Функция Идентификатор() - возвращает идентификатор обработки, установленный при инициализации в менеджере обработки данных
Процедура УстановитьИдентификатор(Знач НовыйИдентификатор) - устанавливает идентификатор обработки, вызывается при инициализации в менеджере обработки данных
Функция ПараметрыОбработкиДанных() - возвращает значения параметров обработки данных
Процедура УстановитьПараметрыОбработкиДанных(Знач НовыеПараметры) - устанавливает значения параметров обработки данных
Функция ПараметрОбработкиДанных(Знач ИмяПараметра) - возвращает значение указанного параметра обработки данных
Процедура УстановитьПараметрОбработкиДанных(Знач ИмяПараметра, Знач Значение) - устанавливает значение указанного параметра обработки
Процедура УстановитьДанные(Знач ВходящиеДанные) - устанавливает данные для обработки
Процедура ОбработатьДанные() - выполняет обработку данных
Функция РезультатОбработки() - возвращает результаты обработки данных
Процедура ЗавершениеОбработкиДанных() - выполняет действия при окончании обработки данных и оповещает обработку-менеджер о завершении обработки данных
Получает с сайта 1С список релизов и выводит в консоль или в указанный файл.
- ИмяПользователя - Имя пользователя сайта релизов 1С
- ПарольПользователя - Пароль пользователя сайта релизов 1С
- ВремяОжиданияОтвета - Время ожидания ответа от внешнего ресурса (HTTP) в секундах
- ФильтрПриложений - Фильтр имен приложений
- ФильтрВерсий - Фильтр номеров версий
- ФильтрВерсийНачинаяСДаты - Фильтр по начальной дате версии (включая)
- ФильтрВерсийДоДаты - Фильтр по последней дате версии (включая)
- ПутьКФайлуДляСохранения - путь к фалу (json) для сохранения списка приложений и версий
Выполняет загрузку указанных приложений и версий с сайта 1С и, при необходимости, распаковывает файлы шаблона конфигурации 1С.
- ИмяПользователя - Имя пользователя сайта релизов 1С
- ПарольПользователя - Пароль пользователя сайта релизов 1С
- ВремяОжиданияОтвета - Время ожидания ответа от внешнего ресурса (HTTP) в секундах
- ФильтрПриложений - Фильтр имен приложений
- ФильтрВерсий - Фильтр номеров версий
- ФильтрВерсийНачинаяСДаты - Фильтр по начальной дате версии (включая)
- ФильтрВерсийДоДаты - Фильтр по последней дате версии (включая)
- ФильтрДистрибутива - фильтр заголовков ссылок на скачивание дистрибутива если не указан, то будет выполнена проверка наличия ссылки "Полный дистрибутив", затем "Дистрибутив обновления"
- СкачиватьНовоеВВерсии - Истина - будут загружены "Новое в версии" с сайта в файл changelog.htm. По умолчанию: Ложь.
- ПолучатьБетаВерсии - Истина - будут получены ознакомительные версии
- КаталогДляСохранения - каталог для загрузки релизов 1С
- НачатьСПоследнейВерсии - Истина - будут загружены релизы с версией старше последней найденной в каталоге для загрузки (проверяются файлы description.json) Ложь - будут загружены все релизы с учетом других настроек
- ОписаниеПоследнейВерсии - путь к файлу description.json с описанием последней загруженной версии Ложь - будут загружены все релизы с учетом других настроек
- ЗагружатьСуществующие - Истина - будут загружены все найденные релизы независимо от существующих в каталоге для загрузки Ложь - будут загружены только отсутствующие в каталоге для загрузки релизы (проверяются файлы description.json)
- ОграничениеКоличества - ограничение количества загружаемых за 1 раз версий
- ТолькоСкачать - Истина - только скачать дистрибутив с сайта и не выполнять дальнейшую обработку
- РаспаковыватьEFD - Истина - если загруженный архив содержит упакованный шаблон конфигурации (содержит файл 1cv8.efd), то он будет распакован
- КаталогДляРаспаковкиEFD - каталог для распаковки шаблона конфигурации
- КаталогВАрхивеДляРаспаковкиEFD - регулярное выражение, отбора каталогов в архиве EFD для распаковки
- ФайлыДляРаспаковкиEFD - список файлов для распаковки из архива EFD дистрибутива конфигурации, если не указан, то распаковываются все файлы
- РаспаковыватьСуществующие - Истина - будут распакованы все найденные дистрибутивы независимо от существующих в каталоге для распаковки Ложь - будут распакованы только отсутствующие в каталоге для распаковки дистрибутивы (проверяются файлы description.json)
- УдалитьПослеРаспаковкиEFD - Истина - после распаковки загруженный архив будет удален
Выполняет распаковку файлов шаблона конфигурации 1С из EFD-файла дистрибутива.
- Приложение_Имя - имя конфигурации 1С (если не указано, значение будет считано из файла 1cv8.mft дистрибутива)
- Приложение_Ид - идентификатор конфигурации 1С (если не указано, значение будет считано из файла 1cv8.mft дистрибутива)
- Приложение_Версия - версия конфигурации 1С (если не указано, значение будет считано из файла 1cv8.mft дистрибутива)
- ПутьКДистрибутиву - путь к дистрибутиву конфигурации 1С
- КаталогДляРаспаковкиEFD - каталог для распаковки шаблона конфигурации
- КаталогВАрхивеДляРаспаковкиEFD - регулярное выражение, отбора каталогов в архиве EFD для распаковки
- ФайлыДляРаспаковкиEFD - список файлов для распаковки из архива EFD дистрибутива конфигурации, если не указан, то распаковываются все файлы
- РаспаковыватьСуществующие - Истина - будут распакованы все найденные дистрибутивы независимо от существующих в каталоге для распаковки Ложь - будут оаспакованы только отсутствующие в каталоге для распаковки дистрибутивы (проверяются файлы description.json)
Выполняет распаковку файлов шаблона конфигурации 1С из EFD-файла дистрибутива.
- Приложение_Имя - имя конфигурации 1С (если не указано, значение будет считано из файла 1cv8.mft дистрибутива)
- Приложение_Ид - идентификатор конфигурации 1С (если не указано, значение будет считано из файла 1cv8.mft дистрибутива)
- Приложение_Версия - версия конфигурации 1С (если не указано, значение будет считано из файла 1cv8.mft дистрибутива)
- ПутьКДистрибутиву - путь к дистрибутиву конфигурации 1С
- КаталогДляРаспаковкиEFD - каталог для распаковки шаблона конфигурации
- КаталогВАрхивеДляРаспаковкиEFD - регулярное выражение, отбора каталогов в архиве EFD для распаковки
- ФайлыДляРаспаковкиEFD - список файлов для распаковки из архива EFD дистрибутива конфигурации, если не указан, то распаковываются все файлы
- РаспаковыватьСуществующие - Истина - будут распакованы все найденные дистрибутивы независимо от существующих в каталоге для распаковки Ложь - будут оаспакованы только отсутствующие в каталоге для распаковки дистрибутивы (проверяются файлы description.json)
Выполняет обновление конфигурации (CF) файлом обновления (CFU) и помещает результат в новый файл CF.
- ПутьККонфигурации - путь к файлу конфигурации (CF) предыдущей версии
- ПутьКОбновлению - путь к файлу обновления (CFU) новой версии
- База_СтрокаСоединения - строка подключения к служебной базе 1С для выполнения обновления (если не указана, будет использована временная ИБ)
Для всех файлов обновления (CFU) в каталоге ищет доступные для обновления файлы(CF) и выполняет обновление.
- ПутьККаталогуКонфигураций - путь к каталогу содержащему версии конфигурации для формирования CF-файлов
- База_СтрокаСоединения - строка подключения к служебной базе 1С для выполнения обновления (если не указана, будет использована временная ИБ)
Выполняет выгрузку конфигурации 1С из файла конфигурации (CF) в репозитарий git.
- ПутьККонфигурации - путь к файлу конфигурации (CF) для выгрузки
- РепозитарийГит - путь к репозитарию git
- ИмяВеткиГит - имя ветки git в которую будет выполняться выгрузка (по умолчанию: base1c)
- ИмяАвтора - имя автора коммита в git (по умолчанию: 1c)
- ПочтаАвтора - почта автора коммита в git (по умолчанию: [email protected])
- ДатаКоммита - дата коммита в git в формате POSIX
- СообщениеКоммита - сообщение коммита в git
- База_СтрокаСоединения - строка подключения к служебной базе 1С для выполнения обновления (если не указана, будет использована временная ИБ)
- Конвертировать в формат ЕДТ - флаг конвертации в формат ЕДТ
- Относительный путь к исходникам - Относительный путь внутри репозитории к исходникам проекта, по умолчанию (src/cf)
Выполняет выгрузку конфигурации 1С из файла конфигурации (CF) в репозитарий git.
- ПутьККонфигурации - путь к каталогу содержащему версии конфигурации для выгрузки в git
- ИмяФайлаКонфигурации - имя файла конфигурации (по умолчанию: "1Cv8.cf")
- РепозитарийГит - путь к репозитарию git
- ИмяАвтора - имя автора коммита в git (по умолчанию: 1c)
- ПочтаАвтора - почта автора коммита в git (по умолчанию: [email protected])
- База_СтрокаСоединения - строка подключения к служебной базе 1С для выполнения обновления (если не указана, будет использована временная ИБ)
- Конвертировать в формат ЕДТ - флаг конвертации в формат ЕДТ
- Относительный путь к исходникам - Относительный путь внутри репозитории к исходникам проекта, по умолчанию (src/cf)
Файл настроек описывает последовательность вызова обработчиков для обработки данных. обработчик = обработка 1С реализующая вышеуказанный API.
|-> Описание обработчика
| |- ИдОбработчика - строковый идентификатор обработчика (необязательный)
| |- ИмяОбработки - имя класса обработчика
| |- ПутьКОбработке - путь к oscript-файлу класса обработчика
| |- Параметры - структура параметров обработки
| | |- <просто параметр> - параметр простого типа
| | |- <параметр из данных обработчика> - параметр вычисляемый обработчиком
| | | |- ИдОбработчика - идентификатор обработчика из которого будет получен параметр
| | | |- ФункцияПолученияЗначения - имя функции получения значения параметра (по умолчанию: "ПолучитьРезультат")
| |- Обработчики - массив обработчиков данных полученных на текущем уровне
| |- <Описание обработчика>* - структура, аналогичная данной
|____________________|
- $settingsDir - каталог файла настроек
- $yardDir - каталог запуска скрипта
- $workDir - указанный при запуске рабочий каталог (по умолчанию: каталог файла настроек)
Пример файла настроек чтения словарей журнала регистрации
{
// имя класса обработчика получения списка релизов
"ИмяОбработки":"СписокРелизов1С",
"Параметры":{
"ИмяПользователя" : "user",
"ПарольПользователя" : "password",
"ВремяОжиданияОтвета" : 30,
// Регулярки для фильтра приложений/конфигураций по имени
"ФильтрПриложений" : ["Библиотека стандартных подсистем.*3\\.1"],
// Регулярки для фильтра версий по номеру
"ФильтрВерсий" : ["3\\.1\\.2.*"],
"ФильтрВерсийНачинаяСДаты" : "2020-01-01T00:00:00",
},
"Обработчики":[
{
// имя класса обработчика загрузки релизов
"ИмяОбработки":"ЗагрузчикРелизов1С",
"ИдОбработчика":"ЗагрузчикБСП",
"Параметры":{
"ИмяПользователя" : "user",
"ПарольПользователя" : "password",
"КаталогДляСохранения" : "$workDir\\tmp\\distr",
// флаг распаковки шаблона
"РаспаковыватьEFD" : true,
// путь распаковки шаблона конфигурации
"КаталогДляРаспаковкиEFD" : "$workDir\\tmp\\tmplts"
}
}
]
}
Больше примеров расположены в каталоге examples.