mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2024-11-24 08:32:25 +02:00
Merge branch 'master' into develop
# Conflicts: # src/Классы/КомандаВыполнитьСценарии.os # src/Классы/КомандаПрекоммит.os # src/Модули/МенеджерПриложения.os
This commit is contained in:
commit
21e9ff5db3
@ -49,7 +49,8 @@
|
||||
- `РазборОбычныхФормНаИсходники` - раскладывает файлы обычных форм (`Form.bin`) на исходные файлы с помощью инструмента `v8unpack`.
|
||||
- `РазборОтчетОбработокРасширений` - раскладывает средствами платформы файлы внешних отчетов, обработок и расширений на исходные файлы. [См. подробнее](/docs/РазборОтчетОбработокРасширений.md)
|
||||
- `СинхронизацияОбъектовМетаданныхИФайлов` - анализирует наличие файлов и объектов конфигурации. Поддерживается только файл описания конфигурации в формате выгрузки конфигуратора (`Configuration.xml`).
|
||||
- `СортировкаДереваМетаданных` - упорядочивает объекты метаданных верхнего уровня по алфавиту в файле описания конфигурации (кроме подсистем). Поддерживается как файл в формате выгрузки конфигуратора (`Configuration.xml`), так и в формате EDT (`Configuration.mdo`).
|
||||
- `СортировкаДереваМетаданных` - упорядочивает объекты метаданных верхнего уровня по алфавиту в файле описания конфигурации (кроме подсистем), удаляет дубли. Помещает объекты с префиксом в низ списка, если настроено. Поддерживается как файл в формате выгрузки конфигуратора (`Configuration.xml`), так и в формате EDT (`Configuration.mdo`).
|
||||
- `СортировкаСоставаПодсистем` - упорядочивает объекты в подсистемах по алфавиту. Поддерживается как файл в формате выгрузки конфигуратора (`Configuration.xml`), так и в формате EDT (`Configuration.mdo`).
|
||||
- `УдалениеДублейМетаданных` - удаляет дубли объектов метаданных в файле описания конфигурации (могут образоваться при объединениях). Поддерживается как файл в формате выгрузки конфигуратора (`Configuration.xml`), так и в формате EDT (`Configuration.mdo`)..
|
||||
- `УдалениеЛишнихКонцевыхПробелов` - удаляет лишние пробелы и табы в конце не пустых строк в файлах модулей.
|
||||
- `УдалениеЛишнихПустыхСтрок` - удаляет лишние пустые строки в модулях (лишними считаются 2 и более идущих подряд пустых строк).
|
||||
|
16
docs/СортировкаДереваМетаданных.md
Normal file
16
docs/СортировкаДереваМетаданных.md
Normal file
@ -0,0 +1,16 @@
|
||||
# Сценарий `СортировкаДереваМетаданных`
|
||||
|
||||
Упорядочивает объекты метаданных верхнего уровня по алфавиту в файле описания конфигурации (кроме подсистем), удаляет дубли.
|
||||
Помещает объекты с префиксом в низ списка.
|
||||
|
||||
```JSON
|
||||
{
|
||||
"Precommt4onecСценарии": {
|
||||
"НастройкиСценариев": {
|
||||
"СортировкаДереваМетаданных": {
|
||||
"УчитываяПрефикс": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
@ -41,6 +41,7 @@ y
|
||||
y
|
||||
y
|
||||
y
|
||||
y
|
||||
local
|
||||
n
|
||||
"""
|
||||
@ -68,6 +69,7 @@ n
|
||||
"РазборОтчетовОбработокРасширений.os",
|
||||
"СинхронизацияОбъектовМетаданныхИФайлов.os",
|
||||
"СортировкаДереваМетаданных.os",
|
||||
"СортировкаСоставаПодсистем.os",
|
||||
"УдалениеДублейМетаданных.os",
|
||||
"УдалениеЛишнихКонцевыхПробелов.os",
|
||||
"УдалениеЛишнихПустыхСтрок.os"
|
||||
|
@ -10,7 +10,7 @@
|
||||
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -global"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v21.09"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v22.03"
|
||||
И Вывод команды "oscript" содержит "Установленные настройки:"
|
||||
И Вывод команды "oscript" содержит "ИспользоватьСценарииРепозитория ="
|
||||
И Вывод команды "oscript" содержит "КаталогЛокальныхСценариев ="
|
||||
@ -36,11 +36,11 @@
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит
|
||||
"""
|
||||
precommit4onec v21.09
|
||||
precommit4onec v22.03
|
||||
Установленные настройки: Базовые настройки
|
||||
ИспользоватьСценарииРепозитория = Нет
|
||||
КаталогЛокальныхСценариев =
|
||||
ГлобальныеСценарии = ДобавлениеПробеловПередКлючевымиСловами.os,ДобавлениеТестовВРасширение.os,ЗапретИспользованияПерейти.os,ИсправлениеНеКаноническогоНаписания.os,КорректировкаXMLФорм.os,ОбработкаЮнитТестов.os,ОтключениеПолнотекстовогоПоиска.os,ОтключениеРазрешенияИзменятьФорму.os,ПроверкаДублейПроцедурИФункций.os,ПроверкаКорректностиИнструкцийПрепроцессора.os,ПроверкаКорректностиОбластей.os,ПроверкаНецензурныхСлов.os,РазборОбычныхФормНаИсходники.os,РазборОтчетовОбработокРасширений.os,СинхронизацияОбъектовМетаданныхИФайлов.os,СортировкаДереваМетаданных.os,УдалениеДублейМетаданных.os,УдалениеЛишнихКонцевыхПробелов.os,УдалениеЛишнихПустыхСтрок.os
|
||||
ГлобальныеСценарии = ДобавлениеПробеловПередКлючевымиСловами.os,ДобавлениеТестовВРасширение.os,ЗапретИспользованияПерейти.os,ИсправлениеНеКаноническогоНаписания.os,КорректировкаXMLФорм.os,ОбработкаЮнитТестов.os,ОтключениеПолнотекстовогоПоиска.os,ОтключениеРазрешенияИзменятьФорму.os,ПроверкаДублейПроцедурИФункций.os,ПроверкаКорректностиИнструкцийПрепроцессора.os,ПроверкаКорректностиОбластей.os,ПроверкаНецензурныхСлов.os,РазборОбычныхФормНаИсходники.os,РазборОтчетовОбработокРасширений.os,СинхронизацияОбъектовМетаданныхИФайлов.os,СортировкаДереваМетаданных.os,СортировкаСоставаПодсистем.os,УдалениеДублейМетаданных.os,УдалениеЛишнихКонцевыхПробелов.os,УдалениеЛишнихПустыхСтрок.os
|
||||
ОтключенныеСценарии =
|
||||
НастройкиСценариев = Соответствие
|
||||
ОтключениеПолнотекстовогоПоиска = Соответствие
|
||||
|
@ -14,7 +14,7 @@
|
||||
Сценарий: Получение версии продукта
|
||||
Когда Я выполняю команду "oscript" с параметрами "src/main.os version"
|
||||
Тогда Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "21.09"
|
||||
И Вывод команды "oscript" содержит "22.03"
|
||||
И Вывод команды "oscript" не содержит "precommit4onec v"
|
||||
И Код возврата команды "oscript" равен 0
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
Когда Я выполняю команду "oscript" с параметрами "src/main.os help"
|
||||
Тогда Вывод команды "oscript" содержит
|
||||
"""
|
||||
precommit4onec v21.09
|
||||
precommit4onec v22.03
|
||||
Возможные команды:
|
||||
help - Выводит справку по командам
|
||||
version - Выводит версию приложения
|
||||
@ -37,7 +37,7 @@
|
||||
Когда Я выполняю команду "oscript" с параметрами "src/main.os"
|
||||
Тогда Вывод команды "oscript" содержит
|
||||
"""
|
||||
precommit4onec v21.09
|
||||
precommit4onec v22.03
|
||||
Возможные команды:
|
||||
help - Выводит справку по командам
|
||||
version - Выводит версию приложения
|
||||
|
@ -18,7 +18,7 @@
|
||||
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install rep1"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v21.09"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v22.03"
|
||||
И Вывод команды "oscript" содержит "Pre-commit hook для rep1 создан"
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
|
||||
|
||||
@ -28,14 +28,14 @@
|
||||
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v21.09"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v22.03"
|
||||
И Вывод команды "oscript" содержит "не является репозиторием git"
|
||||
|
||||
Сценарий: Установка precommit4onec во вложенные каталоги
|
||||
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./ -r"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v21.09"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v22.03"
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий2" есть файл "pre-commit"
|
||||
|
||||
@ -51,6 +51,6 @@
|
||||
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./ -r"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v21.09"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v22.03"
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий2" есть файл "pre-commit"
|
||||
|
@ -37,7 +37,7 @@
|
||||
Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач Приложение) Экспорт
|
||||
|
||||
Лог = Приложение.ПолучитьЛог();
|
||||
НастройкиИБ = Приложение.ПолучитьНастройкиИБ();
|
||||
НастройкиИБ = Приложение.ПолучитьНастройкиИБ();
|
||||
|
||||
КаталогРепозитория = ПараметрыКоманды["КаталогРепозитория"];
|
||||
ФайлКаталогРепозитория = Новый Файл(КаталогРепозитория);
|
||||
|
@ -31,7 +31,7 @@
|
||||
Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач Приложение) Экспорт
|
||||
|
||||
Лог = Приложение.ПолучитьЛог();
|
||||
НастройкиИБ = Приложение.ПолучитьНастройкиИБ();
|
||||
НастройкиИБ = Приложение.ПолучитьНастройкиИБ();
|
||||
|
||||
КаталогРепозитория = ПараметрыКоманды["КаталогРепозитория"];
|
||||
КаталогИсходныхФайлов = ПараметрыКоманды["-source-dir"];
|
||||
|
@ -41,7 +41,7 @@
|
||||
Лог = Логирование.ПолучитьЛог(ОбъектНастроек.ИмяЛогаСистемы());
|
||||
Лог.УстановитьРаскладку(ОбъектНастроек);
|
||||
|
||||
НастройкиИБ = Новый Структура("АдресИБ, ЛогинИБ, ПарольИБ", "", "", "");
|
||||
НастройкиИБ = Новый Структура("АдресИБ, ЛогинИБ, ПарольИБ", "", "", "");
|
||||
|
||||
// Инициализация команд
|
||||
ОбъектНастроек.НастроитьКомандыПриложения(ЭтотОбъект);
|
||||
|
@ -7,7 +7,7 @@
|
||||
// СписокЗначений - Список каталогов
|
||||
// * Значение - Строка - Имя каталога
|
||||
// * Представление - Срока - Имя типа метаданных
|
||||
Функция КаталогиТиповМетаданных() Экспорт
|
||||
Функция КаталогиТиповМетаданных(edt = Ложь) Экспорт
|
||||
|
||||
Если КаталогиТиповМетаданных = Неопределено Тогда
|
||||
|
||||
@ -43,7 +43,6 @@
|
||||
КаталогиТиповМетаданных.Добавить("FunctionalOptionsParameters", "FunctionalOptionsParameter");
|
||||
КаталогиТиповМетаданных.Добавить("HTTPServices", "HTTPService");
|
||||
КаталогиТиповМетаданных.Добавить("InformationRegisters", "InformationRegister");
|
||||
КаталогиТиповМетаданных.Добавить("Languages", "Language");
|
||||
КаталогиТиповМетаданных.Добавить("Reports", "Report");
|
||||
КаталогиТиповМетаданных.Добавить("Roles", "Role");
|
||||
КаталогиТиповМетаданных.Добавить("ScheduledJobs", "ScheduledJob");
|
||||
@ -58,6 +57,10 @@
|
||||
КаталогиТиповМетаданных.Добавить("WSReferences", "WSReference");
|
||||
КаталогиТиповМетаданных.Добавить("XDTOPackages", "XDTOPackage");
|
||||
|
||||
Если НЕ edt Тогда
|
||||
КаталогиТиповМетаданных.Добавить("Languages", "Language");
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат КаталогиТиповМетаданных;
|
||||
@ -97,3 +100,8 @@
|
||||
Возврат КаталогиТиповМетаданныхДляТестов;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура СброситьКеш() Экспорт
|
||||
КаталогиТиповМетаданныхДляТестов = Неопределено;
|
||||
КаталогиТиповМетаданных = Неопределено;
|
||||
КонецПроцедуры
|
@ -22,7 +22,7 @@
|
||||
//
|
||||
Функция ВерсияПродукта() Экспорт
|
||||
|
||||
Возврат "21.09";
|
||||
Возврат "22.03";
|
||||
|
||||
КонецФункции // ВерсияПродукта
|
||||
|
||||
|
@ -1,8 +1,14 @@
|
||||
Функция ПолучитьДочерниеЭлементыОписанияКонфигурации(Знач СодержимоеФайла) Экспорт
|
||||
Функция ПолучитьДочерниеЭлементыОписанияКонфигурации(Знач СодержимоеФайла, ЭтоEDT) Экспорт
|
||||
|
||||
Элементы = Новый Структура("Количество,ДочерниеЭлементыСтрока,Совпадения", 0, "", Неопределено);
|
||||
|
||||
Регексп = Новый РегулярноеВыражение("(<ChildObjects>\s+?)([\w\W]+?)(\s+<\/ChildObjects>)");
|
||||
Если ЭтоEDT Тогда
|
||||
Регексп = Новый РегулярноеВыражение("(<\/languages>\s+)^(?!.*languages)([\w\W]*)(<\/mdclass\:Configuration>)");
|
||||
|
||||
Иначе
|
||||
Регексп = Новый РегулярноеВыражение("(<ChildObjects>\s+?)([\w\W]+?)(\s+<\/ChildObjects>)");
|
||||
КонецЕсли;
|
||||
|
||||
Регексп.ИгнорироватьРегистр = Истина;
|
||||
Регексп.Многострочный = Истина;
|
||||
|
||||
@ -13,7 +19,14 @@
|
||||
Если НЕ Элементы.Количество = 0 Тогда // Если количество 0 вернется пустая коллекция
|
||||
|
||||
Элементы.ДочерниеЭлементыСтрока = ДочерниеЭлементы[0].Группы[2].Значение;
|
||||
РегекспМетаданные = Новый РегулярноеВыражение("^\s+<([\w]+)>([а-яa-zA-ZА-Я0-9_]+)<\/[\w]+>");
|
||||
|
||||
Если ЭтоEDT Тогда
|
||||
РегекспМетаданные = Новый РегулярноеВыражение("^\s+<[\w]+>([a-zA-Z]+)\.([а-яa-zA-ZА-Я0-9_]+)<\/[\w]+>");
|
||||
|
||||
Иначе
|
||||
РегекспМетаданные = Новый РегулярноеВыражение("^\s+<([\w]+)>([а-яa-zA-ZА-Я0-9_]+)<\/[\w]+>");
|
||||
КонецЕсли;
|
||||
|
||||
РегекспМетаданные.ИгнорироватьРегистр = Истина;
|
||||
РегекспМетаданные.Многострочный = Истина;
|
||||
Элементы.Совпадения = РегекспМетаданные.НайтиСовпадения(Элементы.ДочерниеЭлементыСтрока);
|
||||
|
@ -253,6 +253,52 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// ЭтоФайлОписанияПодсистемыEDT
|
||||
// Возвращает истину, если файл является описанием подсистемы и в формате EDT
|
||||
// Параметры:
|
||||
// Файл - Файл - Полный путь к файлу
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак
|
||||
//
|
||||
Функция ЭтоФайлОписанияПодсистемыEDT(Файл) Экспорт
|
||||
|
||||
Если ПустаяСтрока(Файл.Расширение) Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ПутьКФайлу = НРег(Файл.Путь);
|
||||
|
||||
Возврат СтрСравнить(Файл.Расширение, ".mdo") = 0
|
||||
И СтрНайти(ПутьКФайлу, СтрШаблон("%1subsystems%1", ПолучитьРазделительПути())) <> 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// ЭтоФайлОписанияПодсистемыE
|
||||
// Возвращает истину, если файл является описанием подсистемы
|
||||
// Параметры:
|
||||
// Файл - Файл - Полный путь к файлу
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак
|
||||
//
|
||||
Функция ЭтоФайлОписанияПодсистемы(Файл) Экспорт
|
||||
|
||||
Если ПустаяСтрока(Файл.Расширение) Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ПутьКФайлу = НРег(Файл.Путь);
|
||||
|
||||
Возврат СтрСравнить(Файл.Расширение, ".xml") = 0
|
||||
И СтрНайти(ПутьКФайлу, СтрШаблон("%1subsystems%1", ПолучитьРазделительПути())) <> 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// ЭтоМодульМенеджера
|
||||
// Возвращает истину, если файл является модулем менеджера
|
||||
// Параметры:
|
||||
|
@ -38,11 +38,15 @@
|
||||
|
||||
Лог = ДополнительныеПараметры.Лог;
|
||||
НастройкиСценария = ДополнительныеПараметры.Настройки.Получить(ИмяСценария());
|
||||
Если АнализируемыйФайл.Существует() И ТипыФайлов.ЭтоФайлОписанияКонфигурации(АнализируемыйФайл) Тогда
|
||||
ЭтоФайлОписанияКонфигурации = ТипыФайлов.ЭтоФайлОписанияКонфигурации(АнализируемыйФайл)
|
||||
ИЛИ ТипыФайлов.ЭтоФайлОписанияКонфигурацииEDT(АнализируемыйФайл);
|
||||
|
||||
Если АнализируемыйФайл.Существует() И ЭтоФайлОписанияКонфигурации Тогда
|
||||
|
||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||
ЭтоEDT = ТипыФайлов.ЭтоФайлОписанияКонфигурацииEDT(АнализируемыйФайл);
|
||||
|
||||
Если СинхронизироватьМетаданныеИФайлы(АнализируемыйФайл.ПолноеИмя, ДополнительныеПараметры.ИзмененныеКаталоги) Тогда
|
||||
Если СинхронизироватьМетаданныеИФайлы(АнализируемыйФайл.ПолноеИмя, ДополнительныеПараметры.ИзмененныеКаталоги, ЭтоEDT) Тогда
|
||||
|
||||
ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя);
|
||||
|
||||
@ -56,10 +60,10 @@
|
||||
|
||||
КонецФункции // ОбработатьФайл()
|
||||
|
||||
Функция СинхронизироватьМетаданныеИФайлы(Знач ИмяФайла, УдаленныеФайлы)
|
||||
Функция СинхронизироватьМетаданныеИФайлы(Знач ИмяФайла, УдаленныеФайлы, ЭтоEDT)
|
||||
|
||||
СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(ИмяФайла);
|
||||
ДочерниеЭлементы = РегулярныеВыражения.ПолучитьДочерниеЭлементыОписанияКонфигурации(СодержимоеФайла);
|
||||
ДочерниеЭлементы = РегулярныеВыражения.ПолучитьДочерниеЭлементыОписанияКонфигурации(СодержимоеФайла, ЭтоEDT);
|
||||
|
||||
Если ДочерниеЭлементы.Количество = 0 Тогда
|
||||
Возврат Ложь;
|
||||
@ -69,9 +73,10 @@
|
||||
ОбъектыМетаданных = ПолучитьОбъектыМетаданных(ДочерниеЭлементы.Совпадения);
|
||||
|
||||
// Список базовых типов метаданных
|
||||
СписокКаталогов = МетаданныеКонфигурации.КаталогиТиповМетаданных();
|
||||
СписокКаталогов = МетаданныеКонфигурации.КаталогиТиповМетаданных(ЭтоEDT);
|
||||
|
||||
КорневойПуть = Новый Файл(ИмяФайла).Путь;
|
||||
|
||||
КорневойПуть = ?(ЭтоEDT, ОбъединитьПути(Новый Файл(ИмяФайла).Путь, ".."), Новый Файл(ИмяФайла).Путь);
|
||||
СписокДляУдаления = Новый Массив;
|
||||
ЕдиныйТекстОшибки = "";
|
||||
ТекстОшибок = Новый Массив;
|
||||
@ -84,8 +89,23 @@
|
||||
|
||||
Каталог = Новый Файл(ОбъединитьПути(КорневойПуть, КаталогСписка.Значение));
|
||||
|
||||
ВсеФайлыОбъектовТипа = Новый Массив;
|
||||
// Проверка содержимого каталога
|
||||
ВсеФайлыОбъектовТипа = НайтиФайлы(Каталог.ПолноеИмя, "*.xml");
|
||||
Если ЭтоEDT Тогда
|
||||
Каталоги = ФайловыеОперации.НайтиКаталоги(Каталог.ПолноеИмя);
|
||||
|
||||
|
||||
Для каждого Каталог Из Каталоги Цикл
|
||||
Файлы = НайтиФайлы(Каталог.ПолноеИмя,"*.mdo", Ложь);
|
||||
Для каждого Файл из Файлы Цикл
|
||||
ВсеФайлыОбъектовТипа.Добавить(Файл);
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
Иначе
|
||||
ВсеФайлыОбъектовТипа = НайтиФайлы(Каталог.ПолноеИмя, "*.xml");
|
||||
КонецЕсли;
|
||||
|
||||
НадоПропустить = Новый ТаблицаЗначений;
|
||||
НадоПропустить.Колонки.Добавить("Имя");
|
||||
НадоПропустить.Колонки.Добавить("НормализованноеИмя");
|
||||
@ -121,7 +141,7 @@
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ВсеФайлыОбъектовТипа = ФайловыеОперации.НайтиКаталоги(Каталог.ПолноеИмя);
|
||||
ВсеФайлыОбъектовТипа = ФайловыеОперации.НайтиКаталоги(?(ЭтоEDT, Каталог.Путь, Каталог.ПолноеИмя));
|
||||
|
||||
Для Каждого ФайлОбъектаТипа Из ВсеФайлыОбъектовТипа Цикл
|
||||
|
||||
|
@ -16,6 +16,24 @@
|
||||
|
||||
КонецФункции // ИмяСценария()
|
||||
|
||||
// ПолучитьСтандартныеНастройкиСценария
|
||||
// Возвращает структуру настроек сценария
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Структура с настройками сценария
|
||||
// * ИмяСценария - Строка - Имя, с которым сохранятся настройки
|
||||
// * Настройка - Соответствие - настройки
|
||||
//
|
||||
Функция ПолучитьСтандартныеНастройкиСценария() Экспорт
|
||||
|
||||
НастройкиСценария = Новый Соответствие;
|
||||
// Пример возможных настроек
|
||||
НастройкиСценария.Вставить("УчитываяПрефикс", "");
|
||||
|
||||
Возврат Новый Структура("ИмяСценария, Настройка", ИмяСценария(), НастройкиСценария);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// ОбработатьФайл
|
||||
// Выполняет обработку файла
|
||||
//
|
||||
@ -36,25 +54,24 @@
|
||||
|
||||
Лог = ДополнительныеПараметры.Лог;
|
||||
НастройкиСценария = ДополнительныеПараметры.Настройки.Получить(ИмяСценария());
|
||||
|
||||
УчитываяПрефиксы = "";
|
||||
Если ЗначениеЗаполнено(НастройкиСценария)
|
||||
И ЗначениеЗаполнено(НастройкиСценария.Получить("УчитываяПрефикс")) Тогда
|
||||
|
||||
УчитываяПрефиксы = НастройкиСценария.Получить("УчитываяПрефикс");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если АнализируемыйФайл.Существует() Тогда
|
||||
|
||||
Если ТипыФайлов.ЭтоФайлОписанияКонфигурации(АнализируемыйФайл) Тогда
|
||||
Если ТипыФайлов.ЭтоФайлОписанияКонфигурации(АнализируемыйФайл) ИЛИ
|
||||
ТипыФайлов.ЭтоФайлОписанияКонфигурацииEDT(АнализируемыйФайл) Тогда
|
||||
|
||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||
ЭтоЕДТ = ТипыФайлов.ЭтоФайлОписанияКонфигурацииEDT(АнализируемыйФайл);
|
||||
|
||||
Если ОтсортироватьДеревоМетаданных(АнализируемыйФайл.ПолноеИмя) Тогда
|
||||
|
||||
ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
ИначеЕсли ТипыФайлов.ЭтоФайлОписанияКонфигурацииEDT(АнализируемыйФайл) Тогда
|
||||
|
||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||
|
||||
Если ОтсортироватьДеревоМетаданныхEDT(АнализируемыйФайл.ПолноеИмя) Тогда
|
||||
Если ОтсортироватьДеревоМетаданных(АнализируемыйФайл.ПолноеИмя, УчитываяПрефиксы, ЭтоЕДТ) Тогда
|
||||
|
||||
ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя);
|
||||
|
||||
@ -70,14 +87,16 @@
|
||||
|
||||
КонецФункции // ОбработатьФайл()
|
||||
|
||||
Функция ОтсортироватьДеревоМетаданных(Знач ИмяФайла)
|
||||
Функция ОтсортироватьДеревоМетаданных(Знач ИмяФайла, НастройкиСценария, ЭтоЕДТ)
|
||||
|
||||
СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(ИмяФайла);
|
||||
|
||||
Регексп = Новый РегулярноеВыражение("(<ChildObjects>\s+?)([\w\W]+?)(\s+<\/ChildObjects>)");
|
||||
Регексп.ИгнорироватьРегистр = ИСТИНА;
|
||||
Регексп.Многострочный = ИСТИНА;
|
||||
ПоискДочерних = ?(ЭтоЕДТ, "(<\/languages>\s+)^(?!.*languages)([\w\W]*)(<\/mdclass\:Configuration>)", "(<ChildObjects>\s+?)([\w\W]+?)(\s+<\/ChildObjects>)");
|
||||
Регексп = Новый РегулярноеВыражение(ПоискДочерних);
|
||||
Регексп.ИгнорироватьРегистр = Истина;
|
||||
Регексп.Многострочный = Истина;
|
||||
ПодчиненныеМетаданные = Регексп.НайтиСовпадения(СодержимоеФайла);
|
||||
|
||||
Если ПодчиненныеМетаданные.Количество() = 0 Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
@ -85,46 +104,47 @@
|
||||
КонецЕсли;
|
||||
|
||||
ИсходнаяСтрока = ПодчиненныеМетаданные[0].Группы[2].Значение;
|
||||
РегекспМетаданные = Новый РегулярноеВыражение("^\s+<([\w]+)>([а-яa-zA-ZА-Я0-9_]+)<\/[\w]+>");
|
||||
РегекспМетаданные.ИгнорироватьРегистр = ИСТИНА;
|
||||
ПоискМетаданных = ?(ЭтоЕДТ, "^\s*<([\w]+)>([a-zA-Z]+\.[а-яa-zA-ZА-Я0-9_]+)<\/[\w]+>", "^\s+<([\w]+)>([а-яa-zA-ZА-Я0-9_]+)<\/[\w]+>");
|
||||
РегекспМетаданные = Новый РегулярноеВыражение(ПоискМетаданных);
|
||||
РегекспМетаданные.ИгнорироватьРегистр = Истина;
|
||||
РегекспМетаданные.Многострочный = Истина;
|
||||
ОбъектыМетаданныхСтроки = РегекспМетаданные.НайтиСовпадения(ИсходнаяСтрока);
|
||||
|
||||
ОбъектыМетаданных = Новый СписокЗначений;
|
||||
ПоследнийТип = "";
|
||||
ОбъектыТипа = Новый СписокЗначений;
|
||||
ОбъектыМетаданных = Новый Соответствие;
|
||||
ОбъектыТипаПоПорядку = Новый СписокЗначений; // отдельный список с типами, нужен для того, чтобы сохранить порядок при обходе соответствия
|
||||
|
||||
Для Каждого ОбъектМетаданных Из ОбъектыМетаданныхСтроки Цикл
|
||||
|
||||
Если ПоследнийТип <> ОбъектМетаданных.Группы[1].Значение Тогда
|
||||
|
||||
Если ПоследнийТип <> "" Тогда
|
||||
|
||||
ОбъектыМетаданных.Добавить(ОбъектыТипа);
|
||||
ОбъектыТипа = Новый СписокЗначений;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ПоследнийТип = ОбъектМетаданных.Группы[1].Значение;
|
||||
|
||||
Если ОбъектыМетаданных.Получить(ОбъектМетаданных.Группы[1].Значение) = Неопределено Тогда
|
||||
ОбъектыМетаданных.Вставить(ОбъектМетаданных.Группы[1].Значение, Новый СписокЗначений);
|
||||
ОбъектыТипаПоПорядку.Добавить(ОбъектМетаданных.Группы[1].Значение);
|
||||
КонецЕсли;
|
||||
|
||||
ОбъектыТипа.Добавить(ОбъектМетаданных.Группы[0].Значение, ОбъектМетаданных.Группы[2].Значение);
|
||||
Список = ОбъектыМетаданных.Получить(ОбъектМетаданных.Группы[1].Значение);
|
||||
|
||||
Если Список.НайтиПоЗначению(ОбъектМетаданных.Группы[0].Значение) = Неопределено Тогда
|
||||
Список.Добавить(ОбъектМетаданных.Группы[0].Значение, ОбъектМетаданных.Группы[2].Значение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ОбъектыМетаданных.Добавить(ОбъектыТипа);
|
||||
|
||||
СтрокаЗамены = "";
|
||||
Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл
|
||||
Подсистема = ?(ЭтоЕДТ, "subsystems>", "Subsystem>");
|
||||
|
||||
Если НЕ СтрЗаканчиваетсяНа(ОбъектМетаданных.Значение[0].Значение, "Subsystem>") Тогда
|
||||
|
||||
ОбъектМетаданных.Значение.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
|
||||
Для Каждого Тип Из ОбъектыТипаПоПорядку Цикл
|
||||
|
||||
ОбъектМетаданных = ОбъектыМетаданных.Получить(Тип.Значение);
|
||||
|
||||
Если НЕ СтрЗаканчиваетсяНа(ОбъектМетаданных[0].Значение, Подсистема) Тогда
|
||||
|
||||
СортироватьПоПредставлениюСУчетомПрефиксов(ОбъектМетаданных, НастройкиСценария, ЭтоЕДТ);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
СтрокаЗамены = СтрокаЗамены + ?(ПустаяСтрока(СтрокаЗамены), "", Символы.ПС)
|
||||
+ СтрСоединить(ОбъектМетаданных.Значение.ВыгрузитьЗначения(), Символы.ПС);
|
||||
+ СтрСоединить(ОбъектМетаданных.ВыгрузитьЗначения(), Символы.ПС);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
@ -134,83 +154,55 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, "$1" + СтрокаЗамены + "$3");
|
||||
Если ЭтоЕДТ Тогда
|
||||
|
||||
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, "$1" + " " + СокрЛП(СтрокаЗамены) + Символы.ПС + "$3");
|
||||
|
||||
Иначе
|
||||
|
||||
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, "$1" + СтрокаЗамены + "$3");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ФайловыеОперации.ЗаписатьТекстФайла(ИмяФайла, СодержимоеФайла);
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОтсортироватьДеревоМетаданныхEDT(Знач ИмяФайла)
|
||||
Процедура СортироватьПоПредставлениюСУчетомПрефиксов(Список, Префикс, ЭтоЕДТ)
|
||||
|
||||
Текст = Новый ЧтениеТекста();
|
||||
Текст.Открыть(ИмяФайла, КодировкаТекста.UTF8NoBOM);
|
||||
СодержимоеФайла = Текст.Прочитать();
|
||||
Текст.Закрыть();
|
||||
ОбъектыДорабатываемойКонфигурации = Новый СписокЗначений;
|
||||
|
||||
Регексп = Новый РегулярноеВыражение("(<\/languages>\s*)([\w\W]*)(<\/mdclass\:Configuration>)");
|
||||
Регексп.ИгнорироватьРегистр = ИСТИНА;
|
||||
Регексп.Многострочный = ИСТИНА;
|
||||
ПодчиненныеМетаданные = Регексп.НайтиСовпадения(СодержимоеФайла);
|
||||
Если ПодчиненныеМетаданные.Количество() = 0 Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ИсходнаяСтрока = ПодчиненныеМетаданные[0].Группы[2].Значение;
|
||||
РегекспМетаданные = Новый РегулярноеВыражение("^\s*<([\w]+)>([a-zA-Z]+\.[а-яa-zA-ZА-Я0-9_]+)<\/[\w]+>");
|
||||
РегекспМетаданные.ИгнорироватьРегистр = ИСТИНА;
|
||||
РегекспМетаданные.Многострочный = Истина;
|
||||
ОбъектыМетаданныхСтроки = РегекспМетаданные.НайтиСовпадения(ИсходнаяСтрока);
|
||||
|
||||
ОбъектыМетаданных = Новый СписокЗначений;
|
||||
ПоследнийТип = "";
|
||||
ОбъектыТипа = Новый СписокЗначений;
|
||||
Для Каждого ОбъектМетаданных Из ОбъектыМетаданныхСтроки Цикл
|
||||
|
||||
Если ПоследнийТип <> ОбъектМетаданных.Группы[1].Значение Тогда
|
||||
|
||||
Если ПоследнийТип <> "" Тогда
|
||||
|
||||
ОбъектыМетаданных.Добавить(ОбъектыТипа);
|
||||
ОбъектыТипа = Новый СписокЗначений;
|
||||
Если ЗначениеЗаполнено(Префикс) Тогда
|
||||
Удаления = Новый Массив;
|
||||
Для Каждого Объект Из Список Цикл
|
||||
|
||||
Представление = ?(ЭтоЕДТ, СтрРазделить(Объект.Представление, ".")[1], Объект.Представление);
|
||||
Если СтрНачинаетсяС(Представление, Префикс) Тогда
|
||||
ОбъектыДорабатываемойКонфигурации.Добавить(Объект.Значение, Объект.Представление);
|
||||
Удаления.Добавить(Объект);
|
||||
КонецЕсли;
|
||||
|
||||
ПоследнийТип = ОбъектМетаданных.Группы[1].Значение;
|
||||
КонецЦикла;
|
||||
|
||||
Если Удаления.Количество() > 0 Тогда
|
||||
Для каждого Элемент Из Удаления Цикл
|
||||
Список.Удалить(Элемент);
|
||||
КонецЦикла;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ОбъектыТипа.Добавить(ОбъектМетаданных.Группы[0].Значение, ОбъектМетаданных.Группы[2].Значение);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ОбъектыМетаданных.Добавить(ОбъектыТипа);
|
||||
|
||||
СтрокаЗамены = "";
|
||||
Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл
|
||||
|
||||
Если НЕ СтрЗаканчиваетсяНа(ОбъектМетаданных.Значение[0].Значение, "subsystems>") Тогда
|
||||
|
||||
ОбъектМетаданных.Значение.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
СтрокаЗамены = СтрокаЗамены + ?(ПустаяСтрока(СтрокаЗамены), "", Символы.ПС)
|
||||
+ СтрСоединить(ОбъектМетаданных.Значение.ВыгрузитьЗначения(), Символы.ПС);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если СтрСравнить(ИсходнаяСтрока, СтрокаЗамены) = 0 Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
ОбъектыДорабатываемойКонфигурации.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
|
||||
КонецЕсли;
|
||||
|
||||
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, "$1" + СокрЛП(СтрокаЗамены) + Символы.ПС + "$3");
|
||||
ФайловыеОперации.ЗаписатьТекстФайла(ИмяФайла, СодержимоеФайла);
|
||||
Список.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецФункции
|
||||
Для Каждого ОбъектДорабатываемойКонфигурации Из ОбъектыДорабатываемойКонфигурации Цикл
|
||||
|
||||
Список.Добавить(ОбъектДорабатываемойКонфигурации.Значение, ОбъектДорабатываемойКонфигурации.Представление);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
142
src/СценарииОбработки/СортировкаСоставаПодсистем.os
Normal file
142
src/СценарииОбработки/СортировкаСоставаПодсистем.os
Normal file
@ -0,0 +1,142 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Служебный модуль с реализацией сценариев обработки файлов <СортировкаДереваМетаданных>
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// ИмяСценария
|
||||
// Возвращает имя сценария обработки файлов
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Имя текущего сценария обработки файлов
|
||||
//
|
||||
Функция ИмяСценария() Экспорт
|
||||
|
||||
Возврат "СортировкаСоставаПодсистем";
|
||||
|
||||
КонецФункции // ИмяСценария()
|
||||
|
||||
// ОбработатьФайл
|
||||
// Выполняет обработку файла
|
||||
//
|
||||
// Параметры:
|
||||
// АнализируемыйФайл - Файл - Файл из журнала git для анализа
|
||||
// КаталогИсходныхФайлов - Строка - Каталог расположения исходных файлов относительно каталог репозитория
|
||||
// ДополнительныеПараметры - Структура - Набор дополнительных параметров, которые можно использовать
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак выполненной обработки файла
|
||||
//
|
||||
Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт
|
||||
|
||||
Лог = ДополнительныеПараметры.Лог;
|
||||
НастройкиСценария = ДополнительныеПараметры.Настройки.Получить(ИмяСценария());
|
||||
|
||||
Если АнализируемыйФайл.Существует() Тогда
|
||||
|
||||
Если ТипыФайлов.ЭтоФайлОписанияПодсистемы(АнализируемыйФайл) ИЛИ
|
||||
ТипыФайлов.ЭтоФайлОписанияПодсистемыEDT(АнализируемыйФайл) Тогда
|
||||
|
||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||
ЭтоЕДТ = ТипыФайлов.ЭтоФайлОписанияПодсистемыEDT(АнализируемыйФайл);
|
||||
|
||||
Если ОтсортироватьПодсистему(АнализируемыйФайл.ПолноеИмя, ЭтоЕДТ) Тогда
|
||||
|
||||
ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЛОЖЬ;
|
||||
|
||||
КонецФункции // ОбработатьФайл()
|
||||
|
||||
Функция ОтсортироватьПодсистему(Знач ИмяФайла, ЭтоЕДТ)
|
||||
|
||||
СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(ИмяФайла);
|
||||
|
||||
ПоискДочерних = ?(ЭтоЕДТ, "(?:<content>)([\w\W]+)(?:<\/content>)", "(<Content>\s+)(<[\w\W]+>)(\s+<\/Content>)");
|
||||
Регексп = Новый РегулярноеВыражение(ПоискДочерних);
|
||||
Регексп.ИгнорироватьРегистр = ИСТИНА;
|
||||
Регексп.Многострочный = ИСТИНА;
|
||||
ПодчиненныеМетаданные = Регексп.НайтиСовпадения(СодержимоеФайла);
|
||||
|
||||
Если ПодчиненныеМетаданные.Количество() = 0 Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ИсходнаяСтрока = ПодчиненныеМетаданные[0].Группы[0].Значение;
|
||||
|
||||
//Тип.Объект или GUID
|
||||
ПоискМетаданных = ?(ЭтоЕДТ, "^\s*<[\w]+>(?:([a-zA-Z]+)\.([а-яa-zA-ZА-Я0-9_]+)|(([a-zA-z0-9\-]+)))<\/[\w]+>", "^\s+<[\w:\s=""]+>(?:([a-zA-Z0-9_]+).([а-яa-zA-ZА-Я0-9_]+)|(([a-zA-z0-9\-]+)))<\/[\w:]+>");
|
||||
РегекспМетаданные = Новый РегулярноеВыражение(ПоискМетаданных);
|
||||
РегекспМетаданные.ИгнорироватьРегистр = Истина;
|
||||
РегекспМетаданные.Многострочный = Истина;
|
||||
ОбъектыМетаданныхСтроки = РегекспМетаданные.НайтиСовпадения(ИсходнаяСтрока);
|
||||
|
||||
ОбъектыТипаПоПорядку = Новый СписокЗначений; // отдельный список с типами, нужен для того, чтобы сохранить порядок при обходе соответствия
|
||||
|
||||
ОбъектыМетаданных = Новый Соответствие;
|
||||
ПоследнийТип = "";
|
||||
ОбъектыТипа = Новый СписокЗначений;
|
||||
Для Каждого ОбъектМетаданных Из ОбъектыМетаданныхСтроки Цикл
|
||||
|
||||
Список = ОбъектыМетаданных.Получить(ОбъектМетаданных.Группы[1].Значение);
|
||||
|
||||
Если Список = Неопределено Тогда
|
||||
Список = Новый СписокЗначений;
|
||||
ОбъектыМетаданных.Вставить(ОбъектМетаданных.Группы[1].Значение, Список);
|
||||
ОбъектыТипаПоПорядку.Добавить(ОбъектМетаданных.Группы[1].Значение);
|
||||
КонецЕсли;
|
||||
|
||||
Если Список.НайтиПоЗначению(ОбъектМетаданных.Группы[0].Значение) = Неопределено Тогда
|
||||
Список.Добавить(ОбъектМетаданных.Группы[0].Значение, ОбъектМетаданных.Группы[2].Значение);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
СтрокаЗамены = "";
|
||||
|
||||
Для Каждого Тип Из ОбъектыТипаПоПорядку Цикл
|
||||
|
||||
ОбъектМетаданных = ОбъектыМетаданных.Получить(Тип.Значение);
|
||||
|
||||
ОбъектМетаданных.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
|
||||
|
||||
СтрокаЗамены = СтрокаЗамены + ?(ПустаяСтрока(СтрокаЗамены), "", Символы.ПС)
|
||||
+ СтрСоединить(ОбъектМетаданных.ВыгрузитьЗначения(), Символы.ПС);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если НЕ ЭтоЕДТ Тогда
|
||||
СтрокаЗамены = ПодчиненныеМетаданные[0].Группы[1].Значение + СокрЛП(СтрокаЗамены) + ПодчиненныеМетаданные[0].Группы[3].Значение;
|
||||
КонецЕсли;
|
||||
|
||||
Если СтрСравнить(ИсходнаяСтрока, СтрокаЗамены) = 0 Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭтоЕДТ Тогда
|
||||
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, СокрЛП(СтрокаЗамены));
|
||||
Иначе
|
||||
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, СтрокаЗамены);
|
||||
КонецЕсли;
|
||||
|
||||
ФайловыеОперации.ЗаписатьТекстФайла(ИмяФайла, СодержимоеФайла);
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецФункции
|
1023
tests/fixtures/СинхронизацияОбъектовМетаданныхИФайловEDT/Configuration/Configuration.mdo
vendored
Normal file
1023
tests/fixtures/СинхронизацияОбъектовМетаданныхИФайловEDT/Configuration/Configuration.mdo
vendored
Normal file
File diff suppressed because it is too large
Load Diff
0
tests/fixtures/СинхронизацияОбъектовМетаданныхИФайловEDT/WebServices/Ancillary/Module.bsl
vendored
Normal file
0
tests/fixtures/СинхронизацияОбъектовМетаданныхИФайловEDT/WebServices/Ancillary/Module.bsl
vendored
Normal file
113
tests/fixtures/СинхронизацияОбъектовМетаданныхИФайловEDT/WebServices/Ancillary/ancillary.mdo
vendored
Normal file
113
tests/fixtures/СинхронизацияОбъектовМетаданныхИФайловEDT/WebServices/Ancillary/ancillary.mdo
vendored
Normal file
@ -0,0 +1,113 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:WebService xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="2f4939de-be85-4d0a-a5f4-f4fdb55826b7">
|
||||
<name>ancillary</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>ancillary</value>
|
||||
</synonym>
|
||||
<comment>Служебного назначения</comment>
|
||||
<namespace>http://local.dellin.ru/tech/</namespace>
|
||||
<xdtoPackages xsi:type="core:ReferenceValue">
|
||||
<value>XDTOPackage.bsp_ancillary</value>
|
||||
</xdtoPackages>
|
||||
<descriptorFileName>ancillary.1cws</descriptorFileName>
|
||||
<sessionMaxAge>20</sessionMaxAge>
|
||||
<operations uuid="642aec6c-1503-4ba5-a5a2-91c8aa83f9ca">
|
||||
<name>ping</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Ping</value>
|
||||
</synonym>
|
||||
<xdtoReturningValueType>
|
||||
<name>string</name>
|
||||
<nsUri>http://www.w3.org/2001/XMLSchema</nsUri>
|
||||
</xdtoReturningValueType>
|
||||
<procedureName>ping</procedureName>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
</operations>
|
||||
<operations uuid="dbd3f82f-fc85-4ba1-8a0e-fd1409e5d2e2">
|
||||
<name>getApdex</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Get apdex</value>
|
||||
</synonym>
|
||||
<xdtoReturningValueType>
|
||||
<name>typeResponse</name>
|
||||
<nsUri>http://global.dellin.ru/common/intergation/2013/1</nsUri>
|
||||
</xdtoReturningValueType>
|
||||
<procedureName>getApdex</procedureName>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
<parameters uuid="c4ec45f3-e6b4-48c5-b775-6de31b8e836d">
|
||||
<name>iParams</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>I params</value>
|
||||
</synonym>
|
||||
<xdtoValueType>
|
||||
<name>typeApdexInput</name>
|
||||
<nsUri>http://local.dellin.ru/bsp/ancillary/2014/1</nsUri>
|
||||
</xdtoValueType>
|
||||
</parameters>
|
||||
<parameters uuid="cc3784dc-1c73-4ece-ab43-a4307f37da97">
|
||||
<name>oResult</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>O result</value>
|
||||
</synonym>
|
||||
<xdtoValueType>
|
||||
<name>typeApdexOutput</name>
|
||||
<nsUri>http://local.dellin.ru/bsp/ancillary/2014/1</nsUri>
|
||||
</xdtoValueType>
|
||||
<transferDirection>Out</transferDirection>
|
||||
</parameters>
|
||||
</operations>
|
||||
<operations uuid="96b39626-e82b-4bcc-af2e-2ede90f6a5de">
|
||||
<name>getData</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Get data</value>
|
||||
</synonym>
|
||||
<xdtoReturningValueType>
|
||||
<name>string</name>
|
||||
<nsUri>http://www.w3.org/2001/XMLSchema</nsUri>
|
||||
</xdtoReturningValueType>
|
||||
<procedureName>getData</procedureName>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
<parameters uuid="7d105e69-b427-494a-992d-e3313a08739a">
|
||||
<name>Options</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Options</value>
|
||||
</synonym>
|
||||
<xdtoValueType>
|
||||
<name>string</name>
|
||||
<nsUri>http://www.w3.org/2001/XMLSchema</nsUri>
|
||||
</xdtoValueType>
|
||||
</parameters>
|
||||
</operations>
|
||||
<operations uuid="289c1432-cc3f-4913-b90d-785161be4836">
|
||||
<name>aboutMe</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>About me</value>
|
||||
</synonym>
|
||||
<xdtoReturningValueType>
|
||||
<name>typeResponse</name>
|
||||
<nsUri>http://global.dellin.ru/common/intergation/2013/1</nsUri>
|
||||
</xdtoReturningValueType>
|
||||
<procedureName>aboutMe</procedureName>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
<parameters uuid="790a70cc-096e-4417-b3c9-0cb7e722098e">
|
||||
<name>oResult</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>O result</value>
|
||||
</synonym>
|
||||
<xdtoValueType>
|
||||
<name>typeAboutMe</name>
|
||||
<nsUri>http://local.dellin.ru/bsp/ancillary/2014/1</nsUri>
|
||||
</xdtoValueType>
|
||||
<transferDirection>Out</transferDirection>
|
||||
</parameters>
|
||||
</operations>
|
||||
</mdclass:WebService>
|
@ -0,0 +1,191 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:WebService xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ef2d1795-02e8-4eeb-9027-281865acda2d">
|
||||
<name>bus_DataReceiving</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Bus data receiving</value>
|
||||
</synonym>
|
||||
<namespace>http://global.dellin.ru/bus/data-receiving</namespace>
|
||||
<xdtoPackages xsi:type="core:ReferenceValue">
|
||||
<value>XDTOPackage.global_integration_general</value>
|
||||
</xdtoPackages>
|
||||
<xdtoPackages xsi:type="core:ReferenceValue">
|
||||
<value>XDTOPackage.bus_data_receiving</value>
|
||||
</xdtoPackages>
|
||||
<descriptorFileName>data-receiving.1cws</descriptorFileName>
|
||||
<sessionMaxAge>20</sessionMaxAge>
|
||||
<operations uuid="400fe53e-4893-468d-b285-b28cce5847f7">
|
||||
<name>ping</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Ping</value>
|
||||
</synonym>
|
||||
<xdtoReturningValueType>
|
||||
<name>string</name>
|
||||
<nsUri>http://www.w3.org/2001/XMLSchema</nsUri>
|
||||
</xdtoReturningValueType>
|
||||
<procedureName>ping</procedureName>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
</operations>
|
||||
<operations uuid="d9213aaf-2e16-4df5-aed9-b7b8d3044f53">
|
||||
<name>getAdapterVersion</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Get adapter version</value>
|
||||
</synonym>
|
||||
<xdtoReturningValueType>
|
||||
<name>string</name>
|
||||
<nsUri>http://www.w3.org/2001/XMLSchema</nsUri>
|
||||
</xdtoReturningValueType>
|
||||
<procedureName>getAdapterVersion</procedureName>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
</operations>
|
||||
<operations uuid="6542a135-14a0-4d81-aba8-8e092bbb3b28">
|
||||
<name>getBusDataHistory</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Get bus data history</value>
|
||||
</synonym>
|
||||
<xdtoReturningValueType>
|
||||
<name>typeBusStatistics</name>
|
||||
<nsUri>http://global.dellin.ru/bus/data-receiving</nsUri>
|
||||
</xdtoReturningValueType>
|
||||
<procedureName>getBusDataHistory</procedureName>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
<parameters uuid="9eeb3d1c-6585-489f-971b-eb39a530f9e5">
|
||||
<name>depth</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Depth</value>
|
||||
</synonym>
|
||||
<comment>Глубина</comment>
|
||||
<xdtoValueType>
|
||||
<name>integer</name>
|
||||
<nsUri>http://www.w3.org/2001/XMLSchema</nsUri>
|
||||
</xdtoValueType>
|
||||
</parameters>
|
||||
<parameters uuid="9f608eab-2cdb-43a3-a445-128c10335e42">
|
||||
<name>periodName</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Period name</value>
|
||||
</synonym>
|
||||
<comment>имя периода</comment>
|
||||
<xdtoValueType>
|
||||
<name>string</name>
|
||||
<nsUri>http://www.w3.org/2001/XMLSchema</nsUri>
|
||||
</xdtoValueType>
|
||||
</parameters>
|
||||
<parameters uuid="1e261d37-c853-4c2c-9a00-d3ebaca7b592">
|
||||
<name>groupByTypes</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Group by types</value>
|
||||
</synonym>
|
||||
<comment>Группировка по типам</comment>
|
||||
<xdtoValueType>
|
||||
<name>boolean</name>
|
||||
<nsUri>http://www.w3.org/2001/XMLSchema</nsUri>
|
||||
</xdtoValueType>
|
||||
</parameters>
|
||||
<parameters uuid="e8433497-2081-4b31-90fd-625cddf434dd">
|
||||
<name>types</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Types</value>
|
||||
</synonym>
|
||||
<comment>Список типов в виде строки</comment>
|
||||
<xdtoValueType>
|
||||
<name>string</name>
|
||||
<nsUri>http://www.w3.org/2001/XMLSchema</nsUri>
|
||||
</xdtoValueType>
|
||||
</parameters>
|
||||
</operations>
|
||||
<operations uuid="9da64aec-43ae-4153-ae99-d3e3b662f9ea">
|
||||
<name>getBusRelatedMetadata</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Get bus related metadata</value>
|
||||
</synonym>
|
||||
<xdtoReturningValueType>
|
||||
<name>typeBusRelatedMetadata</name>
|
||||
<nsUri>http://global.dellin.ru/bus/data-receiving</nsUri>
|
||||
</xdtoReturningValueType>
|
||||
<procedureName>getBusRelatedMetadata</procedureName>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
</operations>
|
||||
<operations uuid="36137e10-3bc7-47d9-8f23-a64cbf86f9e9">
|
||||
<name>getBusStatistics</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Get bus statistics</value>
|
||||
</synonym>
|
||||
<xdtoReturningValueType>
|
||||
<name>typeBusStatistics</name>
|
||||
<nsUri>http://global.dellin.ru/bus/data-receiving</nsUri>
|
||||
</xdtoReturningValueType>
|
||||
<procedureName>getBusStatistics</procedureName>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
</operations>
|
||||
<operations uuid="588e97df-8121-4ef8-b5c7-b8bbc113b549">
|
||||
<name>getInfoBaseConnectionString</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Get info base connection string</value>
|
||||
</synonym>
|
||||
<xdtoReturningValueType>
|
||||
<name>string</name>
|
||||
<nsUri>http://www.w3.org/2001/XMLSchema</nsUri>
|
||||
</xdtoReturningValueType>
|
||||
<procedureName>getInfoBaseConnectionString</procedureName>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
</operations>
|
||||
<operations uuid="88d492e7-ed66-43e5-a053-4517f8bbd10e">
|
||||
<name>receiveData</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Receive data</value>
|
||||
</synonym>
|
||||
<xdtoReturningValueType>
|
||||
<name>typeResponse</name>
|
||||
<nsUri>http://global.dellin.ru/integration/general/</nsUri>
|
||||
</xdtoReturningValueType>
|
||||
<procedureName>receiveData</procedureName>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
<parameters uuid="8f06c8a6-0370-4e98-b8e7-4660e86f8324">
|
||||
<name>iBusData</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>In bus data</value>
|
||||
</synonym>
|
||||
<xdtoValueType>
|
||||
<name>typeBusData</name>
|
||||
<nsUri>http://global.dellin.ru/bus/data-receiving</nsUri>
|
||||
</xdtoValueType>
|
||||
</parameters>
|
||||
</operations>
|
||||
<operations uuid="316dee9b-6559-4375-9af4-3a916cc70b18">
|
||||
<name>callService</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Call service</value>
|
||||
</synonym>
|
||||
<xdtoReturningValueType>
|
||||
<name>typeProviderData</name>
|
||||
<nsUri>http://global.dellin.ru/bus/data-receiving</nsUri>
|
||||
</xdtoReturningValueType>
|
||||
<procedureName>callService</procedureName>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
<parameters uuid="5b6bdd31-4d0f-44df-83a0-2b5fbce19836">
|
||||
<name>requestData</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Request data</value>
|
||||
</synonym>
|
||||
<xdtoValueType>
|
||||
<name>typeRequestData</name>
|
||||
<nsUri>http://global.dellin.ru/bus/data-receiving</nsUri>
|
||||
</xdtoValueType>
|
||||
</parameters>
|
||||
</operations>
|
||||
</mdclass:WebService>
|
17216
tests/fixtures/СортировкаДереваМетаданных/Configuration.mdo
vendored
Normal file
17216
tests/fixtures/СортировкаДереваМетаданных/Configuration.mdo
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1121
tests/fixtures/СортировкаДереваМетаданных/Configuration.xml
vendored
Normal file
1121
tests/fixtures/СортировкаДереваМетаданных/Configuration.xml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
41
tests/fixtures/СортировкаОбъектовВПодсистемах/Интеграция.xml
vendored
Normal file
41
tests/fixtures/СортировкаОбъектовВПодсистемах/Интеграция.xml
vendored
Normal file
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4">
|
||||
<Subsystem uuid="b3fd2876-4b85-4038-bc81-1eb600a9be18">
|
||||
<Properties>
|
||||
<Name>Интеграция</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Интеграция</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<IncludeHelpInContents>true</IncludeHelpInContents>
|
||||
<IncludeInCommandInterface>true</IncludeInCommandInterface>
|
||||
<Explanation>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Содержит подсистемы</v8:content>
|
||||
</v8:item>
|
||||
</Explanation>
|
||||
<Picture/>
|
||||
<Content>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Enum.Енум1</xr:Item>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Enum.Енум2</xr:Item>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">4308b2f2-9e92-486e-8c34-13c11fd5fb49</xr:Item>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Enum.Енум7</xr:Item>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Enum.Енум6</xr:Item>
|
||||
</Content>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Subsystem>Файлы8</Subsystem>
|
||||
<Subsystem>Файлы7</Subsystem>
|
||||
<Subsystem>Файлы6</Subsystem>
|
||||
<Subsystem>Файлы5</Subsystem>
|
||||
<Subsystem>Файлы1</Subsystem>
|
||||
<Subsystem>Файлы3</Subsystem>
|
||||
<Subsystem>Файлы4</Subsystem>
|
||||
<Subsystem>Файлы2</Subsystem>
|
||||
</ChildObjects>
|
||||
</Subsystem>
|
||||
</MetaDataObject>
|
21
tests/fixtures/СортировкаОбъектовВПодсистемах/ОбменСообщениями.mdo
vendored
Normal file
21
tests/fixtures/СортировкаОбъектовВПодсистемах/ОбменСообщениями.mdo
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Subsystem xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="e2edbdac-d85f-4cc3-8680-4a2ab5720cb0">
|
||||
<name>ОбменСообщениями</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Обмен сообщениями</value>
|
||||
</synonym>
|
||||
<includeHelpInContents>true</includeHelpInContents>
|
||||
<includeInCommandInterface>true</includeInCommandInterface>
|
||||
<explanation>
|
||||
<key>ru</key>
|
||||
<value>Содержит подсистемы </value>
|
||||
</explanation>
|
||||
<subsystems>Подсистема1</subsystems>
|
||||
<subsystems>Подсистема2</subsystems>
|
||||
<subsystems>Подсистема3</subsystems>
|
||||
<subsystems>Подсистема4</subsystems>
|
||||
<subsystems>Подсистема5</subsystems>
|
||||
<subsystems>AПодсистема5</subsystems>
|
||||
<parentSubsystem>Subsystem.Подсистемы</parentSubsystem>
|
||||
</mdclass:Subsystem>
|
18
tests/fixtures/СортировкаОбъектовВПодсистемах/УведомленияПриИзмененииОбъектов.mdo
vendored
Normal file
18
tests/fixtures/СортировкаОбъектовВПодсистемах/УведомленияПриИзмененииОбъектов.mdo
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Subsystem xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="4308b2f2-9e92-486e-8c34-13c11fd5fb49">
|
||||
<name>Уведомления</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Уведомления</value>
|
||||
</synonym>
|
||||
<includeHelpInContents>true</includeHelpInContents>
|
||||
<includeInCommandInterface>true</includeInCommandInterface>
|
||||
<content>CommonModule.Уведомления</content>
|
||||
<content>4308b2f2-9e92-486e-8c34-13c11fd5fb49</content>
|
||||
<content>CommonModule.УведомленияСервер</content>
|
||||
<content>Constant.АдресатыПолучения</content>
|
||||
<content>CommonModule.УведомленияПереопределяемый</content>
|
||||
<content>Catalog.ВидыУведомлений</content>
|
||||
<content>CommonModule.УведомленияСерверПовтИсп</content>
|
||||
<parentSubsystem>Subsystem.ПодсистемыБСП.Subsystem.ОбменСообщениями</parentSubsystem>
|
||||
</mdclass:Subsystem>
|
@ -15,7 +15,9 @@
|
||||
юТест = ЮнитТестирование;
|
||||
|
||||
ВсеТесты = Новый Массив;
|
||||
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСинхронизацияОбъектовМетаданныхВызываетИсключениеEDT");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьСортировкуСоставаМетаданных");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьСортировкуВПодсистемах");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурВызываетИсключение");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурОбработаетФайл");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурНеОбработаетНесуществующийФайл");
|
||||
@ -28,6 +30,7 @@
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийИсправлениеНеКаноническогоНаписанияНеИндексируетНеизмененные");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийИсправлениеНеКаноническогоНаписанияИсправляетТолькоНаписание");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСинхронизацияОбъектовМетаданныхВызываетИсключение");
|
||||
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЗагрузкуСценариевПоИмени");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийДобавлениеТестовВРасширениеОбрабатываетНегативныеКейсы");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийДобавлениеТестовВРасширениеДобавляетИДополняетМодулиТестов");
|
||||
@ -57,6 +60,73 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#Область СортировкаСоставаМетаданных
|
||||
|
||||
Процедура ТестДолжен_ПроверитьСортировкуСоставаМетаданных() Экспорт
|
||||
|
||||
ОбъектСценария = ПолучитьСценарий("СортировкаДереваМетаданных.os");
|
||||
Настройки = ПолучитьДополнительныеНастройки();
|
||||
настр = Новый Соответствие;
|
||||
настр.Вставить("УчитываяПрефиксы", "тн_");
|
||||
Настройки.Настройки.Вставить("СортировкаДереваМетаданных", настр);
|
||||
|
||||
ИмяФайла = "СортировкаДереваМетаданных/Configuration.mdo";
|
||||
Файл = ПодготовитьИзменяемыйТестовыйФайл(ИмяФайла, "Configuration.mdo");
|
||||
|
||||
|
||||
Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, Настройки);
|
||||
Ожидаем.Что(Результат, Истина).ЭтоИстина();
|
||||
|
||||
|
||||
ИмяФайла = "СортировкаДереваМетаданных/Configuration.xml";
|
||||
Файл = ПодготовитьИзменяемыйТестовыйФайл(ИмяФайла, "Configuration.xml");
|
||||
Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, Настройки);
|
||||
Ожидаем.Что(Результат, Истина).ЭтоИстина();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СортировкаСоставаМетаданных
|
||||
|
||||
Процедура ТестДолжен_ПроверитьСортировкуВПодсистемах() Экспорт
|
||||
|
||||
ОбъектСценария = ПолучитьСценарий("СортировкаСоставаПодсистем.os");
|
||||
Настройки = ПолучитьДополнительныеНастройки();
|
||||
|
||||
ИмяФайла = "СортировкаОбъектовВПодсистемах/Интеграция.xml";
|
||||
Файл = ПодготовитьИзменяемыйТестовыйФайл(ИмяФайла, "Интеграция.xml", "Subsystems");
|
||||
|
||||
ТекстДо = ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя);
|
||||
Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, Настройки);
|
||||
Ожидаем.Что(Результат, Истина).ЭтоИстина();
|
||||
ТекстПосле = ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя);
|
||||
Ожидаем.Что(ТекстДо, Истина).Не_().Равно(ТекстПосле);
|
||||
|
||||
|
||||
ИмяФайла = "СортировкаОбъектовВПодсистемах/УведомленияПриИзмененииОбъектов.mdo";
|
||||
Файл = ПодготовитьИзменяемыйТестовыйФайл(ИмяФайла, "УведомленияПриИзмененииОбъектов.mdo", "Subsystems");
|
||||
ТекстДо = ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя);
|
||||
Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, Настройки);
|
||||
Ожидаем.Что(Результат, Истина).ЭтоИстина();
|
||||
ТекстПосле = ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя);
|
||||
Ожидаем.Что(ТекстДо, Истина).Не_().Равно(ТекстПосле);
|
||||
|
||||
ИмяФайла = "СортировкаОбъектовВПодсистемах/ОбменСообщениями.mdo";
|
||||
Файл = ПодготовитьИзменяемыйТестовыйФайл(ИмяФайла, "ОбменСообщениями.mdo", "Subsystems");
|
||||
|
||||
ТекстДо = ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя);
|
||||
Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, Настройки);
|
||||
Ожидаем.Что(Результат, Истина).ЭтоИстина();
|
||||
ТекстПосле = ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя);
|
||||
Ожидаем.Что(ТекстДо, Истина).Равно(ТекстПосле);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
|
||||
#Область ИсправлениеНеКаноническогоНаписания
|
||||
|
||||
Процедура ТестДолжен_ПроверитьЧтоСценарийИсправлениеНеКаноническогоНаписанияИсправляетФайл() Экспорт
|
||||
@ -214,8 +284,10 @@
|
||||
#Область СинхронизацияОбъектовМетаданныхИФайлов
|
||||
Процедура ТестДолжен_ПроверитьЧтоСинхронизацияОбъектовМетаданныхВызываетИсключение() Экспорт
|
||||
|
||||
МетаданныеКонфигурации.СброситьКеш(); // Если не сбрасывать будет ошибка при кешировани каталогов для EDT и Конфигуратора
|
||||
|
||||
ОбъектСценария = ПолучитьСценарий("СинхронизацияОбъектовМетаданныхИФайлов.os");
|
||||
Файл = Новый Файл(ОбъединитьПути(КаталогТестовыхФикстур(), "СинхронизацияОбъектовМетаданныхИФайлов\Configuration.xml"));
|
||||
Файл = Новый Файл(ОбъединитьПути(КаталогТестовыхФикстур(), "СинхронизацияОбъектовМетаданныхИФайлов/Configuration.xml"));
|
||||
|
||||
// Переименование типа без переименования каталога
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Имя каталога Ancillary отличается от метаданного ancillary");
|
||||
@ -273,6 +345,62 @@
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для ChartOfCharacteristicTypes.РасширенныеХарактеристикиОбъектов");
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестДолжен_ПроверитьЧтоСинхронизацияОбъектовМетаданныхВызываетИсключениеEDT() Экспорт
|
||||
|
||||
ОбъектСценария = ПолучитьСценарий("СинхронизацияОбъектовМетаданныхИФайлов.os");
|
||||
Файл = Новый Файл(ОбъединитьПути(КаталогТестовыхФикстур(), "СинхронизацияОбъектовМетаданныхИФайловEDT/Configuration/Configuration.mdo"));
|
||||
|
||||
// Переименование типа без переименования каталога
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Имя каталога Ancillary отличается от метаданного ancillary");
|
||||
// удаление типа без удаления файлов
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Необходимо удалить файлы");
|
||||
// базовые элементы
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог ChartsOfCharacteristicTypes");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог Catalogs");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог CommandGroups");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог CommonAttributes");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог CommonCommands");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог CommonForms");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог CommonModules");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог CommonPictures");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог CommonTemplates");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог Constants");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог DataProcessors");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог DefinedTypes");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог Documents");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог Enums");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог EventSubscriptions");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог FunctionalOptions");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог InformationRegisters");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог Reports");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог Roles");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог ScheduledJobs");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог SessionParameters");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог Subsystems");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог XDTOPackages");
|
||||
// элементы метаданных
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для Subsystem.ПодсистемыБСП");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для CommonPicture.GUID");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для Role.Администратор");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для SessionParameter.ГруппыДоступаПользователя");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для CommonTemplate.SftpExtension");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для CommonModule.SFTPКлиентСервер");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для CommonAttribute.UID");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для XDTOPackage.bsp_ancillary");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для EventSubscription.ВерсионированиеПриЗаписи");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для ScheduledJob.РоботАвтоматическаяОбработкаИзмененийАдресногоКлассификатора");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для FunctionalOption.ВестиЖурналДействийПользователя");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для DefinedType.ТипUIDСтрока");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для CommonCommand.АудиторскийСлед");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для CommandGroup.Печать");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для Catalog.АдресаЭлектроннойПочты");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для Enum.ВариантХраненияФайлов");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для Report.АнализЖурналаРегистрации");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для DataProcessor.АктивныеПользователи");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для ChartOfCharacteristicTypes.ТипыЗначенийВидовПравДоступа");
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ДобавлениеТестовВРасширение
|
||||
@ -635,7 +763,7 @@
|
||||
КонецПроцедуры
|
||||
|
||||
Функция КаталогТестовыхФикстур()
|
||||
Возврат ОбъединитьПути(КаталогИсходников(), "tests\fixtures");
|
||||
Возврат Норма(ОбъединитьПути(КаталогИсходников(), "tests/fixtures"));
|
||||
КонецФункции
|
||||
|
||||
Функция Фикстура(ПутьВКаталогеФикстур)
|
||||
@ -671,11 +799,26 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПодготовитьИзменяемыйТестовыйФайл(Знач ИмяТестовогоФайла)
|
||||
Функция ПодготовитьИзменяемыйТестовыйФайл(Знач ИмяТестовогоФайла, ЗаписатьКакИмя = "", ВДиректории = "")
|
||||
|
||||
ПутьКТесту = ОбъединитьПути(КаталогТестовыхФикстур(), ИмяТестовогоФайла);
|
||||
ПутьКФайлу = МенеджерВременныхФайлов.СоздатьФайл(ИмяТестовогоФайла);
|
||||
КопироватьФайл(ПутьКТесту, ПутьКФайлу);
|
||||
|
||||
ПутьКФайлу = МенеджерВременныхФайлов.СоздатьКаталог();
|
||||
МенеджерВременныхФайлов.БазовыйКаталог = ПутьКФайлу;
|
||||
|
||||
Если ЗаписатьКакИмя <> "" Тогда
|
||||
Если ВДиректории <> "" Тогда
|
||||
ПутьКФайлу = МенеджерВременныхФайлов.СоздатьКаталог(Норма(ОбъединитьПути(ПутьКФайлу, ВДиректории)));
|
||||
КонецЕсли;
|
||||
|
||||
ПутьКФайлу = ОбъединитьПути(ПутьКФайлу, ЗаписатьКакИмя);
|
||||
Иначе
|
||||
Путь = Норма(ОбъединитьПути(ПутьКФайлу, ИмяТестовогоФайла));
|
||||
ПутьКФайлу = МенеджерВременныхФайлов.СоздатьФайл(Путь);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КопироватьФайл(Норма(ПутьКТесту), ПутьКФайлу);
|
||||
Файл = Новый Файл(ПутьКФайлу);
|
||||
Возврат Файл;
|
||||
|
||||
@ -700,6 +843,18 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Норма(Путь)
|
||||
СисИнфо = Новый СистемнаяИнформация();
|
||||
ЭтоWindows = Найти(НРег(СисИнфо.ВерсияОС), "windows") > 0;
|
||||
|
||||
Если ЭтоWindows Тогда
|
||||
Возврат СтрЗаменить(Путь, "/", "\");
|
||||
Иначе
|
||||
Возврат СтрЗаменить(Путь, "\", "/");
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ИспользоватьТестовуюНастройку(КаталогРепозитория, ИмяФайлаНастройки)
|
||||
|
||||
КопироватьФайл(
|
||||
|
@ -102,6 +102,7 @@
|
||||
ОжидаемыеСценарии.Добавить("РазборОтчетовОбработокРасширений.os");
|
||||
ОжидаемыеСценарии.Добавить("СинхронизацияОбъектовМетаданныхИФайлов.os");
|
||||
ОжидаемыеСценарии.Добавить("СортировкаДереваМетаданных.os");
|
||||
ОжидаемыеСценарии.Добавить("СортировкаСоставаПодсистем.os");
|
||||
|
||||
ИменаЗагружаемыхСценариев = МенеджерНастроек.ИменаЗагружаемыхСценариев();
|
||||
|
||||
|
@ -112,7 +112,7 @@
|
||||
КонецПроцедуры
|
||||
|
||||
Функция КаталогТестовыхФикстур()
|
||||
Возврат ОбъединитьПути(КаталогИсходников(), "tests\fixtures");
|
||||
Возврат ОбъединитьПути(КаталогИсходников(), "tests/fixtures");
|
||||
КонецФункции
|
||||
|
||||
Функция КаталогИсходников()
|
||||
|
@ -19,6 +19,7 @@
|
||||
"РазборОтчетовОбработокРасширений.os",
|
||||
"СинхронизацияОбъектовМетаданныхИФайлов.os",
|
||||
"СортировкаДереваМетаданных.os",
|
||||
"СортировкаСоставаПодсистем.os",
|
||||
"УдалениеДублейМетаданных.os",
|
||||
"УдалениеЛишнихКонцевыхПробелов.os",
|
||||
"УдалениеЛишнихПустыхСтрок.os"
|
||||
@ -40,6 +41,9 @@
|
||||
"РазборОтчетовОбработокРасширений": {
|
||||
"ИспользоватьНастройкиПоУмолчанию": true,
|
||||
"ВерсияПлатформы": ""
|
||||
},
|
||||
"СортировкаДереваМетаданных": {
|
||||
"УчитываяПрефикс": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user