1
0
mirror of https://github.com/bia-technologies/precommit4onec.git synced 2024-12-30 21:19:59 +02:00

ORAIS-951 / Ошибки сортировки состава подсистем

This commit is contained in:
Берлинский Николай Семенович (000085318) 2023-06-02 17:10:05 +03:00 committed by Максимов Валерий Валерьевич (000044217)
parent 830213eca5
commit 8fdc5d0d76
12 changed files with 296 additions and 104 deletions

View File

@ -36,6 +36,7 @@
Лог = ДополнительныеПараметры.Лог;
НастройкиСценария = ДополнительныеПараметры.Настройки.Получить(ИмяСценария());
ФайлОбработан = Ложь;
Если АнализируемыйФайл.Существует() Тогда
@ -45,95 +46,85 @@
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
ЭтоЕДТ = ТипыФайлов.ЭтоФайлОписанияПодсистемыEDT(АнализируемыйФайл);
Если ОтсортироватьПодсистему(АнализируемыйФайл.ПолноеИмя, ЭтоЕДТ) Тогда
ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя);
КонецЕсли;
ФайлОбработан = ОтсортироватьПодсистему(АнализируемыйФайл.ПолноеИмя, ЭтоЕДТ);
Возврат Истина;
Если ФайлОбработан Тогда
ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Ложь;
Возврат ФайлОбработан;
КонецФункции // ОбработатьФайл()
Функция ОтсортироватьПодсистему(Знач ИмяФайла, ЭтоЕДТ)
СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(ИмяФайла);
Регексп = РегекспСостав(ЭтоЕДТ);
ПодчиненныеМетаданные = Регексп.НайтиСовпадения(СодержимоеФайла);
Если ПодчиненныеМетаданные.Количество() = 0 Тогда
РегекспСостав = РегекспСостав(ЭтоЕДТ);
СовпаденияСостава = РегекспСостав.НайтиСовпадения(СодержимоеФайла);
Если СовпаденияСостава.Количество() = 0 Тогда
Возврат Ложь;
КонецЕсли;
СовпадениеСостава = СовпаденияСостава[0];
ИсходнаяСтрока = ПодчиненныеМетаданные[0].Группы[0].Значение;
ОбъектыМетаданныхСтроки = РегекспМетаданные(ЭтоЕДТ).НайтиСовпадения(ИсходнаяСтрока);
СтрокаПоискаМетаданных = ?(ЭтоЕДТ,
СовпадениеСостава.Группы[0].Значение, // Всё совпадение (нет общего тега)
СовпадениеСостава.Группы[1].Значение); // Текст внутри общего тега Content
СовпаденияМетаданных = РегекспМетаданные().НайтиСовпадения(СтрокаПоискаМетаданных);
// отдельный список с типами, нужен для того, чтобы сохранить порядок при обходе соответствия
ОбъектыТипаПоПорядку = Новый СписокЗначений;
ТаблицаСостава = Новый ТаблицаЗначений;
ТаблицаСостава.Колонки.Добавить("СтрокаСостава");
ОбъектыМетаданных = Новый Соответствие;
ПоследнийТип = "";
ОбъектыТипа = Новый СписокЗначений;
Для Каждого ОбъектМетаданных Из ОбъектыМетаданныхСтроки Цикл
Для Каждого СовпадениеМетаданных Из СовпаденияМетаданных Цикл
ТипМетаданных = ОбъектМетаданных.Группы[1].Значение;
СтрокаМетаданных = ОбъектМетаданных.Группы[0].Значение;
ИмяМетаданного = ОбъектМетаданных.Группы[2].Значение;
Если СтрНачинаетсяС(ИмяМетаданного, ".") Тогда
ИмяМетаданного = Сред(ИмяМетаданного, 2);
Если СтрНайти(СовпадениеМетаданных.Группы[1].Значение, "-") > 0 Тогда // Значение тега (имя метаданных), вероятно это UID (битая ссылка)
Продолжить;
КонецЕсли;
Список = ОбъектыМетаданных.Получить(ТипМетаданных);
ТаблицаСостава.Добавить().СтрокаСостава = СовпадениеМетаданных.Группы[0].Значение;
Если Список = Неопределено Тогда
Список = Новый СписокЗначений;
ОбъектыМетаданных.Вставить(ТипМетаданных, Список);
ОбъектыТипаПоПорядку.Добавить(ТипМетаданных);
КонецЕсли;
КонецЦикла;
Если Список.НайтиПоЗначению(ОбъектМетаданных.Группы[0].Значение) = Неопределено Тогда
Список.Добавить(ОбъектМетаданных.Группы[0].Значение, ИмяМетаданного);
ТаблицаСостава.Сортировать("СтрокаСостава");
ТаблицаСостава.Свернуть("СтрокаСостава");
РазделительЭлементов = ?(ЭтоЕДТ,
Символы.ПС + " ",
Символы.ПС + " ");
СтрокаЗамены = СтрСоединить(ТаблицаСостава.ВыгрузитьКолонку("СтрокаСостава"), РазделительЭлементов);
Если ЗначениеЗаполнено(СтрокаЗамены) Тогда
СтрокаЗамены = РазделительЭлементов + СтрокаЗамены;
Если Не ЭтоЕДТ Тогда
СтрокаЗамены = СтрШаблон(
"
| <Content>%1
| </Content>",
СтрокаЗамены);
КонецЕсли;
КонецЦикла;
СтрокаЗамены = "";
Для Каждого Тип Из ОбъектыТипаПоПорядку Цикл
ИначеЕсли Не ЭтоЕДТ Тогда
ОбъектМетаданных = ОбъектыМетаданных.Получить(Тип.Значение);
СтрокаЗамены =
"
| <Content/>";
ОбъектМетаданных.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
СтрокаЗамены = СтрокаЗамены + ?(ПустаяСтрока(СтрокаЗамены), "", Символы.ПС)
+ СтрСоединить(ОбъектМетаданных.ВыгрузитьЗначения(), Символы.ПС);
КонецЦикла;
Если НЕ ЭтоЕДТ Тогда
СтрокаЗамены = ПодчиненныеМетаданные[0].Группы[1].Значение + СокрЛП(СтрокаЗамены)
+ ПодчиненныеМетаданные[0].Группы[3].Значение;
КонецЕсли;
Если СтрСравнить(ИсходнаяСтрока, СтрокаЗамены) = 0 Тогда
СтрокаЗамены = СтрокаЗамены + Символы.ПС;
ИсходнаяСтрока = СовпадениеСостава.Группы[0].Значение; // Всё совпадение, которое будем заменять
Если СтрСравнить(ИсходнаяСтрока, СтрокаЗамены) = 0 Тогда
Возврат Ложь;
КонецЕсли;
Если ЭтоЕДТ Тогда
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, СокрЛП(СтрокаЗамены));
Иначе
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, СтрокаЗамены);
КонецЕсли;
СодержимоеФайла = РегекспСостав.Заменить(СодержимоеФайла, СтрокаЗамены);
ФайловыеОперации.ЗаписатьТекстФайла(ИмяФайла, СодержимоеФайла);
Возврат Истина;
@ -142,8 +133,10 @@
Функция РегекспСостав(ЭтоЕДТ)
ПоискДочерних = ?(ЭтоЕДТ, "(?:<content>)([\w\W]+)(?:<\/content>)", "(<Content>\s+)(<[\w\W]+>)(\s+<\/Content>)");
Регексп = Новый РегулярноеВыражение(ПоискДочерних);
ПоискСостава = ?(ЭтоЕДТ,
"\s*<content>[\w\W]+<\/content>[\t ]*\n*",
"\s*<Content>([\w\W]+)<\/Content>[\t ]*\n*");
Регексп = Новый РегулярноеВыражение(ПоискСостава);
Регексп.ИгнорироватьРегистр = Истина;
Регексп.Многострочный = Истина;
@ -151,12 +144,9 @@
КонецФункции
Функция РегекспМетаданные(ЭтоЕДТ)
Функция РегекспМетаданные()
ШаблонНачало = ?(ЭтоЕДТ, "^\s*<[\w]+>", "^\s+<[\w:\s=""]+>");
ШаблонИмяМетаданных = "([a-zA-Z]+)((?:\.(?:[а-яa-zA-ZА-Я0-9_]+))+)";
ШаблонУИД = "(([a-zA-z0-9\-]+))";
ПоискМетаданных = СтрШаблон("%1(?:%2|%3)<\/[\w:]+>", ШаблонНачало, ШаблонУИД, ШаблонИмяМетаданных);
ПоискМетаданных = "<[^>]+>([^<]*)<\/[^>]+>"; // Разбивка по тегам
Регексп = Новый РегулярноеВыражение(ПоискМетаданных);
Регексп.ИгнорироватьРегистр = Истина;
Регексп.Многострочный = Истина;

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Subsystem xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="e847cc8a-a9f6-485f-b71f-305844be437d">
<name>БазовыйФункционал</name>
<synonym>
<key>ru</key>
<value>Базовый функционал</value>
</synonym>
<includeHelpInContents>true</includeHelpInContents>
<includeInCommandInterface>true</includeInCommandInterface>
<explanation>
<key>ru</key>
<value>Содержит подсистемы с базовым функционалом и инструментами без которых существование системы невозможно.</value>
</explanation>
<content>4308b2f2-9e92-486e-8c34-13c11fd5fb49</content>
<subsystems>НастройкиПользователей</subsystems>
<subsystems>ОбщегоНазначения</subsystems>
<subsystems>УправлениеДоступом</subsystems>
<subsystems>Преобразования</subsystems>
<parentSubsystem>Subsystem.ПодсистемыБСП</parentSubsystem>
</mdclass:Subsystem>

View 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>
<xr:Item xsi:type="xr:MDObjectRef">ExternalDataSource.ТекущаяСУБД.Table.ИнформацияОбОшибках</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>

View File

@ -0,0 +1,32 @@
<?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="7f5df10d-3540-4324-957b-6c5c5ac2d87f">
<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/>
</Properties>
<ChildObjects>
<Subsystem>АдресныйКлассификатор</Subsystem>
<Subsystem>Банки</Subsystem>
<Subsystem>Валюты</Subsystem>
<Subsystem>Календари</Subsystem>
<Subsystem>ПрочиеКлассификаторы</Subsystem>
</ChildObjects>
</Subsystem>
</MetaDataObject>

View File

@ -0,0 +1,38 @@
<?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="5ef92658-c995-4fc3-b322-1adf888b601f">
<Properties>
<Name>ПодсистемыБСП</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Подсистемы БСП</v8:content>
</v8:item>
</Synonym>
<Comment/>
<IncludeHelpInContents>true</IncludeHelpInContents>
<IncludeInCommandInterface>false</IncludeInCommandInterface>
<Explanation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Состав подсистем конфигурации БСП.
Первый уровень - это разделы, второй уровень - это подсистемы.
Все объекты находятся на уровне подсистем, к разделам прикрепление объектов запрещено.</v8:content>
</v8:item>
</Explanation>
<Picture/>
<Content>
<xr:Item xsi:type="xr:MDObjectRef">e2630219-115c-4995-9a5d-52482cb39909</xr:Item>
</Content>
</Properties>
<ChildObjects>
<Subsystem>БазовыйФункционал</Subsystem>
<Subsystem>ИзмененияОбъектов</Subsystem>
<Subsystem>Интеграция</Subsystem>
<Subsystem>НСИ</Subsystem>
<Subsystem>ОбменСообщениями</Subsystem>
<Subsystem>ПрикладнойИнструментарий</Subsystem>
<Subsystem>СервисныйИнструментарий</Subsystem>
</ChildObjects>
</Subsystem>
</MetaDataObject>

View File

@ -0,0 +1,15 @@
<?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>Catalog.ВидыУведомлений</content> <content>CommonModule.Уведомления</content>
<content>CommonModule.УведомленияПереопределяемый</content><content>CommonModule.УведомленияСервер</content>
<content>CommonModule.УведомленияСерверПовтИсп</content>
<content>Constant.АдресатыПолучения</content>
<content>ExternalDataSource.ТекущаяСУБД.Table.ИнформацияОбОшибках</content>
<parentSubsystem>Subsystem.ПодсистемыБСП.Subsystem.ОбменСообщениями</parentSubsystem>
</mdclass:Subsystem>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Subsystem xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="e847cc8a-a9f6-485f-b71f-305844be437d">
<name>БазовыйФункционал</name>
<synonym>
<key>ru</key>
<value>Базовый функционал</value>
</synonym>
<includeHelpInContents>true</includeHelpInContents>
<includeInCommandInterface>true</includeInCommandInterface>
<explanation>
<key>ru</key>
<value>Содержит подсистемы с базовым функционалом и инструментами без которых существование системы невозможно.</value>
</explanation>
<subsystems>НастройкиПользователей</subsystems>
<subsystems>ОбщегоНазначения</subsystems>
<subsystems>УправлениеДоступом</subsystems>
<subsystems>Преобразования</subsystems>
<parentSubsystem>Subsystem.ПодсистемыБСП</parentSubsystem>
</mdclass:Subsystem>

View File

@ -22,9 +22,8 @@
<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>
<xr:Item xsi:type="xr:MDObjectRef">Enum.Енум7</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">ExternalDataSource.ТекущаяСУБД.Table.ИнформацияОбОшибках</xr:Item>
</Content>
</Properties>
@ -39,4 +38,4 @@
<Subsystem>Файлы2</Subsystem>
</ChildObjects>
</Subsystem>
</MetaDataObject>
</MetaDataObject>

View File

@ -0,0 +1,36 @@
<?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="5ef92658-c995-4fc3-b322-1adf888b601f">
<Properties>
<Name>ПодсистемыБСП</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Подсистемы БСП</v8:content>
</v8:item>
</Synonym>
<Comment/>
<IncludeHelpInContents>true</IncludeHelpInContents>
<IncludeInCommandInterface>false</IncludeInCommandInterface>
<Explanation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Состав подсистем конфигурации БСП.
Первый уровень - это разделы, второй уровень - это подсистемы.
Все объекты находятся на уровне подсистем, к разделам прикрепление объектов запрещено.</v8:content>
</v8:item>
</Explanation>
<Picture/>
<Content/>
</Properties>
<ChildObjects>
<Subsystem>БазовыйФункционал</Subsystem>
<Subsystem>ИзмененияОбъектов</Subsystem>
<Subsystem>Интеграция</Subsystem>
<Subsystem>НСИ</Subsystem>
<Subsystem>ОбменСообщениями</Subsystem>
<Subsystem>ПрикладнойИнструментарий</Subsystem>
<Subsystem>СервисныйИнструментарий</Subsystem>
</ChildObjects>
</Subsystem>
</MetaDataObject>

View File

@ -7,13 +7,12 @@
</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>
<content>CommonModule.УведомленияПереопределяемый</content>
<content>CommonModule.УведомленияСервер</content>
<content>CommonModule.УведомленияСерверПовтИсп</content>
<content>Constant.АдресатыПолучения</content>
<content>ExternalDataSource.ТекущаяСУБД.Table.ИнформацияОбОшибках</content>
<parentSubsystem>Subsystem.ПодсистемыБСП.Subsystem.ОбменСообщениями</parentSubsystem>
</mdclass:Subsystem>

View File

@ -10,6 +10,7 @@
Перем МенеджерВременныхФайлов;
#Область ПрограммныйИнтерфейс
// Основная точка входа
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
@ -30,7 +31,6 @@
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийИсправлениеНеКаноническогоНаписанияНеИндексируетНеизмененные");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийИсправлениеНеКаноническогоНаписанияИсправляетТолькоНаписание");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСинхронизацияОбъектовМетаданныхВызываетИсключение");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЗагрузкуСценариевПоИмени");
ВсеТесты.Добавить("ТестДолжен_ПроверитьИзменениеТегаКастомизацииФормы");
@ -85,47 +85,50 @@
#КонецОбласти
#Область СортировкаСоставаМетаданных
#Область СортировкаСоставаПодсистем
Процедура ТестДолжен_ПроверитьСортировкуВПодсистемах() Экспорт
ОбъектСценария = ПолучитьСценарий("СортировкаСоставаПодсистем.os");
Настройки = ПолучитьДополнительныеНастройки();
ИмяФайла = "СортировкаОбъектовВПодсистемах/Интеграция.xml";
Файл = ПодготовитьИзменяемыйТестовыйФайл(ИмяФайла, "Интеграция.xml", "Subsystems");
ТекстДо = ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя);
Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, Настройки);
Ожидаем.Что(Результат, Истина).ЭтоИстина();
ТекстПосле = ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя);
Ожидаем.Что(ТекстДо, Истина).Не_().Равно(ТекстПосле);
Ожидаем.Что(СтрЧислоСтрок(ТекстДо), Истина).Равно(СтрЧислоСтрок(ТекстПосле));
ИмяФайла = "СортировкаОбъектовВПодсистемах/УведомленияПриИзмененииОбъектов.mdo";
Файл = ПодготовитьИзменяемыйТестовыйФайл(ИмяФайла, "УведомленияПриИзмененииОбъектов.mdo", "Subsystems");
ТекстДо = ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя);
Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, Настройки);
Ожидаем.Что(Результат, Истина).ЭтоИстина();
ТекстПосле = ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя);
Ожидаем.Что(ТекстДо, Истина).Не_().Равно(ТекстПосле);
Ожидаем.Что(СтрЧислоСтрок(ТекстДо), Истина).Равно(СтрЧислоСтрок(ТекстПосле));
ВременныйКаталог = ПолучитьИмяВременногоФайла();
СоздатьКаталог(ВременныйКаталог);
ТестовыйКаталог = ОбъединитьПути(ВременныйКаталог, "subsystems");
СоздатьКаталог(ТестовыйКаталог);
ИмяФайла = "СортировкаОбъектовВПодсистемах/ОбменСообщениями.mdo";
Файл = ПодготовитьИзменяемыйТестовыйФайл(ИмяФайла, "ОбменСообщениями.mdo", "Subsystems");
ПодкаталогФикстур = ОбъединитьПути(КаталогТестовыхФикстур(), "СортировкаОбъектовВПодсистемах");
ПодкаталогФайловДо = ОбъединитьПути(ПодкаталогФикстур, "До");
ПодкаталогФайловПосле = ОбъединитьПути(ПодкаталогФикстур, "После");
Для каждого ТестовыйФайл Из НайтиФайлы(ПодкаталогФайловДо, ПолучитьМаскуВсеФайлы()) Цикл
ТекстДо = ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя);
Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, Настройки);
Ожидаем.Что(Результат, Истина).ЭтоИстина();
ТекстПосле = ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя);
Ожидаем.Что(ТекстДо, Истина).Равно(ТекстПосле);
Ожидаем.Что(СтрЧислоСтрок(ТекстДо), Истина).Равно(СтрЧислоСтрок(ТекстПосле));
ИмяФайла = ТестовыйФайл.Имя;
ФайлПослеЭталон = Новый Файл(ОбъединитьПути(ПодкаталогФайловПосле, ИмяФайла));
ФайлДолженИзмениться = ФайлПослеЭталон.Существует();
Если Не ФайлДолженИзмениться Тогда
ФайлПослеЭталон = ТестовыйФайл;
КонецЕсли;
ОбрабатываемыйФайл = Новый Файл(ОбъединитьПути(ТестовыйКаталог, ИмяФайла));
КопироватьФайл(ТестовыйФайл.ПолноеИмя, ОбрабатываемыйФайл.ПолноеИмя);
Результат = ОбъектСценария.ОбработатьФайл(ОбрабатываемыйФайл, "", Настройки);
Ожидаем.Что(Результат, "Проверка обработки файла " + ИмяФайла).Равно(ФайлДолженИзмениться);
ТекстПосле = ФайловыеОперации.ПрочитатьТекстФайла(ОбрабатываемыйФайл.ПолноеИмя);
ТекстПослеЭталон = ФайловыеОперации.ПрочитатьТекстФайла(ФайлПослеЭталон.ПолноеИмя);
Ожидаем.Что(ТекстПосле, "Проверка результата файла " + ИмяФайла).Равно(ТекстПослеЭталон);
КонецЦикла;
МенеджерВременныхФайлов.УдалитьФайл(ВременныйКаталог);
КонецПроцедуры
#КонецОбласти
#Область ИсправлениеНеКаноническогоНаписания
Процедура ТестДолжен_ПроверитьЧтоСценарийИсправлениеНеКаноническогоНаписанияИсправляетФайл() Экспорт
@ -174,6 +177,7 @@
#КонецОбласти
#Область ОтключениеПолнотекстовогоПоиска
Процедура ТестДолжен_ПроверитьЧтоСценарийОтключенияПолнотекстовогоПоискаИмеетМетодПолученияНастроек() Экспорт
ОбъектСценария = ПолучитьСценарий("ОтключениеПолнотекстовогоПоиска.os");
@ -491,7 +495,6 @@
#КонецОбласти
#КонецОбласти
#Область Служебные
@ -731,4 +734,4 @@
КонецПроцедуры
#КонецОбласти
#КонецОбласти