diff --git "a/src/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262.os" "b/src/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262.os"
new file mode 100644
index 0000000..81aa9d2
--- /dev/null
+++ "b/src/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\270\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262.os"
@@ -0,0 +1,157 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Служебный модуль с реализацией сценариев обработки файлов <ПроверкаДублейУникальныхИдентификаторов>
+//
+///////////////////////////////////////////////////////////////////////////////
+
+// Лог - Объект - Текущий лог
+Перем Лог;
+
+// ИмяСценария
+// Возвращает имя сценария обработки файлов
+//
+// Возвращаемое значение:
+// Строка - Имя текущего сценария обработки файлов
+//
+Функция ИмяСценария() Экспорт
+
+ Возврат "ПроверкаДублейУникальныхИдентификаторов";
+
+КонецФункции // ИмяСценария()
+
+// ОбработатьФайл
+// Выполняет обработку файла
+//
+// Параметры:
+// АнализируемыйФайл - Файл - Файл из журнала git для анализа
+// КаталогИсходныхФайлов - Строка - Каталог расположения исходных файлов относительно каталог репозитория
+// ДополнительныеПараметры - Структура - Набор дополнительных параметров, которые можно использовать
+// * Лог - Объект - Текущий лог
+// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
+// * КаталогРепозитория - Строка - Адрес каталога репозитория
+// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
+// и которые необходимо дообработать
+//
+// Возвращаемое значение:
+// Булево - Признак выполненной обработки файла
+//
+Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт
+
+ Лог = ДополнительныеПараметры.Лог;
+
+ Если АнализируемыйФайл.Существует() И ТипыФайлов.ЭтоФайлОписанияМетаданных(АнализируемыйФайл) Тогда
+
+ Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
+
+ ПроверитьНаличиеДублейУникальныхИдентификаторов(АнализируемыйФайл, КаталогИсходныхФайлов);
+ Возврат Истина;
+
+ КонецЕсли;
+
+ Возврат Ложь;
+
+КонецФункции // ОбработатьФайл()
+
+Процедура ПроверитьНаличиеДублейУникальныхИдентификаторов(АнализируемыйФайл, КаталогКонфигурации)
+
+ Идентификаторы = ИдентификаторыПроверяемогоФайла(АнализируемыйФайл);
+ Если Идентификаторы.Количество() = 0 Тогда
+ Возврат;
+ КонецЕсли;
+
+ ЭтоEDT = ТипыФайлов.ЭтоФайлОписанияМетаданныхEDT(АнализируемыйФайл);
+ ПроверяемыеФайлы = ФайлыОписанияМетаданных(КаталогКонфигурации, ЭтоEDT);
+ Если ПроверяемыеФайлы.Количество() = 0 Тогда
+ Возврат;
+ КонецЕсли;
+
+ Для каждого ФайлНаПроверку Из ПроверяемыеФайлы Цикл
+
+ Если ФайлНаПроверку.ПолноеИмя = АнализируемыйФайл.ПолноеИмя Тогда
+ Продолжить;
+ КонецЕсли;
+
+ УникальныйИдентификатор = НайтиДубликатыУникальногоИдентификатора(ФайлНаПроверку, Идентификаторы);
+ Если УникальныйИдентификатор = Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+
+ ТекстОшибки = СтрШаблон("В файле '%1' обнаружен uuid %2 из проверяемого файла %3",
+ ФайлНаПроверку.ПолноеИмя, УникальныйИдентификатор, АнализируемыйФайл.ПолноеИмя);
+ Лог.Ошибка(ТекстОшибки);
+
+ ВызватьИсключение ТекстОшибки;
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+Функция ИдентификаторыПроверяемогоФайла(АнализируемыйФайл)
+
+ Идентификаторы = Новый Массив;
+ ТекстМодуля = ФайловыеОперации.ПрочитатьТекстФайла(АнализируемыйФайл.ПолноеИмя);
+ Если ПустаяСтрока(ТекстМодуля) Тогда
+ Возврат Идентификаторы;
+ КонецЕсли;
+
+ ТекстРегулярногоВыражения = ТекстРегулярногоВыражения();
+ ШаблонПоиска = Новый РегулярноеВыражение(ТекстРегулярногоВыражения);
+ ШаблонПоиска.Многострочный = Ложь;
+ ШаблонПоиска.ИгнорироватьРегистр = Истина;
+
+ Совпадения = ШаблонПоиска.НайтиСовпадения(ТекстМодуля);
+ Если Совпадения.Количество() = 0 Тогда
+ Возврат Идентификаторы;
+ КонецЕсли;
+
+ Для каждого Совпадение Из Совпадения Цикл
+ Если Совпадение.Группы.Количество() < 2 Тогда
+ Продолжить;
+ КонецЕсли;
+ НайденныйУникальныйИдентификатор = Совпадение.Группы[1].Значение;
+ Идентификаторы.Добавить(НайденныйУникальныйИдентификатор);
+ КонецЦикла;
+
+ Возврат Идентификаторы;
+
+КонецФункции
+
+Функция ФайлыОписанияМетаданных(КаталогКонфигурации, ЭтоEDT)
+
+ ФайлыОписания = Новый Массив;
+ ФильтрФайлов = ?(ЭтоEDT, "*.mdo", "*.xml");
+ ФайлыНаПроверку = НайтиФайлы(КаталогКонфигурации, ФильтрФайлов, Истина);
+ Для каждого Файл Из ФайлыНаПроверку Цикл
+ Если Не Файл.Существует() Или
+ Не ТипыФайлов.ЭтоФайлОписанияМетаданных(Файл) Тогда
+ Продолжить;
+ КонецЕсли;
+ ФайлыОписания.Добавить(Файл);
+ КонецЦикла;
+
+ Возврат ФайлыОписания;
+
+КонецФункции
+
+Функция НайтиДубликатыУникальногоИдентификатора(АнализируемыйФайл, УникальныеИдентификаторы)
+
+ ТекстФайла = ФайловыеОперации.ПрочитатьТекстФайла(АнализируемыйФайл.ПолноеИмя);
+ Если ПустаяСтрока(ТекстФайла) Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+
+ Для каждого УИД Из УникальныеИдентификаторы Цикл
+
+ ТекстУИД = СтрШаблон("uuid=""%1""", УИД);
+ Если СтрНайти(ТекстФайла, ТекстУИД) > 0 Тогда
+ Возврат УИД;
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Неопределено;
+
+КонецФункции
+
+Функция ТекстРегулярногоВыражения()
+ Возврат "uuid=\W([0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12})";
+КонецФункции
\ No newline at end of file
diff --git "a/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/Configurator/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721.xml" "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/Configurator/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721.xml"
new file mode 100644
index 0000000..5b83c39
--- /dev/null
+++ "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/Configurator/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721.xml"
@@ -0,0 +1,15 @@
+
+
+
+
+ Справочник1
+
+
+ ru
+ Справочник1
+
+
+
+
+
+
diff --git "a/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/Configurator/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722.xml" "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/Configurator/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722.xml"
new file mode 100644
index 0000000..e628aef
--- /dev/null
+++ "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/Configurator/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722.xml"
@@ -0,0 +1,15 @@
+
+
+
+
+ Справочник2
+
+
+ ru
+ Справочник2
+
+
+
+
+
+
diff --git "a/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/Configurator/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2723/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2723.xml" "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/Configurator/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2723/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2723.xml"
new file mode 100644
index 0000000..4b7b507
--- /dev/null
+++ "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/Configurator/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2723/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2723.xml"
@@ -0,0 +1,15 @@
+
+
+
+
+ Справочник3
+
+
+ ru
+ Справочник3
+
+
+
+
+
+
diff --git "a/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/Configurator/\320\224\321\203\320\261\320\273\320\270/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\224\321\203\320\261\320\273\320\265\320\274/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\224\321\203\320\261\320\273\320\265\320\274.xml" "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/Configurator/\320\224\321\203\320\261\320\273\320\270/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\224\321\203\320\261\320\273\320\265\320\274/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\224\321\203\320\261\320\273\320\265\320\274.xml"
new file mode 100644
index 0000000..7492be1
--- /dev/null
+++ "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/Configurator/\320\224\321\203\320\261\320\273\320\270/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\224\321\203\320\261\320\273\320\265\320\274/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\224\321\203\320\261\320\273\320\265\320\274.xml"
@@ -0,0 +1,15 @@
+
+
+
+
+ СправочникСДублем
+
+
+ ru
+ СправочникСДублем
+
+
+
+
+
+
diff --git "a/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/Configurator/\320\224\321\203\320\261\320\273\320\270/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\321\214\320\275\321\213\320\274UUID/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\321\214\320\275\321\213\320\274UUID.xml" "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/Configurator/\320\224\321\203\320\261\320\273\320\270/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\321\214\320\275\321\213\320\274UUID/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\321\214\320\275\321\213\320\274UUID.xml"
new file mode 100644
index 0000000..4355768
--- /dev/null
+++ "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/Configurator/\320\224\321\203\320\261\320\273\320\270/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\321\214\320\275\321\213\320\274UUID/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\321\214\320\275\321\213\320\274UUID.xml"
@@ -0,0 +1,15 @@
+
+
+
+
+ СправочникСОригинальнымUUID
+
+
+ ru
+ СправочникСОригинальнымUUID
+
+
+
+
+
+
diff --git "a/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/Configurator/\320\224\321\203\320\261\320\273\320\270/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\320\274UUID/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\320\274UUID.xml" "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/Configurator/\320\224\321\203\320\261\320\273\320\270/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\320\274UUID/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\320\274UUID.xml"
new file mode 100644
index 0000000..8122a42
--- /dev/null
+++ "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/Configurator/\320\224\321\203\320\261\320\273\320\270/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\320\274UUID/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\320\274UUID.xml"
@@ -0,0 +1,15 @@
+
+
+
+
+ СправочникСУникальнымUUID
+
+
+ ru
+ СправочникСУникальнымUUID
+
+
+
+
+
+
diff --git "a/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/EDT/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721.mdo" "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/EDT/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721.mdo"
new file mode 100644
index 0000000..02c84f7
--- /dev/null
+++ "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/EDT/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2721.mdo"
@@ -0,0 +1,9 @@
+
+
+ Справочник1
+
+ ru
+ Справочник1
+
+
+
diff --git "a/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/EDT/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722.mdo" "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/EDT/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722.mdo"
new file mode 100644
index 0000000..fa6290c
--- /dev/null
+++ "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/EDT/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\2722.mdo"
@@ -0,0 +1,9 @@
+
+
+ Справочник2
+
+ ru
+ Справочник2
+
+
+
diff --git "a/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/EDT/\320\224\321\203\320\261\320\273\320\270/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\224\321\203\320\261\320\273\320\265\320\274/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\224\321\203\320\261\320\273\320\265\320\274.mdo" "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/EDT/\320\224\321\203\320\261\320\273\320\270/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\224\321\203\320\261\320\273\320\265\320\274/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\224\321\203\320\261\320\273\320\265\320\274.mdo"
new file mode 100644
index 0000000..bc432ec
--- /dev/null
+++ "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/EDT/\320\224\321\203\320\261\320\273\320\270/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\224\321\203\320\261\320\273\320\265\320\274/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\224\321\203\320\261\320\273\320\265\320\274.mdo"
@@ -0,0 +1,9 @@
+
+
+ СправочникСДублем
+
+ ru
+ СправочникСДублем
+
+
+
diff --git "a/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/EDT/\320\224\321\203\320\261\320\273\320\270/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\321\214\320\275\321\213\320\274UUID/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\321\214\320\275\321\213\320\274UUID.mdo" "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/EDT/\320\224\321\203\320\261\320\273\320\270/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\321\214\320\275\321\213\320\274UUID/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\321\214\320\275\321\213\320\274UUID.mdo"
new file mode 100644
index 0000000..bc698ae
--- /dev/null
+++ "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/EDT/\320\224\321\203\320\261\320\273\320\270/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\321\214\320\275\321\213\320\274UUID/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\236\321\200\320\270\320\263\320\270\320\275\320\260\320\273\321\214\320\275\321\213\320\274UUID.mdo"
@@ -0,0 +1,9 @@
+
+
+ СправочникСОригинальнымUUID
+
+ ru
+ СправочникСОригинальнымUUID
+
+
+
diff --git "a/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/EDT/\320\224\321\203\320\261\320\273\320\270/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\320\274UUID/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\320\274UUID.mdo" "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/EDT/\320\224\321\203\320\261\320\273\320\270/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\320\274UUID/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\320\274UUID.mdo"
new file mode 100644
index 0000000..d4318a3
--- /dev/null
+++ "b/tests/fixtures/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\224\321\203\320\261\320\273\320\265\320\271\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\321\205\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200\320\276\320\262/EDT/\320\224\321\203\320\261\320\273\320\270/Catalogs/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\320\274UUID/\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\241\320\243\320\275\320\270\320\272\320\260\320\273\321\214\320\275\321\213\320\274UUID.mdo"
@@ -0,0 +1,9 @@
+
+
+ СправочникСУникальнымUUID
+
+ ru
+ СправочникСУникальнымUUID
+
+
+
diff --git "a/tests/\320\242\320\265\321\201\321\202\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\265\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270.os" "b/tests/\320\242\320\265\321\201\321\202\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\265\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270.os"
index 9198145..dd8cb2a 100644
--- "a/tests/\320\242\320\265\321\201\321\202\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\265\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270.os"
+++ "b/tests/\320\242\320\265\321\201\321\202\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\265\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270.os"
@@ -49,6 +49,10 @@
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСообщениеКоммитаОбрабатываютФайлыТолькоВУказанномКаталоге");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоВыполняютсяПринудительноУказанныеЛокальныеСценарии");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоВыполняютсяВсеЛокальныеСценарии");
+ ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейУникальныхИдентификаторовОбработаетКорректныеФайлы");
+ ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейУникальныхИдентификаторовВызываетИсключение");
+ ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейУникальныхИдентификаторовНеОбработаетНесуществующийФайл");
+ ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейУникальныхИдентификаторовНеОбработаетНеМетаданные");
Возврат ВсеТесты;
@@ -343,6 +347,123 @@
#КонецОбласти
+#Область ПроверкаДублейУникальныхИдентификаторов
+
+Процедура ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейУникальныхИдентификаторовОбработаетКорректныеФайлы() Экспорт
+
+ ОбъектСценария = ПолучитьСценарий("ПроверкаДублейУникальныхИдентификаторов.os");
+
+ ВременныйКаталог = ПолучитьИмяВременногоФайла();
+ Фикстура = Фикстура("ПроверкаДублейУникальныхИдентификаторов");
+ СоздатьКаталог(ВременныйКаталог);
+ СкопироватьКаталог(ОбъединитьПути(Фикстура, "Configurator"), ВременныйКаталог);
+
+ ДополнительныеНастройки = ПолучитьДополнительныеНастройки(ВременныйКаталог);
+ ПутьККаталогуКонфигурации = ОбъединитьПути(ВременныйКаталог, "Catalogs");
+
+ // Проверка файла с уникальным UUID (формат конфигуратора)
+ Файл = Новый Файл(ОбъединитьПути(ПутьККаталогуКонфигурации, "Справочник1", "Справочник1.xml"));
+ Результат = ОбъектСценария.ОбработатьФайл(Файл, ПутьККаталогуКонфигурации, ДополнительныеНастройки);
+ Ожидаем.Что(Результат, "Справочник1.xml должен быть обработан").ЭтоИстина();
+
+ // Проверка файла с уникальным UUID (формат конфигуратора)
+ Файл = Новый Файл(ОбъединитьПути(ПутьККаталогуКонфигурации, "Справочник2", "Справочник2.xml"));
+ Результат = ОбъектСценария.ОбработатьФайл(Файл, ПутьККаталогуКонфигурации, ДополнительныеНастройки);
+ Ожидаем.Что(Результат, "Справочник2.xml должен быть обработан").ЭтоИстина();
+
+ // Проверка файла с уникальным UUID (формат конфигуратора)
+ Файл = Новый Файл(ОбъединитьПути(ПутьККаталогуКонфигурации, "Справочник3", "Справочник3.xml"));
+ Результат = ОбъектСценария.ОбработатьФайл(Файл, ПутьККаталогуКонфигурации, ДополнительныеНастройки);
+ Ожидаем.Что(Результат, "Справочник3.xml должен быть обработан").ЭтоИстина();
+
+ МенеджерВременныхФайлов.УдалитьФайл(ВременныйКаталог);
+
+ // Проверка файла с уникальным UUID (формат EDT)
+ ВременныйКаталог = ПолучитьИмяВременногоФайла();
+ СоздатьКаталог(ВременныйКаталог);
+ СкопироватьКаталог(ОбъединитьПути(Фикстура, "EDT"), ВременныйКаталог);
+
+ ДополнительныеНастройки = ПолучитьДополнительныеНастройки(ВременныйКаталог);
+ ПутьККаталогуКонфигурации = ОбъединитьПути(ВременныйКаталог, "Catalogs");
+
+ // Проверка файла с уникальным UUID (формат EDT)
+ Файл = Новый Файл(ОбъединитьПути(ПутьККаталогуКонфигурации, "Справочник1", "Справочник1.mdo"));
+ Результат = ОбъектСценария.ОбработатьФайл(Файл, ПутьККаталогуКонфигурации, ДополнительныеНастройки);
+ Ожидаем.Что(Результат, "Справочник1.mdo должен быть обработан").ЭтоИстина();
+
+ // Проверка файла с уникальным UUID (формат EDT)
+ Файл = Новый Файл(ОбъединитьПути(ПутьККаталогуКонфигурации, "Справочник2", "Справочник2.mdo"));
+ Результат = ОбъектСценария.ОбработатьФайл(Файл, ПутьККаталогуКонфигурации, ДополнительныеНастройки);
+ Ожидаем.Что(Результат, "Справочник2.mdo должен быть обработан").ЭтоИстина();
+
+ МенеджерВременныхФайлов.УдалитьФайл(ВременныйКаталог);
+
+КонецПроцедуры
+
+Процедура ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейУникальныхИдентификаторовВызываетИсключение() Экспорт
+
+ ОбъектСценария = ПолучитьСценарий("ПроверкаДублейУникальныхИдентификаторов.os");
+
+ ВременныйКаталог = ПолучитьИмяВременногоФайла();
+ Фикстура = Фикстура("ПроверкаДублейУникальныхИдентификаторов");
+ СоздатьКаталог(ВременныйКаталог);
+ СкопироватьКаталог(ОбъединитьПути(Фикстура, "Configurator", "Дубли"), ВременныйКаталог);
+
+ ДополнительныеНастройки = ПолучитьДополнительныеНастройки(ВременныйКаталог);
+ ПутьККаталогуКонфигурации = ОбъединитьПути(ВременныйКаталог, "Catalogs");
+
+ // Проверка файла с дублем UUID (формат конфигуратора)
+ Файл = Новый Файл(ОбъединитьПути(ПутьККаталогуКонфигурации, "СправочникСДублем", "СправочникСДублем.xml"));
+ ПараметрыМетода = Новый Массив;
+ ПараметрыМетода.Добавить(Файл);
+ ПараметрыМетода.Добавить(ПутьККаталогуКонфигурации);
+ ПараметрыМетода.Добавить(ДополнительныеНастройки);
+ Ожидаем.Что(ОбъектСценария).Метод("ОбработатьФайл", ПараметрыМетода).ВыбрасываетИсключение("обнаружен uuid");
+
+ МенеджерВременныхФайлов.УдалитьФайл(ВременныйКаталог);
+
+ // Проверка файла с дублем UUID (формат EDT)
+ ВременныйКаталог = ПолучитьИмяВременногоФайла();
+ СоздатьКаталог(ВременныйКаталог);
+ СкопироватьКаталог(ОбъединитьПути(Фикстура, "EDT", "Дубли"), ВременныйКаталог);
+
+ ДополнительныеНастройки = ПолучитьДополнительныеНастройки(ВременныйКаталог);
+ ПутьККаталогуКонфигурации = ОбъединитьПути(ВременныйКаталог, "Catalogs");
+
+ // Проверка файла с дублем UUID (формат EDT)
+ Файл = Новый Файл(ОбъединитьПути(ПутьККаталогуКонфигурации, "СправочникСДублем", "СправочникСДублем.mdo"));
+ ПараметрыМетода = Новый Массив;
+ ПараметрыМетода.Добавить(Файл);
+ ПараметрыМетода.Добавить(ПутьККаталогуКонфигурации);
+ ПараметрыМетода.Добавить(ДополнительныеНастройки);
+ Ожидаем.Что(ОбъектСценария).Метод("ОбработатьФайл", ПараметрыМетода).ВыбрасываетИсключение("обнаружен uuid");
+
+ МенеджерВременныхФайлов.УдалитьФайл(ВременныйКаталог);
+
+КонецПроцедуры
+
+Процедура ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейУникальныхИдентификаторовНеОбработаетНесуществующийФайл() Экспорт
+
+ Файл = Новый Файл(ПолучитьИмяВременногоФайла("xml"));
+ ОбъектСценария = ПолучитьСценарий("ПроверкаДублейУникальныхИдентификаторов.os");
+ Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, ПолучитьДополнительныеНастройки());
+
+ Ожидаем.Что(Результат, Истина).ЭтоЛожь();
+
+КонецПроцедуры
+
+Процедура ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейУникальныхИдентификаторовНеОбработаетНеМетаданные() Экспорт
+
+ Файл = Новый Файл(МенеджерВременныхФайлов.СоздатьФайл("bsl"));
+ ОбъектСценария = ПолучитьСценарий("ПроверкаДублейУникальныхИдентификаторов.os");
+ Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, ПолучитьДополнительныеНастройки());
+
+ Ожидаем.Что(Результат, Истина).ЭтоЛожь();
+
+КонецПроцедуры
+
+#КонецОбласти
+
#Область СинхронизацияОбъектовМетаданныхИФайлов
Процедура ТестДолжен_ПроверитьЧтоСинхронизацияОбъектовМетаданныхВызываетИсключение() Экспорт