From 19a129d93fea76eda0e578c6838eeb752277d6de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=97=D0=B0=D0=B7=D1=83=D0=BB=D0=BE=D0=B2=20=D0=90=D0=BB?= =?UTF-8?q?=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=90=D0=BB=D0=B5=D0=BA=D1=81?= =?UTF-8?q?=D0=B0=D0=BD=D0=B4=D1=80=D0=BE=D0=B2=D0=B8=D1=87=20=28=D0=97?= =?UTF-8?q?=D0=9A-0001393=29?= Date: Wed, 17 Apr 2024 20:16:58 +0300 Subject: [PATCH 1/3] =?UTF-8?q?ORAIS-1430:=20=D0=9B=D0=BE=D0=B6=D0=BD?= =?UTF-8?q?=D0=BE=D0=B5=20=D1=81=D1=80=D0=B0=D0=B1=D0=B0=D1=82=D1=8B=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=B0=20=D0=B8=D0=BD=D1=81?= =?UTF-8?q?=D1=82=D1=80=D1=83=D0=BA=D1=86=D0=B8=D1=8E=20=D0=9F=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=B9=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...21\200\320\265\320\271\321\202\320\270.os" | 49 ++++++++++++----- .../v8config.json" | 52 +++++++++++++++++++ ...1\200\320\265\320\271\321\202\320\270.bsl" | 9 ++++ ...1\200\320\276\320\272\320\276\320\271.bsl" | 4 ++ ...\200\320\276\320\272\320\276\320\2712.bsl" | 8 +++ ...20\261\320\276\321\202\320\272\320\270.os" | 33 ++++++++++++ 6 files changed, 142 insertions(+), 13 deletions(-) create mode 100644 "tests/fixtures/\320\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270/v8config.json" create mode 100644 "tests/fixtures/\320\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270/\320\234\320\276\320\264\321\203\320\273\321\214\320\241\320\237\320\265\321\200\320\265\320\271\321\202\320\270.bsl" create mode 100644 "tests/fixtures/\320\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270/\320\234\320\276\320\264\321\203\320\273\321\214\320\241\320\276\320\241\321\202\321\200\320\276\320\272\320\276\320\271.bsl" create mode 100644 "tests/fixtures/\320\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270/\320\234\320\276\320\264\321\203\320\273\321\214\320\241\320\276\320\241\321\202\321\200\320\276\320\272\320\276\320\2712.bsl" 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\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270.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\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270.os" index 82802d6..b10e211 100644 --- "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\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270.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\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270.os" @@ -54,26 +54,49 @@ Процедура ПроверитьНаОтсутствиеПерейти(ПутьКФайлуМодуля) ТекстМодуля = ФайловыеОперации.ПрочитатьТекстФайла(ПутьКФайлуМодуля); - - ТекстОшибки = ""; - ШаблонПоиска = Новый РегулярноеВыражение("[\s;]+?[^|]Перейти\s+?~[a-zA-ZА-ЯЁа-яё0-9_]+"); - ШаблонПоиска.Многострочный = Истина; - ШаблонПоиска.ИгнорироватьРегистр = Истина; - Если НЕ ПустаяСтрока(ТекстМодуля) Тогда + + ТекстОшибки = ""; + ШаблонПоиска = Новый РегулярноеВыражение("[\s;]+?[^|](Перейти\s+?~[a-zA-ZА-ЯЁа-яё0-9_]+)"); + ШаблонПоиска.Многострочный = Истина; + ШаблонПоиска.ИгнорироватьРегистр = Истина; Совпадения = ШаблонПоиска.НайтиСовпадения(ТекстМодуля); - Если Совпадения.Количество() Тогда + Если Совпадения.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Совпадение = Совпадения[0]; + Если Совпадение.Группы.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + БлокПерейти = Совпадение.Группы[1].Значение; + ПозицияБлока = СтрНайти(Совпадение.Значение, БлокПерейти); - ТекстОшибки = СтрШаблон( - "В файле '%1' обнаружено использование Перейти (%2)", - ПутьКФайлуМодуля, - Совпадения.Количество()); - Лог.Ошибка(ТекстОшибки); - ВызватьИсключение ТекстОшибки; + КавычкиОткрыты = Ложь; + ПозицияКавычек = 0; + Пока ПозицияКавычек < ПозицияБлока Цикл + ПозицияКавычек = СтрНайти(Совпадение.Значение, """", НаправлениеПоиска.СНачала, ПозицияКавычек + 1); + Если ПозицияКавычек = 0 ИЛИ ПозицияКавычек > ПозицияБлока Тогда + Прервать; + КонецЕсли; + КавычкиОткрыты = НЕ КавычкиОткрыты; + КонецЦикла; + + Если КавычкиОткрыты Тогда + // Блок Перейти находится внутри строкового значения и не является выражением языка. + Возврат; КонецЕсли; + ТекстОшибки = СтрШаблон( + "В файле '%1' обнаружено использование Перейти (%2)", + ПутьКФайлуМодуля, + Совпадения.Количество()); + Лог.Ошибка(ТекстОшибки); + ВызватьИсключение ТекстОшибки; + КонецЕсли; КонецПроцедуры diff --git "a/tests/fixtures/\320\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270/v8config.json" "b/tests/fixtures/\320\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270/v8config.json" new file mode 100644 index 0000000..d370a14 --- /dev/null +++ "b/tests/fixtures/\320\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270/v8config.json" @@ -0,0 +1,52 @@ +{ + "Precommt4onecСценарии": { + "ИспользоватьСценарииРепозитория": false, + "КаталогЛокальныхСценариев": "", + "ГлобальныеСценарии": [ + "ВставкаКопирайтов.os", + "ДобавлениеПробеловПередКлючевымиСловами.os", + "ЗапретИспользованияПерейти.os", + "ИсправлениеНеКаноническогоНаписания.os", + "КорректировкаXMLФорм.os", + "ОбработкаЮнитТестов.os", + "ОтключениеПолнотекстовогоПоиска.os", + "ОтключениеРазрешенияИзменятьФорму.os", + "ПроверкаДублейПроцедурИФункций.os", + "ПроверкаКорректностиИнструкцийПрепроцессора.os", + "ПроверкаКорректностиОбластей.os", + "ПроверкаНецензурныхСлов.os", + "РазборОбычныхФормНаИсходники.os", + "РазборОтчетовОбработокРасширений.os", + "СинхронизацияОбъектовМетаданныхИФайлов.os", + "СортировкаСостава.os", + "УдалениеДублейМетаданных.os", + "УдалениеЛишнихКонцевыхПробелов.os", + "УдалениеЛишнихПустыхСтрок.os" + ], + "ОтключенныеСценарии": [], + "Проекты": { + "configurator\\": "configurator\\", + "EDT\\Configuration\\src\\": "EDT\\Configuration\\src\\", + "no_parent_configuration\\": "no_parent_configuration\\" + }, + "НастройкиСценариев": { + "ВставкаКопирайтов": { + "ИгнорироватьМодулиОбъектовПоставки": true, + "ПутьКФайлуКопирайта": "COPYRIGHT", + "ИсключаемыеТэги": [ + "// IMPORT" + ] + }, + "ОтключениеПолнотекстовогоПоиска": { + "МетаданныеДляИсключения": {} + }, + "ПроверкаНецензурныхСлов": { + "ФайлСНецензурнымиСловами": "НецензурныеСлова.txt" + }, + "РазборОтчетовОбработокРасширений": { + "ИспользоватьНастройкиПоУмолчанию": true, + "ВерсияПлатформы": "" + } + } + } +} \ No newline at end of file diff --git "a/tests/fixtures/\320\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270/\320\234\320\276\320\264\321\203\320\273\321\214\320\241\320\237\320\265\321\200\320\265\320\271\321\202\320\270.bsl" "b/tests/fixtures/\320\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270/\320\234\320\276\320\264\321\203\320\273\321\214\320\241\320\237\320\265\321\200\320\265\320\271\321\202\320\270.bsl" new file mode 100644 index 0000000..6ddd15e --- /dev/null +++ "b/tests/fixtures/\320\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270/\320\234\320\276\320\264\321\203\320\273\321\214\320\241\320\237\320\265\321\200\320\265\320\271\321\202\320\270.bsl" @@ -0,0 +1,9 @@ + +Процедура ПропуститьБлокВнутриКонструкцииПерейти() + Значение = Неопределено; + Перейти ~Метка; + + Значение = "Не будет установлено"; +~Метка: + Сообщить(Значение); +КонецПроцедуры diff --git "a/tests/fixtures/\320\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270/\320\234\320\276\320\264\321\203\320\273\321\214\320\241\320\276\320\241\321\202\321\200\320\276\320\272\320\276\320\271.bsl" "b/tests/fixtures/\320\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270/\320\234\320\276\320\264\321\203\320\273\321\214\320\241\320\276\320\241\321\202\321\200\320\276\320\272\320\276\320\271.bsl" new file mode 100644 index 0000000..7b531c8 --- /dev/null +++ "b/tests/fixtures/\320\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270/\320\234\320\276\320\264\321\203\320\273\321\214\320\241\320\276\320\241\321\202\321\200\320\276\320\272\320\276\320\271.bsl" @@ -0,0 +1,4 @@ + +Функция РекомендацияПоИспользованию() + Возврат СтрШаблон("Мы не рекомендуем использовать: %1", "Перейти ~Метка"); +КонецФункции diff --git "a/tests/fixtures/\320\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270/\320\234\320\276\320\264\321\203\320\273\321\214\320\241\320\276\320\241\321\202\321\200\320\276\320\272\320\276\320\2712.bsl" "b/tests/fixtures/\320\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270/\320\234\320\276\320\264\321\203\320\273\321\214\320\241\320\276\320\241\321\202\321\200\320\276\320\272\320\276\320\2712.bsl" new file mode 100644 index 0000000..5f25724 --- /dev/null +++ "b/tests/fixtures/\320\227\320\260\320\277\321\200\320\265\321\202\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\271\321\202\320\270/\320\234\320\276\320\264\321\203\320\273\321\214\320\241\320\276\320\241\321\202\321\200\320\276\320\272\320\276\320\2712.bsl" @@ -0,0 +1,8 @@ + +Функция ПримерПлохогоКода() + Возврат "Значение = Неопределено; + | Перейти ~Метка; + | Значение = Ложь; + |~Метка: + | Значение = Истина"; +КонецФункции 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 94c20d2..2fa5818 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" @@ -38,6 +38,7 @@ ВсеТесты.Добавить("ТестДолжен_ПроверитьЗагрузкуСценариевПоИмени"); ВсеТесты.Добавить("ТестДолжен_ПроверитьИзменениеТегаКастомизацииФормы"); ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийВставкиКопирайтовНеОбновляетКопирайтВФайлахПоставки"); + ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийЗапретаИспользованияПерейтиНеСрабатываетНаСтроку"); Возврат ВсеТесты; @@ -552,6 +553,38 @@ #КонецОбласти +#Область ЗапретИспользованияПерейти + +Процедура ТестДолжен_ПроверитьЧтоСценарийЗапретаИспользованияПерейтиНеСрабатываетНаСтроку() Экспорт + НачалоЗамера = ТекущаяУниверсальнаяДатаВМиллисекундах(); + + ОбъектСценария = ПолучитьСценарий("ЗапретИспользованияПерейти.os"); + + ВременныйКаталог = ПолучитьИмяВременногоФайла(); + Фикстура = Фикстура("ЗапретИспользованияПерейти"); + СоздатьКаталог(ВременныйКаталог); + СкопироватьКаталог(Фикстура, ВременныйКаталог); + + Настройки = ПолучитьДополнительныеНастройки(ВременныйКаталог); + МассивФайлов = НайтиФайлы(ВременныйКаталог, "*.bsl", Истина); + Для Каждого Файл Из МассивФайлов Цикл + ОжидаемыйРезультат = СтрНайти(Файл.Имя, "Перейти") = 0; + Попытка + Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, Настройки); + Исключение + Результат = Ложь; + КонецПопытки; + Ожидаем.Что(Результат, "Ошибка проверки запрета использования Перейти в файле " + Файл.Имя).Равно(ОжидаемыйРезультат); + КонецЦикла; + + МенеджерВременныхФайлов.УдалитьФайл(ВременныйКаталог); + + ВремяВыполнения = ТекущаяУниверсальнаяДатаВМиллисекундах() - НачалоЗамера; + Настройки.Лог.Отладка("Тестирование запрета использования Перейти выполнено за %1 мс.", ВремяВыполнения); +КонецПроцедуры + +#КонецОбласти + #КонецОбласти #Область Служебные From cbc20e6b975ae718d4485aa0a2f99b35073b5f45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=97=D0=B0=D0=B7=D1=83=D0=BB=D0=BE=D0=B2=20=D0=90=D0=BB?= =?UTF-8?q?=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=90=D0=BB=D0=B5=D0=BA=D1=81?= =?UTF-8?q?=D0=B0=D0=BD=D0=B4=D1=80=D0=BE=D0=B2=D0=B8=D1=87=20=28=D0=97?= =?UTF-8?q?=D0=9A-0001393=29?= Date: Wed, 22 May 2024 17:32:21 +0300 Subject: [PATCH 2/3] =?UTF-8?q?ORAIS-1489:=20=D0=98=D0=B7=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B8=D0=BD=D0=B4=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D0=BE=D0=B2=20=D0=B2=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0?= =?UTF-8?q?=D1=85=20=D1=80=D0=B0=D1=81=D1=88=D0=B8=D1=80=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\244\320\276\321\200\320\274\321\213.os" | 381 ++++++++++++++++++ ...20\244\320\276\321\200\320\274\321\213.os" | 263 ++++++++++++ ...20\260\320\271\320\273\320\276\320\262.os" | 24 +- ...260XML\320\244\320\276\321\200\320\274.os" | 128 +----- .../v8config.json" | 48 +++ .../\320\224\320\276/Configurator/1/Form.xml" | 54 +++ .../\320\224\320\276/Configurator/2/Form.xml" | 111 +++++ .../\320\224\320\276/Configurator/3/Form.xml" | 59 +++ .../\320\224\320\276/Configurator/4/Form.xml" | 121 ++++++ .../\320\224\320\276/Configurator/5/Form.xml" | 197 +++++++++ .../\320\224\320\276/EDT/1/Form.form" | 110 +++++ .../EDT/2/BaseForm/Form.form" | 110 +++++ .../\320\224\320\276/EDT/2/Form.form" | 110 +++++ .../\320\224\320\276/EDT/3/Form.form" | 110 +++++ .../EDT/4/BaseForm/Form.form" | 110 +++++ .../\320\224\320\276/EDT/4/Form.form" | 110 +++++ .../EDT/5/BaseForm/Form.form" | 110 +++++ .../\320\224\320\276/EDT/5/Form.form" | 249 ++++++++++++ .../Configurator/1/Form.xml" | 54 +++ .../Configurator/2/Form.xml" | 111 +++++ .../Configurator/3/Form.xml" | 59 +++ .../Configurator/4/Form.xml" | 121 ++++++ .../Configurator/5/Form.xml" | 197 +++++++++ .../EDT/1/Form.form" | 110 +++++ .../EDT/2/BaseForm/Form.form" | 110 +++++ .../EDT/2/Form.form" | 110 +++++ .../EDT/3/Form.form" | 110 +++++ .../EDT/4/BaseForm/Form.form" | 110 +++++ .../EDT/4/Form.form" | 110 +++++ .../EDT/5/BaseForm/Form.form" | 110 +++++ .../EDT/5/Form.form" | 249 ++++++++++++ ...20\261\320\276\321\202\320\272\320\270.os" | 42 ++ 32 files changed, 3900 insertions(+), 108 deletions(-) create mode 100644 "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\260\320\275\320\275\321\213\320\265\320\244\320\276\321\200\320\274\321\213.os" create mode 100644 "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\247\321\202\320\265\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205\320\244\320\276\321\200\320\274\321\213.os" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/v8config.json" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/1/Form.xml" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/2/Form.xml" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/3/Form.xml" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/4/Form.xml" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/5/Form.xml" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/1/Form.form" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/2/BaseForm/Form.form" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/2/Form.form" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/3/Form.form" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/4/BaseForm/Form.form" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/4/Form.form" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/5/BaseForm/Form.form" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/5/Form.form" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/1/Form.xml" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/2/Form.xml" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/3/Form.xml" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/4/Form.xml" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/5/Form.xml" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/1/Form.form" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/2/BaseForm/Form.form" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/2/Form.form" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/3/Form.form" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/4/BaseForm/Form.form" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/4/Form.form" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/5/BaseForm/Form.form" create mode 100644 "tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/5/Form.form" diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\260\320\275\320\275\321\213\320\265\320\244\320\276\321\200\320\274\321\213.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\260\320\275\320\275\321\213\320\265\320\244\320\276\321\200\320\274\321\213.os" new file mode 100644 index 0000000..904a388 --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\260\320\275\320\275\321\213\320\265\320\244\320\276\321\200\320\274\321\213.os" @@ -0,0 +1,381 @@ +////////////////////////////////////////////////////////////////////////////////// +// +// Класс предназначен для чтения данных из файлов форм объектов и их последующей +// обработки. +// +// (с) BIA Technologies, LLC +// +////////////////////////////////////////////////////////////////////////////////// + +// BSLLS:LineLength-off + +#Область ОписаниеПеременных + +Перем ДанныеФормы; // Массив строк файла формы +Перем ДанныеБазовойФормы; // Массив строк файла формы +Перем ФорматEDT; // Булево, определяющее формат данных формы +Перем ЭлементыФормы; // +Перем ЭлементыБазовойФормы; // +Перем ТаблицаДублей; // +Перем СвободныеИдентификаторы; // +Перем ПоследнийИдентификатор; // + +Перем ФормаИзменена; // Флаг, отражающий наличие внесенных в форму изменений + +#КонецОбласти + +#Область Конструктор + +// Инициализация объекта. +// +// Параметры: +// Файл - Файл - объект файла формы, данные которой нужно прочитать. +// +Процедура ПриСозданииОбъекта(Файл) + Если НЕ ЗначениеЗаполнено(Файл) Тогда + ВызватьИсключение "В конструктор объекта не передан файл формы"; + КонецЕсли; + + Если НЕ Файл.Существует() Тогда + ВызватьИсключение СтрШаблон("Не найден файл: %1", Файл.ПолноеИмя); + КонецЕсли; + + ФорматEDT = ТипыФайлов.ЭтоФайлОписанияФормыEDT(Файл); + Если НЕ ФорматEDT И НЕ ТипыФайлов.ЭтоФайлОписанияФормыКонфигуратора(Файл) Тогда + ВызватьИсключение СтрШаблон("Файл '%1' не является файлом формы.", Файл.ПолноеИмя); + КонецЕсли; + + ДанныеФормы = Новый Массив; + ДанныеБазовойФормы = Новый Массив; + ФормаИзменена = Ложь; + + Если ФорматEDT Тогда + ПрочитатьДанныеФормыВФорматеEDT(Файл); + Иначе + ПрочитатьДанныеФормыВФорматеКонфигуратора(Файл); + КонецЕсли; + + ЭлементыБазовойФормы = ТаблицаЭлементовФормы(ДанныеБазовойФормы); + Если НЕ ФорматEDT Тогда + СкорректироватьПутьКЭлементам(ЭлементыБазовойФормы); + КонецЕсли; + ЭлементыФормы = ТаблицаЭлементовФормы(ДанныеФормы); +КонецПроцедуры + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +// Позволяет определить, является ли обрабатываемая форма формой расширения. +// +// Возвращаемое значение: +// Булево - признак, является является ли обрабатываемая форма формой расширения, проверка происходит +// по наличию данных базовой формы. +// +Функция ЭтоФормаРасширения() Экспорт + Возврат ДанныеБазовойФормы <> Неопределено И ДанныеБазовойФормы.Количество() > 0; +КонецФункции + +// Проверяет, существуют ли дубли среди идентификаторов объектов формы. +// +// Возвращаемое значение: +// Булево - признак наличия дублей. +// +Функция ЕстьДублиИдентификаторов() Экспорт + Возврат ТаблицаДублей().Количество() > 0 И ТаблицаДублей(0).Количество > 1; +КонецФункции + +// Определяет, были ли внесены изменения в текст формы. +// +// Возвращаемое значение: +// Булево - признак наличия изменений в тексте формы. +// +Функция ФормаИзменена() Экспорт + Возврат ФормаИзменена; +КонецФункции + +// При наличии у формы базовой формы, заменяет идентификаторы всех заимствованных объектов на идентификаторы +// базовой формы. Поиск заимствованных объектов выполняется по полному пути и имени объекта. +// +Процедура ВосстановитьСвязьЭлементовСБазовойФормой() Экспорт + Для Каждого СтрокаЭлемента Из ЭлементыБазовойФормы Цикл + НайденныеСтроки = ЭлементыФормы.НайтиСтроки(Новый Структура("Путь, Элемент", СтрокаЭлемента.Путь, СтрокаЭлемента.Элемент)); + Если НайденныеСтроки.Количество() > 1 Тогда + ВызватьИсключение СтрШаблон("На форме найдено более одного экземпляра реквизита: %1", СтрокаЭлемента.Путь); + ИначеЕсли НайденныеСтроки.Количество() = 0 Тогда + Продолжить; + Иначе + НайденнаяСтрока = НайденныеСтроки[0]; + ФормаИзменена = ФормаИзменена ИЛИ (НайденнаяСтрока.НовыйИдентификатор <> СтрокаЭлемента.Идентификатор); + + НайденнаяСтрока.НовыйИдентификатор = СтрокаЭлемента.Идентификатор; + НайденнаяСтрока.Заимствован = Истина; + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +// Для каждого найденного в форме дубля идентификатора выполняет его замену на свободный идентификатор. +// +Процедура ЗаменитьДублиИдентификаторов() Экспорт + Для Каждого СтрокаДубля Из ТаблицаДублей() Цикл + Если СтрокаДубля.Количество = 1 Тогда + Прервать; + КонецЕсли; + + НайденныеСтроки = ЭлементыФормы.НайтиСтроки(Новый Структура("НовыйИдентификатор", СтрокаДубля.НовыйИдентификатор)); + ЕстьЗаимствованныйЭлемент = Ложь; + Для Каждого СтрокаТЧ Из НайденныеСтроки Цикл + Если НЕ СтрокаТЧ.Заимствован Тогда + Продолжить; + КонецЕсли; + + ЕстьЗаимствованныйЭлемент = Истина; + Прервать; + КонецЦикла; + + Если ЕстьЗаимствованныйЭлемент Тогда + Для Каждого СтрокаТЧ Из НайденныеСтроки Цикл + Если СтрокаТЧ.Заимствован Тогда + Продолжить; + КонецЕсли; + + СтрокаТЧ.НовыйИдентификатор = СвободныйИдентификатор(); + ФормаИзменена = Истина; + КонецЦикла; + Иначе + Для Индекс = 0 По НайденныеСтроки.ВГраница() - 1 Цикл + СтрокаТЧ = НайденныеСтроки[Индекс]; + СтрокаТЧ.НовыйИдентификатор = СвободныйИдентификатор(); + ФормаИзменена = Истина; + КонецЦикла; + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +// Выполняет запись данных формы в файл. +// +// Параметры: +// Файл - Файл - объект файла, содержащий полное имя файла, в который должна быть произведена запись. +// +Процедура Записать(Файл) Экспорт + Кодировка = ФайловыеОперации.ОпределитьКодировку(Файл.ПолноеИмя); + ЗаписьТекста = Новый ЗаписьТекста(Файл.ПолноеИмя, Кодировка); + + Для Каждого СтрокаТЧ Из ЭлементыФормы Цикл + Если СтрокаТЧ.Идентификатор = СтрокаТЧ.НовыйИдентификатор Тогда + Продолжить; + КонецЕсли; + + Шаблон = ?(ФорматEDT, "%1", "id=""%1"""); + ИсходнаяСтрока = СтрШаблон(Шаблон, СтрокаТЧ.Идентификатор); + СтрокаЗамены = СтрШаблон(Шаблон, СтрокаТЧ.НовыйИдентификатор); + + ДанныеФормы[СтрокаТЧ.НомерСтроки] = СтрЗаменить(ДанныеФормы[СтрокаТЧ.НомерСтроки], ИсходнаяСтрока, СтрокаЗамены); + КонецЦикла; + + ШаблонЗаменыБазовойФормы = ШаблонЗаменыБазовойФормы(); + Для Каждого СтрокаФормы Из ДанныеФормы Цикл + Если НЕ ФорматEDT И СтрНайти(СтрокаФормы, ШаблонЗаменыБазовойФормы) > 0 Тогда + Для Каждого СтрокаБазовойФормы Из ДанныеБазовойФормы Цикл + ЗаписьТекста.ЗаписатьСтроку(СтрокаБазовойФормы); + КонецЦикла; + Иначе + ЗаписьТекста.ЗаписатьСтроку(СтрокаФормы); + КонецЕсли; + КонецЦикла; + + ЗаписьТекста.Закрыть(); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ПрочитатьДанныеФормыВФорматеКонфигуратора(Файл) + Кодировка = ФайловыеОперации.ОпределитьКодировку(Файл.ПолноеИмя); + ЧтениеТекста = Новый ЧтениеТекста(Файл.ПолноеИмя, Кодировка); + + ЧтениеБлокаБазовойФормы = Ложь; + ИмяБлокаБазовойФормы = ИмяБлокаБазовойФормы(); + Стр = ЧтениеТекста.ПрочитатьСтроку(); + Пока Стр <> Неопределено Цикл + Если СтрНайти(Стр, ИмяБлокаБазовойФормы) > 0 Тогда + Если ЧтениеБлокаБазовойФормы Тогда + // Завершение чтения блока + ЧтениеБлокаБазовойФормы = Ложь; + ДанныеФормы.Добавить(ШаблонЗаменыБазовойФормы()); + Иначе + // Начало чтения блока + ЧтениеБлокаБазовойФормы = Истина; + КонецЕсли; + КонецЕсли; + + Если ЧтениеБлокаБазовойФормы Тогда + ДанныеБазовойФормы.Добавить(Стр); + Иначе + ДанныеФормы.Добавить(Стр); + КонецЕсли; + + Стр = ЧтениеТекста.ПрочитатьСтроку(); + КонецЦикла; + + ЧтениеТекста.Закрыть(); +КонецПроцедуры + +Процедура ПрочитатьДанныеФормыВФорматеEDT(Файл) + БазоваяФорма = Новый Файл(ОбъединитьПути(Файл.Путь, ТипыФайлов.ПутьКФайлуБазовойФормы())); + Если БазоваяФорма.Существует() Тогда + ДанныеБазовойФормы = СтрокиФайлаВФорматеEDT(БазоваяФорма); + КонецЕсли; + + ДанныеФормы = СтрокиФайлаВФорматеEDT(Файл); +КонецПроцедуры + +Функция СтрокиФайлаВФорматеEDT(Файл) + Кодировка = ФайловыеОперации.ОпределитьКодировку(Файл.ПолноеИмя); + ЧтениеТекста = Новый ЧтениеТекста(Файл.ПолноеИмя, Кодировка); + СодержимоеФайла = Новый Массив; + + Стр = ЧтениеТекста.ПрочитатьСтроку(); + Пока Стр <> Неопределено Цикл + СодержимоеФайла.Добавить(Стр); + Стр = ЧтениеТекста.ПрочитатьСтроку(); + КонецЦикла; + + ЧтениеТекста.Закрыть(); + + Возврат СодержимоеФайла; +КонецФункции + +Функция ТаблицаЭлементовФормы(МассивСтрок) + ТаблицаЭлементов = НоваяТаблицаЭлементов(); + Если МассивСтрок.Количество() = 0 Тогда + Возврат ТаблицаЭлементов; + КонецЕсли; + + ЧтениеДанных = Новый ЧтениеДанныхФормы(МассивСтрок); + Если ФорматEDT Тогда + ИмяЭлемента = ""; + Пока ЧтениеДанных.Прочитать() Цикл + Если ЧтениеДанных.Имя = "name" Тогда + ИмяЭлемента = ЧтениеДанных.Значение; + КонецЕсли; + Если ЧтениеДанных.Имя = "id" И ИмяЭлемента <> "" Тогда + Идентификатор = Число(ЧтениеДанных.Значение); + ДобавитьЭлемент(ТаблицаЭлементов, ЧтениеДанных.Путь(), ИмяЭлемента, Идентификатор, ЧтениеДанных.НомерСтроки()); + КонецЕсли; + КонецЦикла; + Иначе + Пока ЧтениеДанных.Прочитать() Цикл + Идентификатор = ЧтениеДанных.ИдентификаторЭлемента(); + ИмяЭлемента = ЧтениеДанных.ИмяЭлемента(); + Если Идентификатор <> Неопределено И ИмяЭлемента <> Неопределено Тогда + Идентификатор = Число(Идентификатор); + ДобавитьЭлемент(ТаблицаЭлементов, ЧтениеДанных.Путь(), ИмяЭлемента, Идентификатор, ЧтениеДанных.НомерСтроки()); + КонецЕсли; + КонецЦикла; + КонецЕсли; + + ТаблицаЭлементов.Индексы.Добавить("Путь, Элемент"); + ТаблицаЭлементов.Индексы.Добавить("НовыйИдентификатор"); + + Возврат ТаблицаЭлементов; +КонецФункции + +Функция НоваяТаблицаЭлементов() + ТаблицаЭлементов = Новый ТаблицаЗначений; + ТаблицаЭлементов.Колонки.Добавить("Путь"); + ТаблицаЭлементов.Колонки.Добавить("Элемент"); + ТаблицаЭлементов.Колонки.Добавить("Идентификатор"); + ТаблицаЭлементов.Колонки.Добавить("НовыйИдентификатор"); + ТаблицаЭлементов.Колонки.Добавить("НомерСтроки"); + ТаблицаЭлементов.Колонки.Добавить("Количество"); + ТаблицаЭлементов.Колонки.Добавить("Заимствован"); + + Возврат ТаблицаЭлементов; +КонецФункции + +Процедура ДобавитьЭлемент(ТаблицаЭлементов, Путь, Элемент, Идентификатор, НомерСтроки) + Если НЕ ЗначениеЗаполнено(Элемент) ИЛИ НомерСтроки < 0 Тогда + Возврат; + КонецЕсли; + + НоваяСтрока = ТаблицаЭлементов.Добавить(); + НоваяСтрока.Путь = Путь; + НоваяСтрока.Элемент = Элемент; + НоваяСтрока.Идентификатор = Идентификатор; + НоваяСтрока.НовыйИдентификатор = Идентификатор; + НоваяСтрока.НомерСтроки = НомерСтроки; + НоваяСтрока.Количество = 1; + НоваяСтрока.Заимствован = Ложь; +КонецПроцедуры + +Процедура ЗаполнитьСвободныеИдентификаторы(ТаблицаИдентификаторов) + ПоследнийИдентификатор = ТаблицаИдентификаторов[ТаблицаИдентификаторов.Количество() - 1].НовыйИдентификатор; + СвободныеИдентификаторы = Новый Массив; + + ПредыдущийИдентификатор = 0; + ВсегоИдентификаторов = ТаблицаИдентификаторов.Итог("Количество"); + Для Каждого СтрокаТЧ Из ТаблицаИдентификаторов Цикл + ТекущийИдентификатор = Число(СтрокаТЧ.НовыйИдентификатор); + Если ТекущийИдентификатор < ПредыдущийИдентификатор Тогда + Продолжить; + КонецЕсли; + + Для Идентификатор = ПредыдущийИдентификатор + 1 По ТекущийИдентификатор - 1 Цикл + СвободныеИдентификаторы.Добавить(Идентификатор); + Если СвободныеИдентификаторы.Количество() >= ВсегоИдентификаторов Тогда + Возврат; + КонецЕсли; + КонецЦикла; + ПредыдущийИдентификатор = ТекущийИдентификатор; + КонецЦикла; +КонецПроцедуры + +Процедура СкорректироватьПутьКЭлементам(ТаблицаЭлементов) + ИмяБлокаБазовойФормы = ИмяБлокаБазовойФормы(); + Для Каждого СтрокаТЧ Из ТаблицаЭлементов Цикл + СтрокаТЧ.Путь = СтрЗаменить(СтрокаТЧ.Путь, ИмяБлокаБазовойФормы, "Form"); + КонецЦикла; +КонецПроцедуры + +Процедура ЗаполнитьТаблицуДублей() + ТаблицаДублей = ЭлементыФормы.Скопировать(); + + ТаблицаДублей.Сортировать("НовыйИдентификатор"); + ЗаполнитьСвободныеИдентификаторы(ТаблицаДублей); + + ТаблицаДублей.Свернуть("НовыйИдентификатор", "Количество"); + ТаблицаДублей.Сортировать("Количество УБЫВ"); +КонецПроцедуры + +Функция ТаблицаДублей(НомерСтроки = Неопределено) + Если ТаблицаДублей = Неопределено Тогда + ЗаполнитьТаблицуДублей(); + КонецЕсли; + + ПолучитьТолькоСтроку = (ТипЗнч(НомерСтроки) = Тип("Число") И НомерСтроки >= 0 И НомерСтроки <= ТаблицаДублей.Количество() - 1); + + Возврат ?(ПолучитьТолькоСтроку, ТаблицаДублей[НомерСтроки], ТаблицаДублей); +КонецФункции + +Функция СвободныйИдентификатор() + Если СвободныеИдентификаторы.Количество() > 0 Тогда + СвободныйИдентификатор = СвободныеИдентификаторы[0]; + СвободныеИдентификаторы.Удалить(0); + Возврат СвободныйИдентификатор; + Иначе + ПоследнийИдентификатор = ПоследнийИдентификатор + 1; + Возврат ПоследнийИдентификатор; + КонецЕсли; +КонецФункции + +Функция ШаблонЗаменыБазовойФормы() + Возврат ""; +КонецФункции + +Функция ИмяБлокаБазовойФормы() + Возврат "BaseForm"; +КонецФункции + +#КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\247\321\202\320\265\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205\320\244\320\276\321\200\320\274\321\213.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\247\321\202\320\265\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205\320\244\320\276\321\200\320\274\321\213.os" new file mode 100644 index 0000000..119a8d1 --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\247\321\202\320\265\320\275\320\270\320\265\320\224\320\260\320\275\320\275\321\213\321\205\320\244\320\276\321\200\320\274\321\213.os" @@ -0,0 +1,263 @@ +////////////////////////////////////////////////////////////////////////////////// +// +// Класс предназначен для получения данных элементов и реквизитов формы из +// текста файла формы +// +// (с) BIA Technologies, LLC +// +////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +Перем МассивСтрок; +Перем Курсор; +Перем ТипЭлемента; +Перем Элементы; +Перем СтрокаАтрибутов; +Перем Атрибуты; + +Перем ВыражениеНачалоЭлемента; +Перем ВыражениеКонецЭлемента; +Перем ВыражениеСтрокаЭлемента; +Перем ВыражениеСтрокаСоЗначением; +Перем ВыражениеЗначенияАтрибутов; + +Перем Имя Экспорт; +Перем Значение Экспорт; + +#КонецОбласти + +#Область Конструктор + +// Инициализация объекта. +// +// Параметры: +// ДанныеФормы - Массив из Строка - массив строк, прочитанных из файла формы. +// +Процедура ПриСозданииОбъекта(ДанныеФормы) + Если ТипЗнч(ДанныеФормы) <> Тип("Массив") Тогда + ВызватьИсключение "Переданный параметр не является массивом"; + КонецЕсли; + + МассивСтрок = ДанныеФормы; + Элементы = Новый Массив; + + ВыражениеНачалоЭлемента = РегулярныеВыражения.Создать("<([\w:]+)([\w :=""\/.-]*?)>"); + ВыражениеКонецЭлемента = РегулярныеВыражения.Создать(""); + ВыражениеСтрокаЭлемента = РегулярныеВыражения.Создать("<([\w:]+)([\w :=""\/.-]*?)/>"); + ВыражениеСтрокаСоЗначением = РегулярныеВыражения.Создать("<([\w:]+)([\w :=""\/.-]*?)>(.*)"); + ВыражениеЗначенияАтрибутов = РегулярныеВыражения.Создать("([\w:]+)=""([\w:\/.-]+)"""); + + Сбросить(); +КонецПроцедуры + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +// Метод последовательного чтения и анализа данных строк формы. При каждом вызове курсор сдвигается на следующую строку. +// +// Возвращаемое значение: +// Булево - Истина в случае, если строка была успешно разобрана, Ложь, если были обработаны все строки. +// +Функция Прочитать() Экспорт + Курсор = Курсор + 1; + Если Курсор < 0 ИЛИ Курсор > МассивСтрок.ВГраница() Тогда + ОчиститьЗначенияПеременных(); + Возврат Ложь; + КонецЕсли; + + РазобратьТекущуюСтроку(); + Возврат Истина; +КонецФункции + +// Сбрасывает значение курсора на начало файла, позволяя обойти все строки заново. +// +Процедура Сбросить() Экспорт + Курсор = -1; + ОчиститьЗначенияПеременных(); +КонецПроцедуры + +// Возвращает иерархию элементов формы, являющихся владельцами текущей обрабатываемой строки. +// +// Возвращаемое значение: +// Строка - строка иерархии элементов формы, разделенных точкой. +// +Функция Путь() Экспорт + Возврат СтрСоединить(Элементы, "."); +КонецФункции + +// Возвращает номер текущей обрабатываемой строки. +// +// Возвращаемое значение: +// Число, Неопределено - Если обработка файла не началась, возвращает Неопределено, иначе - номер обрабатываемой строки. +// +Функция НомерСтроки() Экспорт + Возврат ?(Курсор < 0, -1, Курсор); +КонецФункции + +// Возвращает значение идентификатора текущего элемента. Для формата конфигуратора он хранится в атрибутах тэга, для +// формата EDT - это отдельный тэг. +// +// Возвращаемое значение: +// Строка, Неопределено - идентификатор элемента или Неопределено, если у элемента идентификатора нет. +// +Функция ИдентификаторЭлемента() Экспорт + Возврат ?(Имя = "id", Значение, ЗначениеАтрибута("id")); +КонецФункции + +// Возвращает значение имени текущего элемента. Для формата конфигуратора оно хранится в атрибутах тэга, для +// формата EDT - это отдельный тэг. +// +// Возвращаемое значение: +// Строка, Неопределено - имя элемента или Неопределено, если у элемента нет имени. +// +Функция ИмяЭлемента() Экспорт + Возврат ?(Имя = "name", Значение, ЗначениеАтрибута("name")); +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура РазобратьТекущуюСтроку() + ОчиститьЗначенияПеременных(); + ТекущаяСтрока = МассивСтрок[Курсор]; + + Совпадения = ВыражениеСтрокаСоЗначением.НайтиСовпадения(ТекущаяСтрока); + Если Совпадения.Количество() > 0 Тогда + Совпадение = Совпадения[0]; + НачалоТэга = Совпадение.Группы[1].Значение; + СтрокаАтрибутов = Совпадение.Группы[2].Значение; + Атрибуты = ЗначенияАтрибутов(); + ТекстЭлемента = Совпадение.Группы[3].Значение; + КонецТэга = Совпадение.Группы[4].Значение; + + Если НачалоТэга <> КонецТэга Тогда + ВызватьИсключение СтрШаблон("Неизвестный формат строки: %1", Совпадение.Группы[0].Значение); + КонецЕсли; + + Имя = НачалоТэга; + Значение = ТекстЭлемента; + ТипЭлемента = ТипСтрокаЭлемента(); + + ОбновитьИмяЭлемента(); + + Возврат; + КонецЕсли; + + Совпадения = ВыражениеСтрокаЭлемента.НайтиСовпадения(ТекущаяСтрока); + Если Совпадения.Количество() > 0 Тогда + Совпадение = Совпадения[0]; + Имя = Совпадение.Группы[1].Значение; + СтрокаАтрибутов = Совпадение.Группы[2].Значение; + Атрибуты = ЗначенияАтрибутов(); + ТипЭлемента = ТипСтрокаЭлемента(); + + Возврат; + КонецЕсли; + + Совпадения = ВыражениеКонецЭлемента.НайтиСовпадения(ТекущаяСтрока); + Если Совпадения.Количество() > 0 Тогда + Совпадение = Совпадения[0]; + Имя = Совпадение.Группы[1].Значение; + ТипЭлемента = ТипКонецТэга(); + + Если Элементы.Количество() > 0 Тогда + Элементы.Удалить(Элементы.ВГраница()); + КонецЕсли; + + Возврат; + КонецЕсли; + + Совпадения = ВыражениеНачалоЭлемента.НайтиСовпадения(ТекущаяСтрока); + Если Совпадения.Количество() > 0 Тогда + Совпадение = Совпадения[0]; + Имя = Совпадение.Группы[1].Значение; + СтрокаАтрибутов = Совпадение.Группы[2].Значение; + Атрибуты = ЗначенияАтрибутов(); + ТипЭлемента = ТипНачалоТэга(); + + Элементы.Добавить(Имя); + + ОбновитьИмяЭлемента(); + Возврат; + КонецЕсли; + + Если СтрНачинаетсяС(ТекущаяСтрока, " 0 Тогда + Элементы[Элементы.ВГраница()] = СтрШаблон("%1.%2", Элементы[Элементы.ВГраница()], ИмяЭлемента); + КонецЕсли; +КонецПроцедуры + +Функция ЗначенияАтрибутов() + Результат = Новый Соответствие; + Если ПустаяСтрока(СтрокаАтрибутов) Тогда + Возврат Результат; + КонецЕсли; + + Совпадения = ВыражениеЗначенияАтрибутов.НайтиСовпадения(СтрокаАтрибутов); + Если Совпадения.Количество() = 0 Тогда + Возврат Результат; + КонецЕсли; + + Для Каждого Совпадение Из Совпадения Цикл + Атрибут = Совпадение.Группы[1].Значение; + ЗначениеАтрибута = Совпадение.Группы[2].Значение; + Результат.Вставить(Атрибут, ЗначениеАтрибута) + КонецЦикла; + + Возврат Результат; +КонецФункции + +Функция ЗначениеАтрибута(ИмяАтрибута) + Возврат Атрибуты.Получить(ИмяАтрибута); +КонецФункции + +Функция ТипНачалоТэга() + Возврат "НачалоТэга"; +КонецФункции + +Функция ТипКонецТэга() + Возврат "КонецТэга"; +КонецФункции + +Функция ТипСтрокаЭлемента() + Возврат "СтрокаЭлемента"; +КонецФункции + +Функция ТипЗаголовокФайла() + Возврат "ЗаголовокФайла"; +КонецФункции + +Функция ТипКомментарий() + Возврат "Комментарий"; +КонецФункции + +Функция ТипМногострочнаяСтрока() + Возврат "МногострочнаяСтрока"; +КонецФункции + +Процедура ОчиститьЗначенияПеременных() + ТипЭлемента = ""; + Имя = ""; + Значение = ""; + СтрокаАтрибутов = ""; + Атрибуты = Новый Соответствие; +КонецПроцедуры + +#КонецОбласти diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\242\320\270\320\277\321\213\320\244\320\260\320\271\320\273\320\276\320\262.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\242\320\270\320\277\321\213\320\244\320\260\320\271\320\273\320\276\320\262.os" index 1b27382..01b0b61 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\242\320\270\320\277\321\213\320\244\320\260\320\271\320\273\320\276\320\262.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\242\320\270\320\277\321\213\320\244\320\260\320\271\320\273\320\276\320\262.os" @@ -118,7 +118,7 @@ КонецФункции -// ЭтоФайлОписанияФормыEDT +// ЭтоФайлОписанияФормыКонфигуратора // Возвращает истину, если файл является файлом описания формы в формате конфигуратора // Параметры: // Файл - Файл - Полный путь к файлу @@ -126,7 +126,7 @@ // Возвращаемое значение: // Булево - Признак // -Функция ЭтоФайлОписанияФормыКонфигуратора(Файл) +Функция ЭтоФайлОписанияФормыКонфигуратора(Файл) Экспорт Возврат СтрСравнить(Файл.Имя, "Form.xml") = 0; @@ -146,6 +146,26 @@ КонецФункции +// Возвращает истину, если передан файл базовой формы расширения в формате EDT. +// Параметры: +// Файл - Файл - Полный путь к файлу +// +// Возвращаемое значение: +// Булево - Определяет, является ли переданный файл базовой формой. +// +Функция ЭтоФайлБазовойФормы(Файл) Экспорт + Возврат СтрЗаканчиваетсяНа(Файл.ПолноеИмя, ПутьКФайлуБазовойФормы()); +КонецФункции + +// Возвращает относительный путь к файлу базовой формы для формы расширения EDT. +// +// Возвращаемое значение: +// Строка - Относительный путь к файлу базовой формы. +// +Функция ПутьКФайлуБазовойФормы() Экспорт + Возврат ОбъединитьПути("BaseForm", "Form.form"); +КонецФункции + // ЭтоФайлЧастьТеста // Возвращает истину, если файл относится к тестовому расширению // Параметры: 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\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274.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\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274.os" index 6ed2343..1244f47 100644 --- "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\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274.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\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274.os" @@ -41,11 +41,22 @@ КонецЕсли; ФорматEDT = ТипыФайлов.ЭтоФайлОписанияФормыEDT(АнализируемыйФайл); - Если ТипыФайлов.ЭтоФайлОписанияФормы(АнализируемыйФайл) ИЛИ ФорматEDT Тогда + Если ФорматEDT ИЛИ ТипыФайлов.ЭтоФайлОписанияФормыКонфигуратора(АнализируемыйФайл) Тогда Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария()); - Если ОбновитьИндексыЭлементовВФорме(АнализируемыйФайл.ПолноеИмя, ФорматEDT) Тогда + Если ФорматEDT Тогда + Если ТипыФайлов.ЭтоФайлБазовойФормы(АнализируемыйФайл) Тогда + Возврат Истина; + Иначе + ФайлБазовойФормы = Новый Файл(ОбъединитьПути(АнализируемыйФайл.Путь, ТипыФайлов.ПутьКФайлуБазовойФормы())); + Если ФайлБазовойФормы.Существует() И ОбновитьИндексыЭлементовВФорме(ФайлБазовойФормы) Тогда + ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(ФайлБазовойФормы.ПолноеИмя); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если ОбновитьИндексыЭлементовВФорме(АнализируемыйФайл) Тогда ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя); КонецЕсли; @@ -57,115 +68,20 @@ КонецФункции // ОбработатьФайл() -Функция ОбновитьИндексыЭлементовВФорме(Знач ИмяФайла, EDT = Ложь) - - СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(ИмяФайла); - - ПаттернID = ?(EDT, "([0-9]+)<\/id>", "id=\""([0-9]+)\"""); - - Регексп = Новый РегулярноеВыражение(ПаттернID); - Регексп.ИгнорироватьРегистр = ИСТИНА; - Регексп.Многострочный = ИСТИНА; - ГруппыИндексов = Регексп.НайтиСовпадения(СодержимоеФайла); - Если ГруппыИндексов.Количество() = 0 Тогда - - Возврат ЛОЖЬ; - +Функция ОбновитьИндексыЭлементовВФорме(Файл) + ДанныеФормы = Новый ДанныеФормы(Файл); + Если ДанныеФормы.ЭтоФормаРасширения() Тогда + ДанныеФормы.ВосстановитьСвязьЭлементовСБазовойФормой(); КонецЕсли; - ТЧ = Новый ТаблицаЗначений; - ТЧ.Колонки.Добавить("Значение"); - ТЧ.Колонки.Добавить("Количество"); - - Для Каждого ГруппаИндексов Из ГруппыИндексов Цикл - - Значение = Число(ГруппаИндексов.Группы[1].Значение); - - СтрокаТЧ = ТЧ.Найти(Значение, "Значение"); - Если СтрокаТЧ = Неопределено Тогда - СтрокаТЧ = ТЧ.Добавить(); - СтрокаТЧ.Значение = Значение; - СтрокаТЧ.Количество = 1; - Иначе - СтрокаТЧ.Количество = СтрокаТЧ.Количество + 1; - КонецЕсли; - КонецЦикла; - - ТЧ.Свернуть("Значение", "Количество"); - - Если ТЧ.Количество() = ГруппыИндексов.Количество() Тогда - Возврат Ложь; + Если ДанныеФормы.ЕстьДублиИдентификаторов() Тогда + ДанныеФормы.ЗаменитьДублиИдентификаторов(); КонецЕсли; - ТЧ.Сортировать("Значение УБЫВ"); - ПоследнийНомер = ТЧ[0].Значение; - ТЧ.Сортировать("Количество УБЫВ"); - Если ТЧ[0].Количество = 1 Тогда - + Если ДанныеФормы.ФормаИзменена() Тогда + ДанныеФормы.Записать(Файл); Возврат Истина; - - Иначе - - СвободныеИдентификаторы = ВычислитьСвободныеИдентификаторы(ТЧ); - КонецЕсли; - Для каждого СтрокаТЧ Из ТЧ Цикл - - Если СтрокаТЧ.Количество = 1 Тогда - - Прервать; - - КонецЕсли; - - Пока СтрокаТЧ.Количество > 1 Цикл - - ИсходнаяСтрока = ?(EDT, "" + СтрокаТЧ.Значение + "<", "id=""" + СтрокаТЧ.Значение + """"); - СвободныйИдентификатор = ПолучитьСвободныйИдентификатор(СвободныеИдентификаторы, ПоследнийНомер); - СтрокаЗамены = ?(EDT, "" + СвободныйИдентификатор + "<", "id=""" + СвободныйИдентификатор + """"); - - Поз = СтрНайти(СодержимоеФайла, ИсходнаяСтрока); - - НоваяСтрока = Лев(СодержимоеФайла, Поз - 1) + СтрокаЗамены; - СодержимоеФайла = НоваяСтрока + Сред(СодержимоеФайла, Поз + СтрДлина(ИсходнаяСтрока)); - - СтрокаТЧ.Количество = СтрокаТЧ.Количество - 1; - - КонецЦикла; - - КонецЦикла; - - ФайловыеОперации.ЗаписатьТекстФайла(ИмяФайла, СодержимоеФайла); - - Возврат Истина; - -КонецФункции - -Функция ВычислитьСвободныеИдентификаторы(ТЧ) - СписокЗначений = Новый СписокЗначений(); - СписокЗначений.ЗагрузитьЗначения(ТЧ.ВыгрузитьКолонку("Значение")); - СписокЗначений.СортироватьПоЗначению(); - - СвободныеИдентификаторы = Новый Массив; - Для Ит = 0 По СписокЗначений.Количество() - 2 Цикл - Если СписокЗначений[Ит].Значение = СписокЗначений[Ит + 1].Значение Тогда - Продолжить; - КонецЕсли; - Для Ид = СписокЗначений[Ит].Значение + 1 По СписокЗначений[Ит + 1].Значение - 1 Цикл - СвободныеИдентификаторы.Добавить(Ид); - КонецЦикла; - КонецЦикла; - - Возврат СвободныеИдентификаторы; -КонецФункции - -Функция ПолучитьСвободныйИдентификатор(СвободныеИдентификаторы, ПоследнийНомер) - Если СвободныеИдентификаторы.Количество() Тогда - СвободныйИдентификатор = СвободныеИдентификаторы[0]; - СвободныеИдентификаторы.Удалить(0); - Возврат СвободныйИдентификатор; - Иначе - ПоследнийНомер = ПоследнийНомер + 1; - Возврат ПоследнийНомер; - КонецЕсли; + Возврат Ложь; КонецФункции diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/v8config.json" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/v8config.json" new file mode 100644 index 0000000..cd9250b --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/v8config.json" @@ -0,0 +1,48 @@ +{ + "Precommt4onecСценарии": { + "ИспользоватьСценарииРепозитория": false, + "КаталогЛокальныхСценариев": "", + "ГлобальныеСценарии": [ + "ВставкаКопирайтов.os", + "ДобавлениеПробеловПередКлючевымиСловами.os", + "ЗапретИспользованияПерейти.os", + "ИсправлениеНеКаноническогоНаписания.os", + "КорректировкаXMLФорм.os", + "ОбработкаЮнитТестов.os", + "ОтключениеПолнотекстовогоПоиска.os", + "ОтключениеРазрешенияИзменятьФорму.os", + "ПроверкаДублейПроцедурИФункций.os", + "ПроверкаКорректностиИнструкцийПрепроцессора.os", + "ПроверкаКорректностиОбластей.os", + "ПроверкаНецензурныхСлов.os", + "РазборОбычныхФормНаИсходники.os", + "РазборОтчетовОбработокРасширений.os", + "СинхронизацияОбъектовМетаданныхИФайлов.os", + "СортировкаСостава.os", + "УдалениеДублейМетаданных.os", + "УдалениеЛишнихКонцевыхПробелов.os", + "УдалениеЛишнихПустыхСтрок.os" + ], + "ОтключенныеСценарии": [], + "Проекты": {}, + "НастройкиСценариев": { + "ВставкаКопирайтов": { + "ИгнорироватьМодулиОбъектовПоставки": true, + "ПутьКФайлуКопирайта": "COPYRIGHT", + "ИсключаемыеТэги": [ + "// IMPORT" + ] + }, + "ОтключениеПолнотекстовогоПоиска": { + "МетаданныеДляИсключения": {} + }, + "ПроверкаНецензурныхСлов": { + "ФайлСНецензурнымиСловами": "НецензурныеСлова.txt" + }, + "РазборОтчетовОбработокРасширений": { + "ИспользоватьНастройкиПоУмолчанию": true, + "ВерсияПлатформы": "" + } + } + } +} \ No newline at end of file diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/1/Form.xml" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/1/Form.xml" new file mode 100644 index 0000000..759a0fd --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/1/Form.xml" @@ -0,0 +1,54 @@ + +
+ 800 + LockOwnerWindow + false + useIfNecessary + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа шапка</v8:content> + </v8:item> + + Horizontal + Usual + None + false + + + + web:Green + + Right + Left + CheckBox + + + + + + + false + + + + + \ No newline at end of file diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/2/Form.xml" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/2/Form.xml" new file mode 100644 index 0000000..1800635 --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/2/Form.xml" @@ -0,0 +1,111 @@ + +
+ 800 + LockOwnerWindow + false + useIfNecessary + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа шапка</v8:content> + </v8:item> + + Horizontal + Usual + None + false + + + + web:Green + + Right + Left + CheckBox + + + + + + + false + + + + + + 800 + LockOwnerWindow + false + useIfNecessary + + Help + + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа шапка</v8:content> + </v8:item> + + Horizontal + Usual + None + false + + + + web:Green + + Right + Left + CheckBox + + + + + + + false + + + + + + + \ No newline at end of file diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/3/Form.xml" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/3/Form.xml" new file mode 100644 index 0000000..0707de3 --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/3/Form.xml" @@ -0,0 +1,59 @@ + +
+ 800 + LockOwnerWindow + false + useIfNecessary + + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа шапка</v8:content> + </v8:item> + + Horizontal + Usual + None + false + + + + web:Green + + Right + Left + CheckBox + + + + + + + false + + + + + \ No newline at end of file diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/4/Form.xml" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/4/Form.xml" new file mode 100644 index 0000000..b73aea2 --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/4/Form.xml" @@ -0,0 +1,121 @@ + +
+ 800 + LockOwnerWindow + false + useIfNecessary + + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа шапка</v8:content> + </v8:item> + + Horizontal + Usual + None + false + + + + web:Green + + Right + Left + CheckBox + + + + + РеквизитРасширения + + + + + + + false + + + + + + 800 + LockOwnerWindow + false + useIfNecessary + + Help + + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа шапка</v8:content> + </v8:item> + + Horizontal + Usual + None + false + + + + web:Green + + Right + Left + CheckBox + + + + + + + false + + + + + + + \ No newline at end of file diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/5/Form.xml" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/5/Form.xml" new file mode 100644 index 0000000..8f500d0 --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/Configurator/5/Form.xml" @@ -0,0 +1,197 @@ + +
+ 800 + LockOwnerWindow + false + useIfNecessary + + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа шапка</v8:content> + </v8:item> + + Horizontal + Usual + None + false + + + + web:Green + + Right + Left + CheckBox + + + + + РеквизитРасширения + + + + + + + false + + + + + + + + v8:ValueTable + + + + + xs:string + + 64 + Variable + + + + + + xs:decimal + + 12 + 3 + Any + + + + + + + + v8:ValueTable + + + + + xs:string + + 64 + Variable + + + + + + xs:decimal + + 12 + 3 + Any + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Команда расширения</v8:content> + </v8:item> + + ЮТКомандаРасширенияИзменениеИКонтроль + + + + + + xs:string + + 0 + Variable + + + + + + 800 + LockOwnerWindow + false + useIfNecessary + + Help + + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа шапка</v8:content> + </v8:item> + + Horizontal + Usual + None + false + + + + web:Green + + Right + Left + CheckBox + + + + + + + false + + + + + + + \ No newline at end of file diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/1/Form.form" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/1/Form.form" new file mode 100644 index 0000000..6f06b4a --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/1/Form.form" @@ -0,0 +1,110 @@ + + + + ГруппаШапка + 1 + + Использовать + 2 + true + true + + Объект.Использовать + + Right + CheckBoxField + Left + Enter + true + Left + true + + CheckBox + + + true + true + + <key>ru</key> + <value>Группа шапка</value> + + UsualGroup + + true + true + Auto + Auto + + + + Ответственный + 3 + true + true + + Объект.Ответственный + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 4 + true + true + Form.Command.ЗаписатьОбъектИЗакрыть + Auto + true + true + UserCmds + Auto + + + ФормаЗаписать + 5 + true + true + Form.Command.ЗаписатьОбъект + Auto + true + true + UserCmds + Auto + + true + true + Left + true + + Help + Write + WriteAndClose + 800 + LockOwnerWindow + true + true + Vertical + true + true + UseIfNecessary + true + true + + + + + + diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/2/BaseForm/Form.form" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/2/BaseForm/Form.form" new file mode 100644 index 0000000..6f06b4a --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/2/BaseForm/Form.form" @@ -0,0 +1,110 @@ + + + + ГруппаШапка + 1 + + Использовать + 2 + true + true + + Объект.Использовать + + Right + CheckBoxField + Left + Enter + true + Left + true + + CheckBox + + + true + true + + <key>ru</key> + <value>Группа шапка</value> + + UsualGroup + + true + true + Auto + Auto + + + + Ответственный + 3 + true + true + + Объект.Ответственный + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 4 + true + true + Form.Command.ЗаписатьОбъектИЗакрыть + Auto + true + true + UserCmds + Auto + + + ФормаЗаписать + 5 + true + true + Form.Command.ЗаписатьОбъект + Auto + true + true + UserCmds + Auto + + true + true + Left + true + + Help + Write + WriteAndClose + 800 + LockOwnerWindow + true + true + Vertical + true + true + UseIfNecessary + true + true + + + + + + diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/2/Form.form" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/2/Form.form" new file mode 100644 index 0000000..6f06b4a --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/2/Form.form" @@ -0,0 +1,110 @@ + + + + ГруппаШапка + 1 + + Использовать + 2 + true + true + + Объект.Использовать + + Right + CheckBoxField + Left + Enter + true + Left + true + + CheckBox + + + true + true + + <key>ru</key> + <value>Группа шапка</value> + + UsualGroup + + true + true + Auto + Auto + + + + Ответственный + 3 + true + true + + Объект.Ответственный + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 4 + true + true + Form.Command.ЗаписатьОбъектИЗакрыть + Auto + true + true + UserCmds + Auto + + + ФормаЗаписать + 5 + true + true + Form.Command.ЗаписатьОбъект + Auto + true + true + UserCmds + Auto + + true + true + Left + true + + Help + Write + WriteAndClose + 800 + LockOwnerWindow + true + true + Vertical + true + true + UseIfNecessary + true + true + + + + + + diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/3/Form.form" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/3/Form.form" new file mode 100644 index 0000000..64fe990 --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/3/Form.form" @@ -0,0 +1,110 @@ + + + + ГруппаШапка + 10 + + Использовать + 11 + true + true + + Объект.Использовать + + Right + CheckBoxField + Left + Enter + true + Left + true + + CheckBox + + + true + true + + <key>ru</key> + <value>Группа шапка</value> + + UsualGroup + + true + true + Auto + Auto + + + + Ответственный + 13 + true + true + + Объект.Ответственный + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 13 + true + true + Form.Command.ЗаписатьОбъектИЗакрыть + Auto + true + true + UserCmds + Auto + + + ФормаЗаписать + 14 + true + true + Form.Command.ЗаписатьОбъект + Auto + true + true + UserCmds + Auto + + true + true + Left + true + + Help + Write + WriteAndClose + 800 + LockOwnerWindow + true + true + Vertical + true + true + UseIfNecessary + true + true + + + + + + diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/4/BaseForm/Form.form" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/4/BaseForm/Form.form" new file mode 100644 index 0000000..6f06b4a --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/4/BaseForm/Form.form" @@ -0,0 +1,110 @@ + + + + ГруппаШапка + 1 + + Использовать + 2 + true + true + + Объект.Использовать + + Right + CheckBoxField + Left + Enter + true + Left + true + + CheckBox + + + true + true + + <key>ru</key> + <value>Группа шапка</value> + + UsualGroup + + true + true + Auto + Auto + + + + Ответственный + 3 + true + true + + Объект.Ответственный + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 4 + true + true + Form.Command.ЗаписатьОбъектИЗакрыть + Auto + true + true + UserCmds + Auto + + + ФормаЗаписать + 5 + true + true + Form.Command.ЗаписатьОбъект + Auto + true + true + UserCmds + Auto + + true + true + Left + true + + Help + Write + WriteAndClose + 800 + LockOwnerWindow + true + true + Vertical + true + true + UseIfNecessary + true + true + + + + + + diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/4/Form.form" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/4/Form.form" new file mode 100644 index 0000000..e14da9e --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/4/Form.form" @@ -0,0 +1,110 @@ + + + + ГруппаШапка + 1 + + Использовать + 2 + true + true + + Объект.Использовать + + Right + CheckBoxField + Left + Enter + true + Left + true + + CheckBox + + + true + true + + <key>ru</key> + <value>Группа шапка</value> + + UsualGroup + + true + true + Auto + Auto + + + + Ответственный + 3 + true + true + + Объект.Ответственный + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписать + 4 + true + true + Form.Command.ЗаписатьОбъект + Auto + true + true + UserCmds + Auto + + + ФормаЗаписатьИЗакрыть + 5 + true + true + Form.Command.ЗаписатьОбъектИЗакрыть + Auto + true + true + UserCmds + Auto + + true + true + Left + true + + Help + Write + WriteAndClose + 800 + LockOwnerWindow + true + true + Vertical + true + true + UseIfNecessary + true + true + + + + + + diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/5/BaseForm/Form.form" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/5/BaseForm/Form.form" new file mode 100644 index 0000000..6f06b4a --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/5/BaseForm/Form.form" @@ -0,0 +1,110 @@ + + + + ГруппаШапка + 1 + + Использовать + 2 + true + true + + Объект.Использовать + + Right + CheckBoxField + Left + Enter + true + Left + true + + CheckBox + + + true + true + + <key>ru</key> + <value>Группа шапка</value> + + UsualGroup + + true + true + Auto + Auto + + + + Ответственный + 3 + true + true + + Объект.Ответственный + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 4 + true + true + Form.Command.ЗаписатьОбъектИЗакрыть + Auto + true + true + UserCmds + Auto + + + ФормаЗаписать + 5 + true + true + Form.Command.ЗаписатьОбъект + Auto + true + true + UserCmds + Auto + + true + true + Left + true + + Help + Write + WriteAndClose + 800 + LockOwnerWindow + true + true + Vertical + true + true + UseIfNecessary + true + true + + + + + + diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/5/Form.form" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/5/Form.form" new file mode 100644 index 0000000..df79c18 --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\224\320\276/EDT/5/Form.form" @@ -0,0 +1,249 @@ + + + + ГруппаШапка + 1 + + Использовать + 2 + true + true + + Объект.Использовать + + Right + CheckBoxField + Left + Enter + true + Left + true + + CheckBox + + + + РеквизитРасширения + 2 + true + true + + РеквизитРасширения + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + <key>ru</key> + <value>Группа шапка</value> + + UsualGroup + + true + true + Auto + Auto + + + + Ответственный + 3 + true + true + + Объект.Ответственный + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписать + 4 + true + true + Form.Command.ЗаписатьОбъект + Auto + true + true + UserCmds + Auto + + + ФормаЗаписатьИЗакрыть + 5 + true + true + Form.Command.ЗаписатьОбъектИЗакрыть + Auto + true + true + UserCmds + Auto + + true + true + Left + true + + Help + Write + WriteAndClose + 800 + LockOwnerWindow + true + true + Vertical + true + true + UseIfNecessary + true + true + + ТаблицаРасширения1 + 1000001 + + ValueTable + + + true + + + true + + + КолонкаСТипомСтрока + 1000002 + + String + + 64 + + + + true + + + true + + + + КолонкаСТипомЧисло + 1000003 + + Number + + 12 + 3 + + + + true + + + true + + + + + ТаблицаРасширения2 + 1000004 + + ValueTable + + + true + + + true + + + КолонкаСТипомСтрока + 1000005 + + String + + 64 + + + + true + + + true + + + + КолонкаСТипомЧисло + 1000006 + + Number + + 12 + 3 + + + + true + + + true + + + + + КомандаРасширения + + <key>ru</key> + <value>Команда расширения</value> + + 1000001 + + true + + + + ЮТКомандаРасширенияИзменениеИКонтроль + ChangeAndValidate + + + Auto + + + ПараметрРасширения + + String + + + + + + + + + diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/1/Form.xml" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/1/Form.xml" new file mode 100644 index 0000000..759a0fd --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/1/Form.xml" @@ -0,0 +1,54 @@ + +
+ 800 + LockOwnerWindow + false + useIfNecessary + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа шапка</v8:content> + </v8:item> + + Horizontal + Usual + None + false + + + + web:Green + + Right + Left + CheckBox + + + + + + + false + + + + + \ No newline at end of file diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/2/Form.xml" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/2/Form.xml" new file mode 100644 index 0000000..1800635 --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/2/Form.xml" @@ -0,0 +1,111 @@ + +
+ 800 + LockOwnerWindow + false + useIfNecessary + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа шапка</v8:content> + </v8:item> + + Horizontal + Usual + None + false + + + + web:Green + + Right + Left + CheckBox + + + + + + + false + + + + + + 800 + LockOwnerWindow + false + useIfNecessary + + Help + + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа шапка</v8:content> + </v8:item> + + Horizontal + Usual + None + false + + + + web:Green + + Right + Left + CheckBox + + + + + + + false + + + + + + + \ No newline at end of file diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/3/Form.xml" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/3/Form.xml" new file mode 100644 index 0000000..18c3a32 --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/3/Form.xml" @@ -0,0 +1,59 @@ + +
+ 800 + LockOwnerWindow + false + useIfNecessary + + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа шапка</v8:content> + </v8:item> + + Horizontal + Usual + None + false + + + + web:Green + + Right + Left + CheckBox + + + + + + + false + + + + + \ No newline at end of file diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/4/Form.xml" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/4/Form.xml" new file mode 100644 index 0000000..7bdde82 --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/4/Form.xml" @@ -0,0 +1,121 @@ + +
+ 800 + LockOwnerWindow + false + useIfNecessary + + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа шапка</v8:content> + </v8:item> + + Horizontal + Usual + None + false + + + + web:Green + + Right + Left + CheckBox + + + + + РеквизитРасширения + + + + + + + false + + + + + + 800 + LockOwnerWindow + false + useIfNecessary + + Help + + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа шапка</v8:content> + </v8:item> + + Horizontal + Usual + None + false + + + + web:Green + + Right + Left + CheckBox + + + + + + + false + + + + + + + \ No newline at end of file diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/5/Form.xml" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/5/Form.xml" new file mode 100644 index 0000000..747914c --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/Configurator/5/Form.xml" @@ -0,0 +1,197 @@ + +
+ 800 + LockOwnerWindow + false + useIfNecessary + + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа шапка</v8:content> + </v8:item> + + Horizontal + Usual + None + false + + + + web:Green + + Right + Left + CheckBox + + + + + РеквизитРасширения + + + + + + + false + + + + + + + + v8:ValueTable + + + + + xs:string + + 64 + Variable + + + + + + xs:decimal + + 12 + 3 + Any + + + + + + + + v8:ValueTable + + + + + xs:string + + 64 + Variable + + + + + + xs:decimal + + 12 + 3 + Any + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Команда расширения</v8:content> + </v8:item> + + ЮТКомандаРасширенияИзменениеИКонтроль + + + + + + xs:string + + 0 + Variable + + + + + + 800 + LockOwnerWindow + false + useIfNecessary + + Help + + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа шапка</v8:content> + </v8:item> + + Horizontal + Usual + None + false + + + + web:Green + + Right + Left + CheckBox + + + + + + + false + + + + + + + \ No newline at end of file diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/1/Form.form" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/1/Form.form" new file mode 100644 index 0000000..6f06b4a --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/1/Form.form" @@ -0,0 +1,110 @@ + + + + ГруппаШапка + 1 + + Использовать + 2 + true + true + + Объект.Использовать + + Right + CheckBoxField + Left + Enter + true + Left + true + + CheckBox + + + true + true + + <key>ru</key> + <value>Группа шапка</value> + + UsualGroup + + true + true + Auto + Auto + + + + Ответственный + 3 + true + true + + Объект.Ответственный + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 4 + true + true + Form.Command.ЗаписатьОбъектИЗакрыть + Auto + true + true + UserCmds + Auto + + + ФормаЗаписать + 5 + true + true + Form.Command.ЗаписатьОбъект + Auto + true + true + UserCmds + Auto + + true + true + Left + true + + Help + Write + WriteAndClose + 800 + LockOwnerWindow + true + true + Vertical + true + true + UseIfNecessary + true + true + + + + + + diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/2/BaseForm/Form.form" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/2/BaseForm/Form.form" new file mode 100644 index 0000000..6f06b4a --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/2/BaseForm/Form.form" @@ -0,0 +1,110 @@ + + + + ГруппаШапка + 1 + + Использовать + 2 + true + true + + Объект.Использовать + + Right + CheckBoxField + Left + Enter + true + Left + true + + CheckBox + + + true + true + + <key>ru</key> + <value>Группа шапка</value> + + UsualGroup + + true + true + Auto + Auto + + + + Ответственный + 3 + true + true + + Объект.Ответственный + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 4 + true + true + Form.Command.ЗаписатьОбъектИЗакрыть + Auto + true + true + UserCmds + Auto + + + ФормаЗаписать + 5 + true + true + Form.Command.ЗаписатьОбъект + Auto + true + true + UserCmds + Auto + + true + true + Left + true + + Help + Write + WriteAndClose + 800 + LockOwnerWindow + true + true + Vertical + true + true + UseIfNecessary + true + true + + + + + + diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/2/Form.form" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/2/Form.form" new file mode 100644 index 0000000..6f06b4a --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/2/Form.form" @@ -0,0 +1,110 @@ + + + + ГруппаШапка + 1 + + Использовать + 2 + true + true + + Объект.Использовать + + Right + CheckBoxField + Left + Enter + true + Left + true + + CheckBox + + + true + true + + <key>ru</key> + <value>Группа шапка</value> + + UsualGroup + + true + true + Auto + Auto + + + + Ответственный + 3 + true + true + + Объект.Ответственный + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 4 + true + true + Form.Command.ЗаписатьОбъектИЗакрыть + Auto + true + true + UserCmds + Auto + + + ФормаЗаписать + 5 + true + true + Form.Command.ЗаписатьОбъект + Auto + true + true + UserCmds + Auto + + true + true + Left + true + + Help + Write + WriteAndClose + 800 + LockOwnerWindow + true + true + Vertical + true + true + UseIfNecessary + true + true + + + + + + diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/3/Form.form" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/3/Form.form" new file mode 100644 index 0000000..3be9b79 --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/3/Form.form" @@ -0,0 +1,110 @@ + + + + ГруппаШапка + 10 + + Использовать + 11 + true + true + + Объект.Использовать + + Right + CheckBoxField + Left + Enter + true + Left + true + + CheckBox + + + true + true + + <key>ru</key> + <value>Группа шапка</value> + + UsualGroup + + true + true + Auto + Auto + + + + Ответственный + 1 + true + true + + Объект.Ответственный + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 13 + true + true + Form.Command.ЗаписатьОбъектИЗакрыть + Auto + true + true + UserCmds + Auto + + + ФормаЗаписать + 14 + true + true + Form.Command.ЗаписатьОбъект + Auto + true + true + UserCmds + Auto + + true + true + Left + true + + Help + Write + WriteAndClose + 800 + LockOwnerWindow + true + true + Vertical + true + true + UseIfNecessary + true + true + + + + + + diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/4/BaseForm/Form.form" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/4/BaseForm/Form.form" new file mode 100644 index 0000000..6f06b4a --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/4/BaseForm/Form.form" @@ -0,0 +1,110 @@ + + + + ГруппаШапка + 1 + + Использовать + 2 + true + true + + Объект.Использовать + + Right + CheckBoxField + Left + Enter + true + Left + true + + CheckBox + + + true + true + + <key>ru</key> + <value>Группа шапка</value> + + UsualGroup + + true + true + Auto + Auto + + + + Ответственный + 3 + true + true + + Объект.Ответственный + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 4 + true + true + Form.Command.ЗаписатьОбъектИЗакрыть + Auto + true + true + UserCmds + Auto + + + ФормаЗаписать + 5 + true + true + Form.Command.ЗаписатьОбъект + Auto + true + true + UserCmds + Auto + + true + true + Left + true + + Help + Write + WriteAndClose + 800 + LockOwnerWindow + true + true + Vertical + true + true + UseIfNecessary + true + true + + + + + + diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/4/Form.form" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/4/Form.form" new file mode 100644 index 0000000..2acd08d --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/4/Form.form" @@ -0,0 +1,110 @@ + + + + ГруппаШапка + 1 + + Использовать + 2 + true + true + + Объект.Использовать + + Right + CheckBoxField + Left + Enter + true + Left + true + + CheckBox + + + true + true + + <key>ru</key> + <value>Группа шапка</value> + + UsualGroup + + true + true + Auto + Auto + + + + Ответственный + 3 + true + true + + Объект.Ответственный + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписать + 5 + true + true + Form.Command.ЗаписатьОбъект + Auto + true + true + UserCmds + Auto + + + ФормаЗаписатьИЗакрыть + 4 + true + true + Form.Command.ЗаписатьОбъектИЗакрыть + Auto + true + true + UserCmds + Auto + + true + true + Left + true + + Help + Write + WriteAndClose + 800 + LockOwnerWindow + true + true + Vertical + true + true + UseIfNecessary + true + true + + + + + + diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/5/BaseForm/Form.form" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/5/BaseForm/Form.form" new file mode 100644 index 0000000..6f06b4a --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/5/BaseForm/Form.form" @@ -0,0 +1,110 @@ + + + + ГруппаШапка + 1 + + Использовать + 2 + true + true + + Объект.Использовать + + Right + CheckBoxField + Left + Enter + true + Left + true + + CheckBox + + + true + true + + <key>ru</key> + <value>Группа шапка</value> + + UsualGroup + + true + true + Auto + Auto + + + + Ответственный + 3 + true + true + + Объект.Ответственный + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписатьИЗакрыть + 4 + true + true + Form.Command.ЗаписатьОбъектИЗакрыть + Auto + true + true + UserCmds + Auto + + + ФормаЗаписать + 5 + true + true + Form.Command.ЗаписатьОбъект + Auto + true + true + UserCmds + Auto + + true + true + Left + true + + Help + Write + WriteAndClose + 800 + LockOwnerWindow + true + true + Vertical + true + true + UseIfNecessary + true + true + + + + + + diff --git "a/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/5/Form.form" "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/5/Form.form" new file mode 100644 index 0000000..27a3725 --- /dev/null +++ "b/tests/fixtures/\320\232\320\276\321\200\321\200\320\265\320\272\321\202\320\270\321\200\320\276\320\262\320\272\320\260XML\320\244\320\276\321\200\320\274/\320\237\320\276\321\201\320\273\320\265/EDT/5/Form.form" @@ -0,0 +1,249 @@ + + + + ГруппаШапка + 1 + + Использовать + 2 + true + true + + Объект.Использовать + + Right + CheckBoxField + Left + Enter + true + Left + true + + CheckBox + + + + РеквизитРасширения + 6 + true + true + + РеквизитРасширения + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + true + true + + <key>ru</key> + <value>Группа шапка</value> + + UsualGroup + + true + true + Auto + Auto + + + + Ответственный + 3 + true + true + + Объект.Ответственный + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ФормаКоманднаяПанель + -1 + + ФормаЗаписать + 5 + true + true + Form.Command.ЗаписатьОбъект + Auto + true + true + UserCmds + Auto + + + ФормаЗаписатьИЗакрыть + 4 + true + true + Form.Command.ЗаписатьОбъектИЗакрыть + Auto + true + true + UserCmds + Auto + + true + true + Left + true + + Help + Write + WriteAndClose + 800 + LockOwnerWindow + true + true + Vertical + true + true + UseIfNecessary + true + true + + ТаблицаРасширения1 + 7 + + ValueTable + + + true + + + true + + + КолонкаСТипомСтрока + 1000002 + + String + + 64 + + + + true + + + true + + + + КолонкаСТипомЧисло + 1000003 + + Number + + 12 + 3 + + + + true + + + true + + + + + ТаблицаРасширения2 + 1000004 + + ValueTable + + + true + + + true + + + КолонкаСТипомСтрока + 1000005 + + String + + 64 + + + + true + + + true + + + + КолонкаСТипомЧисло + 1000006 + + Number + + 12 + 3 + + + + true + + + true + + + + + КомандаРасширения + + <key>ru</key> + <value>Команда расширения</value> + + 1000001 + + true + + + + ЮТКомандаРасширенияИзменениеИКонтроль + ChangeAndValidate + + + Auto + + + ПараметрРасширения + + String + + + + + + + + + \ No newline at end of file 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 2fa5818..7783863 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" @@ -39,6 +39,7 @@ ВсеТесты.Добавить("ТестДолжен_ПроверитьИзменениеТегаКастомизацииФормы"); ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийВставкиКопирайтовНеОбновляетКопирайтВФайлахПоставки"); ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийЗапретаИспользованияПерейтиНеСрабатываетНаСтроку"); + ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийКорректировкаXMLФормУчитываетСвязьФормРасширенийСФормамиКонфигурации"); Возврат ВсеТесты; @@ -585,6 +586,47 @@ #КонецОбласти +#Область КорректировкаXMLФорм + +Процедура ТестДолжен_ПроверитьЧтоСценарийКорректировкаXMLФормУчитываетСвязьФормРасширенийСФормамиКонфигурации() Экспорт + ОбъектСценария = ПолучитьСценарий("КорректировкаXMLФорм.os"); + + ВременныйКаталог = ПолучитьИмяВременногоФайла(); + Фикстура = Фикстура("КорректировкаXMLФорм"); + СоздатьКаталог(ВременныйКаталог); + СкопироватьКаталог(Фикстура, ВременныйКаталог); + + Настройки = ПолучитьДополнительныеНастройки(ВременныйКаталог); + ПутьККаталогуДо = ОбъединитьПути(ВременныйКаталог, "До"); + ПутьККаталогуПосле = ОбъединитьПути(ВременныйКаталог, "После"); + + ФорматыФайла = Новый Структура; + ФорматыФайла.Вставить("Configurator", "Form.xml"); + ФорматыФайла.Вставить("EDT", "Form.form"); + + // Тестовые файлы имеют следующие особенности: + // 1. Форма без родителя, нет изменений, нет дублей + // 2. Форма с родителем, нет изменений, нет дублей + // 3. Форма без родителя, есть дубли, есть пропущенные идентификаторы + // 4. Форма с родителем, идентификаторы заимствованных реквизитов расходятся + // 5. Форма с родителем, идентификаторы заимствованных реквизитов расходятся, есть пропущенные идентификаторы, есть дубли. + Для Каждого Формат Из ФорматыФайла Цикл + Для Подкаталог = 1 По 5 Цикл + Файл = Новый Файл(ОбъединитьПути(ПутьККаталогуДо, Формат.Ключ, Подкаталог, Формат.Значение)); + Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, Настройки); + Ожидаем.Что(Результат, "Файл формы не был обработан").Равно(Истина); + + СодержимоеФайла = СокрЛП(ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя)); + СодержимоеЭталон = СокрЛП(ФайловыеОперации.ПрочитатьТекстФайла(ОбъединитьПути(ПутьККаталогуПосле, Формат.Ключ, Подкаталог, Формат.Значение))); + Ожидаем.Что(СодержимоеФайла, "Файл формы был обработан некорректно").Равно(СодержимоеЭталон); + КонецЦикла; + КонецЦикла; + + МенеджерВременныхФайлов.УдалитьФайл(ВременныйКаталог); +КонецПроцедуры + +#КонецОбласти + #КонецОбласти #Область Служебные From 2d781acb5c77566bcff255d08c05107981533456 Mon Sep 17 00:00:00 2001 From: Valery Maximov Date: Wed, 22 May 2024 17:58:46 +0300 Subject: [PATCH 3/3] =?UTF-8?q?=D1=80=D0=B5=D0=BB=D0=B8=D0=B7=2024.05?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\276\320\262\320\260\320\275\320\270\320\265.feature" | 4 ++-- ...0\276\320\274\320\260\320\275\320\264\321\213.feature" | 6 +++--- ...0\276\320\274\320\274\320\270\321\202\320\260.feature" | 8 ++++---- ...73\320\276\320\266\320\265\320\275\320\270\321\217.os" | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git "a/features/\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.feature" "b/features/\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.feature" index 2c5b92f..b82c05e 100644 --- "a/features/\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.feature" +++ "b/features/\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.feature" @@ -10,7 +10,7 @@ Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -global" Тогда Код возврата команды "oscript" равен 0 И Я сообщаю вывод команды "oscript" - И Вывод команды "oscript" содержит "precommit4onec v24.03" + И Вывод команды "oscript" содержит "precommit4onec v24.05" И Вывод команды "oscript" содержит "Установленные настройки:" И Вывод команды "oscript" содержит "ИспользоватьСценарииРепозитория =" И Вывод команды "oscript" содержит "КаталогЛокальныхСценариев =" @@ -33,7 +33,7 @@ И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -global" И Код возврата команды "oscript" равен 0 И Я сообщаю вывод команды "oscript" - И Вывод команды "oscript" содержит "precommit4onec v24.03" + И Вывод команды "oscript" содержит "precommit4onec v24.05" И Вывод команды "oscript" содержит "Установленные настройки: Базовые настройки" И Вывод команды "oscript" содержит "КаталогЛокальныхСценариев =" И Вывод команды "oscript" содержит "ГлобальныеСценарии = ВставкаКопирайтов.os,ДобавлениеПробеловПередКлючевымиСловами.os,ЗапретИспользованияПерейти.os,ИсправлениеНеКаноническогоНаписания.os,КорректировкаXMLФорм.os,ОбработкаЮнитТестов.os,ОтключениеПолнотекстовогоПоиска.os,ОтключениеРазрешенияИзменятьФорму.os,ПроверкаДублейПроцедурИФункций.os,ПроверкаКорректностиИнструкцийПрепроцессора.os,ПроверкаКорректностиОбластей.os,ПроверкаНецензурныхСлов.os,РазборОбычныхФормНаИсходники.os,РазборОтчетовОбработокРасширений.os,СинхронизацияОбъектовМетаданныхИФайлов.os,СортировкаСостава.os,УдалениеДублейМетаданных.os,УдалениеЛишнихКонцевыхПробелов.os,УдалениеЛишнихПустыхСтрок.os" diff --git "a/features/\320\237\321\200\320\276\321\201\321\202\321\213\320\265\320\232\320\276\320\274\320\260\320\275\320\264\321\213.feature" "b/features/\320\237\321\200\320\276\321\201\321\202\321\213\320\265\320\232\320\276\320\274\320\260\320\275\320\264\321\213.feature" index 137c360..fca1f36 100644 --- "a/features/\320\237\321\200\320\276\321\201\321\202\321\213\320\265\320\232\320\276\320\274\320\260\320\275\320\264\321\213.feature" +++ "b/features/\320\237\321\200\320\276\321\201\321\202\321\213\320\265\320\232\320\276\320\274\320\260\320\275\320\264\321\213.feature" @@ -14,7 +14,7 @@ Сценарий: Получение версии продукта Когда Я выполняю команду "oscript" с параметрами "src/main.os version" Тогда Я сообщаю вывод команды "oscript" - И Вывод команды "oscript" содержит "24.03" + И Вывод команды "oscript" содержит "24.05" И Вывод команды "oscript" не содержит "precommit4onec v" И Код возврата команды "oscript" равен 0 @@ -22,7 +22,7 @@ Когда Я выполняю команду "oscript" с параметрами "src/main.os help" Тогда Вывод команды "oscript" содержит """ - precommit4onec v24.03 + precommit4onec v24.05 Возможные команды: help - Выводит справку по командам version - Выводит версию приложения @@ -37,7 +37,7 @@ Когда Я выполняю команду "oscript" с параметрами "src/main.os" Тогда Вывод команды "oscript" содержит """ - precommit4onec v24.03 + precommit4onec v24.05 Возможные команды: help - Выводит справку по командам version - Выводит версию приложения diff --git "a/features/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\321\200\320\265\320\272\320\276\320\274\320\274\320\270\321\202\320\260.feature" "b/features/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\321\200\320\265\320\272\320\276\320\274\320\274\320\270\321\202\320\260.feature" index 7bca57b..da019df 100644 --- "a/features/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\321\200\320\265\320\272\320\276\320\274\320\274\320\270\321\202\320\260.feature" +++ "b/features/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\321\200\320\265\320\272\320\276\320\274\320\274\320\270\321\202\320\260.feature" @@ -18,7 +18,7 @@ Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install rep1" Тогда Код возврата команды "oscript" равен 0 И Я сообщаю вывод команды "oscript" - И Вывод команды "oscript" содержит "precommit4onec v24.03" + И Вывод команды "oscript" содержит "precommit4onec v24.05" И Вывод команды "oscript" содержит "Pre-commit hook для rep1 создан" И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit" @@ -28,14 +28,14 @@ И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./" Тогда Код возврата команды "oscript" равен 0 И Я сообщаю вывод команды "oscript" - И Вывод команды "oscript" содержит "precommit4onec v24.03" + И Вывод команды "oscript" содержит "precommit4onec v24.05" И Вывод команды "oscript" содержит "не является репозиторием git" Сценарий: Установка precommit4onec во вложенные каталоги Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./ -r" Тогда Код возврата команды "oscript" равен 0 И Я сообщаю вывод команды "oscript" - И Вывод команды "oscript" содержит "precommit4onec v24.03" + И Вывод команды "oscript" содержит "precommit4onec v24.05" И В каталоге ".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 v24.03" + И Вывод команды "oscript" содержит "precommit4onec v24.05" И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit" И В каталоге ".git/hooks" репозитория "Репозиторий2" есть файл "pre-commit" diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index 233bd3f..59e1b53 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -24,7 +24,7 @@ // Функция ВерсияПродукта() Экспорт - Возврат "24.03"; + Возврат "24.05"; КонецФункции // ВерсияПродукта