diff --git a/.github/workflows/qa.yml b/.github/workflows/qa.yml index e2779a5..f01439d 100644 --- a/.github/workflows/qa.yml +++ b/.github/workflows/qa.yml @@ -13,7 +13,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - oscript_version: ['1.4.0'] + oscript_version: ['1.8.3'] steps: # Загрузка проекта diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3f8f5b5..f1364a4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - oscript_version: ['1.4.0'] + oscript_version: ['1.8.3'] steps: # Загрузка проекта diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 641c82c..9555aac 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -13,7 +13,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - oscript_version: ['1.4.0'] + oscript_version: ['1.8.3'] steps: # Загрузка проекта diff --git a/packagedef b/packagedef index ad1a0b5..89a2750 100644 --- a/packagedef +++ b/packagedef @@ -1,5 +1,5 @@ Описание.Имя("v8metadata-reader") - .Версия("0.3.1") + .Версия("0.3.6") .ЗависитОт("logos") .ЗависитОт("xml-parser") .ЗависитОт("csv") diff --git "a/src/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" "b/src/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" index d566c27..8326b76 100644 --- "a/src/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" +++ "b/src/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.os" @@ -31,7 +31,7 @@ КонецПопытки; - Возврат ФайлСуществует( _ФайлКонфигурации ); + Возврат ФайлСуществует( _ФайлКонфигурации ) ИЛИ НайтиФайлы(пКаталогВыгрузки,"*.mdo", Истина).Количество() > 0; КонецФункции diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\260.os" index c32ad60..709fc1a 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\260.os" @@ -50,7 +50,7 @@ текУровень = _УровниФайлов[пИмяФайла]; - Если Не текУровень = Неопределено Тогда + Если НЕ текУровень = Неопределено Тогда Возврат текУровень; @@ -84,7 +84,7 @@ массивФайлов = Новый Массив; - Для каждого цЭлемент Из _ИнформацияОПоддержке Цикл + Для Каждого цЭлемент Из _ИнформацияОПоддержке Цикл Если УровеньСоответствуетУсловию(цЭлемент.Support, пУровень, пМодификатор) Тогда @@ -138,7 +138,7 @@ _УровниФайлов = Новый Соответствие; - Для каждого цЭлемент Из _ИнформацияОПоддержке Цикл + Для Каждого цЭлемент Из _ИнформацияОПоддержке Цикл текУровень = цЭлемент.Support; @@ -196,23 +196,32 @@ _классы = Классы(); - Для каждого цФайлМодуля Из НайтиФайлы(_КаталогИсходников, "*.bsl", Истина) Цикл + Для Каждого цФайлМодуля Из НайтиФайлы(_КаталогИсходников, "*.bsl", Истина) Цикл - структФайла = Новый Структура; - структФайла.Вставить("file", цФайлМодуля.ПолноеИмя); - структФайла.Вставить("uuid", ПолучитьУУИДПоФайлу(цФайлМодуля.ПолноеИмя)); - - уровеньПоддержки = 4; - - Для каждого цЭлементПоддержки Из ОбеспечитьЭлемент(описанияПоддержки, структФайла.uuid, Новый Массив) Цикл + Попытка - уровеньПоддержки = Мин(уровеньПоддержки, Число(цЭлементПоддержки)); + структФайла = Новый Структура; + структФайла.Вставить("file", цФайлМодуля.ПолноеИмя); + структФайла.Вставить("uuid", ПолучитьУУИДПоФайлу(цФайлМодуля.ПолноеИмя)); - КонецЦикла; - - структФайла.Вставить("Support", уровеньПоддержки); - - описанияФайлов.Добавить(структФайла); + уровеньПоддержки = 4; + + Для Каждого цЭлементПоддержки Из ОбеспечитьЭлемент(описанияПоддержки, структФайла.uuid, Новый Массив) Цикл + + уровеньПоддержки = Мин(уровеньПоддержки, Число(цЭлементПоддержки)); + + КонецЦикла; + + структФайла.Вставить("Support", уровеньПоддержки); + + описанияФайлов.Добавить(структФайла); + + Исключение + + _лог.Ошибка("Не удалось получить описание поддержки для <%1> по причине: + | %2", цФайлМодуля.ПолноеИмя, ОписаниеОшибки()); + + КонецПопытки; КонецЦикла; @@ -311,7 +320,7 @@ УровеньПоддержки = данные[сдвигОбъекта + ид_УровеньОбъекта]; // 0 - не редактируется, 1 - с сохранением поддержки, 2 - снято - Если Не РазрешеныИзменения Тогда + Если НЕ РазрешеныИзменения Тогда УровеньПоддержки = 0; @@ -352,7 +361,7 @@ значение = пСоответствие[пКлюч]; - Если Не значение = Неопределено Тогда + Если НЕ значение = Неопределено Тогда Возврат значение; @@ -433,8 +442,8 @@ файлОписания = Новый Файл(ДанныеОписания.Путь); - Если Не файлОписания.Существует() - ИЛИ Не файлОписания.ЭтоФайл() Тогда + Если НЕ файлОписания.Существует() + ИЛИ НЕ файлОписания.ЭтоФайл() Тогда _лог.Предупреждение(СтрШаблон("Не удалось найти xml файл для <%1>. Искали в <%2>", пПутьКФайлу, ДанныеОписания.Путь)); @@ -442,7 +451,7 @@ КонецЕсли; - Если Не ЗначениеЗаполнено(ДанныеОписания.Имя) Тогда + Если НЕ ЗначениеЗаполнено(ДанныеОписания.Имя) Тогда ууид = УУИДИзЗаголовкаФайлаОписания(ДанныеОписания); @@ -473,7 +482,7 @@ КонецЕсли; - Если Не ууид = Неопределено + Если НЕ ууид = Неопределено И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ВРег(ЧтениеXML.Имя) = ВРег("Name") Тогда @@ -511,7 +520,7 @@ Пока ЧтениеXML.Прочитать() Цикл Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента - И Не _классы.Найти(ВРег(ЧтениеXML.Имя)) = Неопределено Тогда + И НЕ _классы.Найти(ВРег(ЧтениеXML.Имя)) = Неопределено Тогда ууид = ЧтениеXML.ПолучитьАтрибут("uuid"); Прервать; @@ -800,7 +809,7 @@ КонецЕсли; - Для каждого цЭлемент Из классы Цикл + Для Каждого цЭлемент Из классы Цикл классыВРег.Добавить(ВРег(префикс + цЭлемент)); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\203\321\202\321\2141\320\241\320\237\320\276\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\274.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\203\321\202\321\2141\320\241\320\237\320\276\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\274.os" index f06c21d..8bf89b5 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\203\321\202\321\2141\320\241\320\237\320\276\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\274.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\203\321\202\321\2141\320\241\320\237\320\276\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\274.os" @@ -58,7 +58,7 @@ имяМетаданных = ВРег(компоненты[0]); каталог = _КэшСоответствий.Метаданные[имяМетаданных]; - Если Не ЗначениеЗаполнено(каталог) Тогда + Если НЕ ЗначениеЗаполнено(каталог) Тогда Возврат ""; @@ -70,28 +70,20 @@ имяФайла = _КэшСоответствий.Модули[ВРег(компоненты[1])]; - Если ЗначениеЗаполнено(имяФайла) Тогда + Если НЕ ЗначениеЗаполнено(имяФайла) Тогда Если _ЭтоВыгрузкаКонфигуратора Тогда - компонентыПути.Добавить("Ext"); - - КонецЕсли; - - Иначе - - Если _ЭтоВыгрузкаКонфигуратора Тогда - имяФайла = компоненты[1] + ".xml"; - + Иначе - + имяФайла = компоненты[1] + ".mdo"; - + КонецЕсли; КонецЕсли; - + компонентыПути.Добавить(имяФайла); путь = СтрСоединить(компонентыПути, ПолучитьРазделительПути()); @@ -132,7 +124,7 @@ _лог.Отладка("Это выгрузка конфигурации: " + _ЭтоВыгрузкаКонфигуратора); _лог.Отладка("Это выгрузка EDT: " + _ЭтоВыгрузкаЕДТ); - Если (Не _ЭтоВыгрузкаЕДТ И Не _ЭтоВыгрузкаКонфигуратора) + Если (НЕ _ЭтоВыгрузкаЕДТ И НЕ _ЭтоВыгрузкаКонфигуратора) ИЛИ (_ЭтоВыгрузкаЕДТ И _ЭтоВыгрузкаКонфигуратора) Тогда ВызватьИсключение "Не удалось определить тип выгрузки"; @@ -144,7 +136,7 @@ Функция ПутьПоПолномуМетаданному(пМетаданные, компонентыПути) компоненты = СтрРазделить(пМетаданные, "."); - + имяМетаданных = ВРег(компоненты[0]); типОбъекта = ВРег(компоненты[2]); @@ -152,13 +144,64 @@ Если ЗначениеЗаполнено(имяФайла) Тогда + Если _ЭтоВыгрузкаКонфигуратора Тогда + + компонентыПути.Добавить("Ext"); + + КонецЕсли; + компонентыПути.Добавить(имяФайла); - ИначеЕсли имяМетаданных = "ОБЩАЯФОРМА" Тогда + ИначеЕсли ЭтоВнешнийИсточникДанных(имяМетаданных) Тогда + + Если ЭтоТаблица(типОбъекта) Тогда + компонентыПути.Добавить("Tables"); + компонентыПути.Добавить(компоненты[3]); + КонецЕсли; + + Если компоненты.Количество() = 5 + И ЭтоМодульОбъекта(компоненты[4]) Тогда + + компонентыПути.Добавить("ObjectModule.bsl"); + + ИначеЕсли компоненты.Количество() = 5 + И ЭтоМодульМенеджера(компоненты[4]) Тогда + + компонентыПути.Добавить("ManagerModule.bsl"); + + ИначеЕсли компоненты.Количество() > 5 + И ЭтоФорма(компоненты[4]) Тогда + + компонентыПути.Добавить("Forms"); + + Если компоненты.Количество() > 6 Тогда + компонентыПути.Добавить(компоненты[5]); + КонецЕсли; + + Если компоненты.Количество() = 7 + И ЭтоФорма(компоненты[6]) Тогда + + ДополнитьКомпоненты_Форма(компонентыПути); + + ИначеЕсли компоненты.Количество() > 7 + И ЭтоФорма(компоненты[6]) + И ЭтоМодуль(компоненты[7]) Тогда + + ДополнитьКомпоненты_МодульФормы(компонентыПути); + + Иначе + + _лог.Предупреждение("1. Не поддерживаемый объект. Метаданные: %1, Имя файла: %2, Имя метаданных %3, Тип объекта %4", пМетаданные, имяФайла, имяМетаданных, типОбъекта); + + КонецЕсли; + + КонецЕсли; + + ИначеЕсли ЭтоОбщаяФорма(имяМетаданных) Тогда ДополнитьКомпоненты_МодульФормы(компонентыПути); - ИначеЕсли типОбъекта = "ФОРМА" Тогда + ИначеЕсли ЭтоФорма(типОбъекта) Тогда компонентыПути.Добавить("Forms"); @@ -169,23 +212,23 @@ КонецЕсли; Если компоненты.Количество() = 5 - И ВРег(компоненты[4]) = "ФОРМА" Тогда + И ЭтоФорма(компоненты[4]) Тогда ДополнитьКомпоненты_Форма(компонентыПути); ИначеЕсли компоненты.Количество() > 5 - И ВРег(компоненты[4]) = "ФОРМА" - И ВРег(компоненты[5]) = "МОДУЛЬ" Тогда + И ЭтоФорма(компоненты[4]) + И ЭтоМодуль(компоненты[5]) Тогда ДополнитьКомпоненты_МодульФормы(компонентыПути); Иначе - _лог.Предупреждение("Не поддерживаемый объект %1", пМетаданные); + _лог.Предупреждение("2. Не поддерживаемый объект. Метаданные: %1, Имя файла: %2, Имя метаданных %3, Тип объекта %4", пМетаданные, имяФайла, имяМетаданных, типОбъекта); КонецЕсли; - ИначеЕсли типОбъекта = "КОМАНДА" Тогда + ИначеЕсли ЭтоКоманда(типОбъекта) Тогда компонентыПути.Добавить("Commands"); @@ -197,7 +240,7 @@ Если компоненты.Количество() > 4 Тогда - Если ВРег(компоненты[4]) = "МОДУЛЬКОМАНДЫ" Тогда + Если ЭтоМодульКоманды(компоненты[4]) Тогда Если _ЭтоВыгрузкаКонфигуратора Тогда @@ -210,15 +253,14 @@ КонецЕсли; КонецЕсли; - Иначе - _лог.Предупреждение("Не поддерживаемый объект %1", пМетаданные); + _лог.Предупреждение("3. Не поддерживаемый объект. Метаданные: %1, Имя файла: %2, Имя метаданных %3, Тип объекта %4", пМетаданные, имяФайла, имяМетаданных, типОбъекта); КонецЕсли; Возврат СтрСоединить(компонентыПути, ПолучитьРазделительПути()); - + КонецФункции Процедура ДополнитьКомпоненты_Форма(компонентыПути) @@ -309,7 +351,7 @@ Соответствие.Вставить("ОпределяемыйТип", "DefinedTypes"); Соответствие.Вставить("DefinedType", "DefinedTypes"); - Соответствие.Вставить("ЖурналДокумента", "DocumentJournals"); + Соответствие.Вставить("ЖурналДокументов", "DocumentJournals"); Соответствие.Вставить("DocumentJournal", "DocumentJournals"); Соответствие.Вставить("Нумератор", "DocumentNumerators"); @@ -327,6 +369,7 @@ Соответствие.Вставить("ExchangePlan", "ExchangePlans"); Соответствие.Вставить("ВнешнийИсточник", "ExternalDataSources"); + Соответствие.Вставить("ВнешнийИсточникДанных", "ExternalDataSources"); Соответствие.Вставить("ExternalDataSource", "ExternalDataSources"); Соответствие.Вставить("КритерийОтбора", "FilterCriteria"); @@ -391,6 +434,9 @@ Соответствие.Вставить("Конфигурация", "Configuration"); Соответствие.Вставить("Configuration", "Configuration"); + Соответствие.Вставить("ВнешняяОбработка", "ExternalDataProcessors"); + Соответствие.Вставить("ExternalDataProcessor", "ExternalDataProcessors"); + КонецЕсли; соотВРег = Новый Соответствие; @@ -425,6 +471,77 @@ КонецФункции +Функция ЭтоВнешнийИсточникДанных(Знач ИмяМетаданных) + + имяВРег = ВРег(ИмяМетаданных); + + Возврат имяВРег = "ВНЕШНИЙИСТОЧНИКДАННЫХ" ИЛИ имяВРег = "EXTERNALDATASOURCES"; + +КонецФункции + +Функция ЭтоТаблица(Знач ИмяМетаданных) + + имяВРег = ВРег(ИмяМетаданных); + + Возврат имяВРег = "ТАБЛИЦА" ИЛИ имяВРег = "TABLE"; + +КонецФункции + +Функция ЭтоФорма(Знач ИмяМетаданных) + + имяВРег = ВРег(ИмяМетаданных); + + Возврат имяВРег = "ФОРМА" ИЛИ имяВРег = "FORM"; + +КонецФункции + +Функция ЭтоОбщаяФорма(Знач ИмяМетаданных) + + имяВРег = ВРег(ИмяМетаданных); + + Возврат имяВРег = "ОБЩАЯФОРМА" ИЛИ имяВРег = "COMMONFORM"; + +КонецФункции + +Функция ЭтоМодуль(Знач ИмяМетаданных) + + имяВРег = ВРег(ИмяМетаданных); + + Возврат имяВРег = "МОДУЛЬ" ИЛИ имяВРег = "MODULE"; + +КонецФункции + +Функция ЭтоКоманда(Знач ИмяМетаданных) + + имяВРег = ВРег(ИмяМетаданных); + + Возврат имяВРег = "КОМАНДА" ИЛИ имяВРег = "COMMAND"; + +КонецФункции + +Функция ЭтоМодульОбъекта(Знач ИмяМетаданных) + + имяВРег = ВРег(ИмяМетаданных); + + Возврат имяВРег = "МОДУЛЬОБЪЕКТА" ИЛИ имяВРег = "OBJECTMODULE"; + +КонецФункции + +Функция ЭтоМодульМенеджера(Знач ИмяМетаданных) + + имяВРег = ВРег(ИмяМетаданных); + + Возврат имяВРег = "МОДУЛЬМЕНЕДЖЕРА" ИЛИ имяВРег = "MANAGERMODULE"; + +КонецФункции +Функция ЭтоМодульКоманды(Знач ИмяМетаданных) + + имяВРег = ВРег(ИмяМетаданных); + + Возврат имяВРег = "МОДУЛЬКОМАНДЫ" ИЛИ имяВРег = "COMMANDMODULE"; + +КонецФункции + #КонецОбласти #Область СлужебныйПрограммныйИнтерфейс @@ -433,4 +550,4 @@ Возврат "oscript.app.cf_info"; КонецФункции -#КонецОбласти +#КонецОбласти \ No newline at end of file