diff --git "a/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL.epf" "b/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL.epf" index 77113c21..3516fd98 100644 Binary files "a/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL.epf" and "b/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL.epf" differ diff --git "a/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.epf" "b/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.epf" index 256bd5a0..2674e454 100644 Binary files "a/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.epf" and "b/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.epf" differ diff --git "a/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.epf" "b/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.epf" index ee477e69..3a70db7c 100644 Binary files "a/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.epf" and "b/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.epf" differ diff --git "a/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260.epf" "b/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260.epf" index 885b0ab2..e9aef5b4 100644 Binary files "a/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260.epf" and "b/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260.epf" differ diff --git "a/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262.epf" "b/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262.epf" index 8b7a2867..af003c67 100644 Binary files "a/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262.epf" and "b/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262.epf" differ diff --git "a/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL.epf" "b/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL.epf" index 147c0904..cd493d3f 100644 Binary files "a/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL.epf" and "b/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL.epf" differ diff --git "a/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265.epf" "b/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265.epf" index b7158fba..2518ec04 100644 Binary files "a/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265.epf" and "b/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265.epf" differ diff --git "a/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.epf" "b/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.epf" index 5b75cf45..a1a44d0a 100644 Binary files "a/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.epf" and "b/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.epf" differ diff --git "a/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83.epf" "b/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83.epf" new file mode 100644 index 00000000..69823945 Binary files /dev/null and "b/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83.epf" differ diff --git "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML.epf" "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML.epf" index e6840eac..43d0ece2 100644 Binary files "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML.epf" and "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML.epf" differ diff --git "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL.epf" "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL.epf" index 20ebf29e..17614f4a 100644 Binary files "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL.epf" and "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL.epf" differ diff --git "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.epf" "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.epf" index 95427155..a4562f31 100644 Binary files "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.epf" and "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.epf" differ diff --git "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260.epf" "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260.epf" index 8a6bf87f..b44d8504 100644 Binary files "a/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260.epf" and "b/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260.epf" differ diff --git "a/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.epf" "b/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.epf" new file mode 100644 index 00000000..01ea19ac Binary files /dev/null and "b/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270.epf" differ diff --git a/Tests/TestConfig.cf b/Tests/TestConfig.cf index bda15aee..a165375f 100644 Binary files a/Tests/TestConfig.cf and b/Tests/TestConfig.cf differ diff --git "a/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164.epf" "b/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164.epf" index f812bf23..8db64ca7 100644 Binary files "a/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164.epf" and "b/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164.epf" differ diff --git a/Utils/UILogToScript.epf b/Utils/UILogToScript.epf new file mode 100644 index 00000000..153ff8d0 Binary files /dev/null and b/Utils/UILogToScript.epf differ diff --git a/Utils/xddTestsConvertIntoRebornFormat.epf b/Utils/xddTestsConvertIntoRebornFormat.epf index 58fcb888..d5f99f96 100644 Binary files a/Utils/xddTestsConvertIntoRebornFormat.epf and b/Utils/xddTestsConvertIntoRebornFormat.epf differ diff --git "a/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..28e14445 --- /dev/null +++ "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,366 @@ +&НаКлиенте +Перем СтатусыРезультатаТестирования; + +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат Объект().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции + +// { функции утверждения- проверки значений. + +&НаКлиенте +Процедура Проверить(_Истина, ДопСообщениеОшибки = "") Экспорт + Если Не _Истина Тогда + СообщениеОшибки = "Переданный параметр ("+Формат(_Истина, "БЛ=ложь; БИ=истина")+") не является Истиной, а хотели, чтобы являлся." + ФорматДСО(ДопСообщениеОшибки); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьИстину(_Истина, ДопСообщениеОшибки = "") Экспорт + Проверить(_Истина, ДопСообщениеОшибки); +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьЛожь(_Ложь, ДопСообщениеОшибки = "") Экспорт + Если _Ложь Тогда + СообщениеОшибки = "Переданный параметр ("+Формат(_Ложь, "БЛ=ложь; БИ=истина")+") не является Ложью, а хотели, чтобы являлся." + ФорматДСО(ДопСообщениеОшибки); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьДату(_Дата, _Период, ДопСообщениеОшибки = "") Экспорт + Если _Дата < _Период.ДатаНачала или _Дата > _Период.ДатаОкончания Тогда + представление = ПредставлениеПериода(_Период.ДатаНачала, _Период.ДатаОкончания, "ФП = Истина"); + СообщениеОшибки = "Переданный параметр ("+Формат(_Дата, "ДФ='dd.MM.yyyy HH:mm:ss'")+") не входит в период "+представление+", а хотели, чтобы являлся." + ФорматДСО(ДопСообщениеОшибки); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьРавенствоДатСТочностью2Секунды(_Дата, _Дата2, ДопСообщениеОшибки = "") Экспорт + Если _Дата < _Дата2-2 или _Дата > _Дата2+2 Тогда + СообщениеОшибки = "Переданная дата ("+Формат(_Дата, "ДФ='dd.MM.yyyy HH:mm:ss'")+") не равна дате ("+Формат(_Дата2, "ДФ='dd.MM.yyyy HH:mm:ss'")+") с точностью до 2-х секунд, а хотели, чтобы они равнялись." + ФорматДСО(ДопСообщениеОшибки); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьРавенство(_1, _2, ДопСообщениеОшибки = "") Экспорт + Если _1 <> _2 Тогда + СообщениеОшибки = "Сравниваемые значения ("+_1+"; "+_2+") не равны, а хотели, чтобы были равны." + ФорматДСО(ДопСообщениеОшибки); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьНеРавенство(_1, _2, ДопСообщениеОшибки = "") Экспорт + Если _1 = _2 Тогда + СообщениеОшибки = "Сравниваемые значения ("+_1+"; "+_2+") равны, а хотели, чтобы были не равны." + ФорматДСО(ДопСообщениеОшибки); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьБольше(_Больше, _Меньше, ДопСообщениеОшибки = "") Экспорт + Если _Больше <= _Меньше Тогда + СообщениеОшибки = "Первый параметр ("+_Больше+") меньше или равен второму ("+_Меньше+") а хотели, чтобы был больше." + ФорматДСО(ДопСообщениеОшибки); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьБольшеИлиРавно(_Больше, _Меньше, ДопСообщениеОшибки = "") Экспорт + Если _Больше < _Меньше Тогда + СообщениеОшибки = "Первый параметр ("+_Больше+") меньше второго ("+_Меньше+") а хотели, чтобы был больше или равен." + ФорматДСО(ДопСообщениеОшибки); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьМеньше(проверяемоеЗначение1, проверяемоеЗначение2, СообщениеОбОшибке = "") Экспорт + Если проверяемоеЗначение1 >= проверяемоеЗначение2 Тогда + СообщениеОшибки = "Значение <"+проверяемоеЗначение1+"> больше или равно, чем <"+проверяемоеЗначение2+">, а ожидалось меньше"+ + ФорматДСО(СообщениеОбОшибке); + ВызватьОшибкуПроверки(СообщениеОшибки) + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьМеньшеИлиРавно(проверяемоеЗначение1, проверяемоеЗначение2, СообщениеОбОшибке = "") Экспорт + Если проверяемоеЗначение1 > проверяемоеЗначение2 Тогда + СообщениеОшибки = "Значение <"+проверяемоеЗначение1+"> больше, чем <"+проверяемоеЗначение2+">, а ожидалось меньше или равно"+ + ФорматДСО(СообщениеОбОшибке); + ВызватьОшибкуПроверки(СообщениеОшибки) + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьВыполнилось(Знач СтрокаАлгоритм, ПараметрыИлиДопСообщениеОшибки = Неопределено, Знач ДопСообщениеОшибки = "") Экспорт + Перем Параметры; + + Если ТипЗнч(ПараметрыИлиДопСообщениеОшибки) = Тип("Строка") Тогда + ДопСообщениеОшибки = ПараметрыИлиДопСообщениеОшибки; + Иначе + Параметры = ПараметрыИлиДопСообщениеОшибки; + КонецЕсли; + Попытка + Выполнить(СтрокаАлгоритм); + Исключение + ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + СообщениеОшибки = "Хотели, чтобы алгоритм """+СтрокаАлгоритм+""" выполнился, а он упал с ошибкой """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецПопытки; + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьМетодВыполнился(Объект, Знач ИмяМетода, ПараметрыИлиДопСообщениеОшибки = Неопределено, Знач ДопСообщениеОшибки = "") Экспорт + Перем Параметры; + + Если ТипЗнч(ПараметрыИлиДопСообщениеОшибки) = Тип("Строка") Тогда + ДопСообщениеОшибки = ПараметрыИлиДопСообщениеОшибки; + Иначе + Параметры = ПараметрыИлиДопСообщениеОшибки; + Если Параметры <> Неопределено Тогда + ТипПараметра = ТипЗнч(Параметры); + Если ТипПараметра <> Тип("Массив") Тогда + ВызватьИсключение ("Ожидали, что вторым параметром будет передан массив параметров для метода <"+ИмяМетода+">, а получили другой объект с типом <"+ТипПараметра+">"); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + ПараметрыСтрока = ПараметрыСтрокой(Параметры); + + СтрокаВыполнения = "Объект." + ИмяМетода + "(" + ПараметрыСтрока + ")"; + + Попытка + Выполнить(СтрокаВыполнения); + Исключение + ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + СообщениеОшибки = "Хотели, чтобы код """+СтрокаВыполнения+""" выполнился, а он упал с ошибкой """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецПопытки; + +КонецПроцедуры + +&НаКлиенте +Функция ПараметрыСтрокой(Параметры) + ПараметрыСтрока = ""; + Если ЗначениеЗаполнено(Параметры) Тогда + Для Индекс = 0 По Параметры.ВГраница() Цикл + ПараметрыСтрока = ПараметрыСтрока + ", Параметры[" + Формат(Индекс, "ЧН=0; ЧГ=0") + "]"; + КонецЦикла; + КонецЕсли; + Возврат Сред(ПараметрыСтрока, 3); +КонецФункции + +&НаКлиенте +Процедура ПроверитьНеВыполнилось(Знач СтрокаАлгоритм, ПараметрыИлиОжидаемоеОписаниеОшибки, Знач ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки = "", Знач ДопСообщениеОшибки = "") Экспорт + Перем Параметры, ОжидаемоеОписаниеОшибки; + Если ТипЗнч(ПараметрыИлиОжидаемоеОписаниеОшибки) = Тип("Строка") Тогда + ОжидаемоеОписаниеОшибки = ПараметрыИлиОжидаемоеОписаниеОшибки; + ДопСообщениеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки; + Иначе + Параметры = ПараметрыИлиОжидаемоеОписаниеОшибки; + ОжидаемоеОписаниеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки; + КонецЕсли; + Попытка + Выполнить(СтрокаАлгоритм); + Исключение + ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + Если Найти(ПолученноеОписаниеОшибки, ОжидаемоеОписаниеОшибки) = 0 Тогда + ВызватьОшибкуПроверки("Хотели, чтобы алгоритм """+СтрокаАлгоритм+""" упал с сообщением об ошибке """+ОжидаемоеОписаниеОшибки+""", а он упал с сообщением """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки)); + КонецЕсли; + Возврат; + КонецПопытки; + + ВызватьОшибкуПроверки("Хотели, чтобы алгоритм """+СтрокаАлгоритм+""" упал, а он выполнился" + ФорматДСО(ДопСообщениеОшибки)); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьМетодНеВыполнился(Объект, ИмяМетода, ПараметрыИлиОжидаемоеОписаниеОшибки, Знач ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки = "", Знач ДопСообщениеОшибки = "") Экспорт + Перем Параметры, ОжидаемоеОписаниеОшибки; + + Если ТипЗнч(ПараметрыИлиОжидаемоеОписаниеОшибки) = Тип("Строка") Тогда + ОжидаемоеОписаниеОшибки = ПараметрыИлиОжидаемоеОписаниеОшибки; + ДопСообщениеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки; + Иначе + Параметры = ПараметрыИлиОжидаемоеОписаниеОшибки; + Если Параметры <> Неопределено Тогда + ТипПараметра = ТипЗнч(Параметры); + Если ТипПараметра <> Тип("Массив") Тогда + ВызватьИсключение ("Ожидали, что третьим параметром будет передан массив параметров для метода <"+ИмяМетода+">, а получили другой объект с типом <"+ТипПараметра+">"); + КонецЕсли; + КонецЕсли; + ОжидаемоеОписаниеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки; + КонецЕсли; + + ПараметрыСтрока = ПараметрыСтрокой(Параметры); + + СтрокаВыполнения = "Объект." + ИмяМетода + "(" + ПараметрыСтрока + ")"; + + Попытка + Выполнить(СтрокаВыполнения); + Исключение + ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + Если Найти(ПолученноеОписаниеОшибки, ОжидаемоеОписаниеОшибки) = 0 Тогда + ВызватьОшибкуПроверки("Хотели, чтобы код """+СтрокаВыполнения+""" упал с сообщением об ошибке """+ОжидаемоеОписаниеОшибки+""", а он упал с сообщением """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки)); + КонецЕсли; + Возврат; + КонецПопытки; + + ВызватьОшибкуПроверки("Хотели, чтобы код """+СтрокаВыполнения+""" упал, а он выполнился" + ФорматДСО(ДопСообщениеОшибки)); + +КонецПроцедуры + +// проверка идет через ЗначениеЗаполнено, но мутабельные значение всегда считаем заполненными +&НаКлиенте +Процедура ПроверитьЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = "") Экспорт + Попытка + фЗаполнено = ЗначениеЗаполнено(ПроверяемоеЗначение); + Исключение + Возврат; + КонецПопытки; + Если НЕ фЗаполнено Тогда + ВызватьОшибкуПроверки("Значение ("+ПроверяемоеЗначение+") не заполнено, а ожидалась заполненность" + ФорматДСО(ДопСообщениеОшибки)); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьНеЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = "") Экспорт + СообщениеОшибки = "Значение ("+ПроверяемоеЗначение+") заполнено, а ожидалась незаполненность" + ФорматДСО(ДопСообщениеОшибки); + Попытка + фЗаполнено = ЗначениеЗаполнено(ПроверяемоеЗначение); + Исключение + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецПопытки; + Если фЗаполнено Тогда + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьТип(значение, ТипИлиИмяТипа, ДопСообщениеОшибки = "") Экспорт + Если ТипЗнч(ТипИлиИмяТипа) = Тип("Строка") Тогда + искомыйТип = Тип(ТипИлиИмяТипа); + ИначеЕсли ТипЗнч(ТипИлиИмяТипа) = Тип("Тип") Тогда + искомыйТип = ТипИлиИмяТипа; + Иначе + ВызватьИсключение ("ПроверитьТип: Тип значения параметра ТипИлиИмяТипа должен быть <Тип> или <Строка>, а получили <"+ ТипЗнч(ТипИлиИмяТипа) + ">" + ФорматДСО(ДопСообщениеОшибки)); + КонецЕсли; + Если ТипЗнч(значение) <> искомыйТип Тогда + ВызватьОшибкуПроверки("Типом значения <"+значение+"> является <"+ТипЗнч(значение)+">, а ожидался тип <"+ТипИлиИмяТипа+">."+ФорматДСО(ДопСообщениеОшибки)); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьВхождение(строка, подстрокаПоиска, ДопСообщениеОшибки = "") Экспорт + Если Найти(строка, подстрокаПоиска) = 0 Тогда + ПредставлениеСтроки = "<"+строка+">"; + Если СтрДлина(строка) > 20 Тогда + ПредставлениеСтроки = ПредставлениеСтроки + Символы.ПС; + КонецЕсли; + ПредставлениеПодСтроки = "<"+подстрокаПоиска+">"; + Если СтрДлина(подстрокаПоиска) > 20 Тогда + ПредставлениеПодСтроки = ПредставлениеПодСтроки + Символы.ПС; + КонецЕсли; + СообщениеОшибки = "Искали в "+ПредставлениеСтроки+" подстроку "+ПредставлениеПодСтроки+", но не нашли." + ФорматДСО(ДопСообщениеОшибки); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; +КонецПроцедуры + +//Коллекция - Массив, Структура, Соответствие, ФиксированныйМассив, ФиксированнаяСтруктура, ФиксированноеСоответствие, СписокЗначений +&НаКлиенте +Процедура ПроверитьВхождениеВКоллекцию(Элемент, Коллекция, ДопСообщениеОшибки = "") Экспорт + Нашли = Неопределено; + ТипКоллекции = ТипЗнч(Коллекция); + Если ТипКоллекции = Тип("Массив") или ТипКоллекции = Тип("ФиксированныйМассив") Тогда + Нашли = Коллекция.Найти(Элемент) <> Неопределено; + ИначеЕсли ТипКоллекции = Тип("Структура") или ТипКоллекции = Тип("Соответствие") + или ТипКоллекции = Тип("ФиксированнаяСтруктура") или ТипКоллекции = Тип("ФиксированноеСоответствие") Тогда + Для каждого КлючЗначение Из Коллекция Цикл + Нашли = КлючЗначение.Значение = Элемент; + Если Нашли Тогда + Прервать; + КонецЕсли; + КонецЦикла; + ИначеЕсли ТипКоллекции = Тип("СписокЗначений") Тогда + Нашли = Коллекция.НайтиПоЗначению(Элемент) <> Неопределено; + КонецЕсли; + Если Нашли = Неопределено Тогда + СообщениеОшибки = "Утверждение ""ПроверитьВхождениеВКоллекцию"" не умеет работать с типом коллекции <"+ТипКоллекции+">." + ФорматДСО(ДопСообщениеОшибки); + ВызватьИсключение СообщениеОшибки; + КонецЕсли; + Если Не Нашли Тогда + СообщениеОшибки = "Не нашли элемент <"+Элемент+"> в коллекции, а хотели, чтобы он был в коллекции." + ФорматДСО(ДопСообщениеОшибки); + ВызватьОшибкуПроверки(СообщениеОшибки); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьВалидностьЗапросаСКД(ТекстЗапроса, ДопСообщениеОшибки = "") Экспорт + ПроверитьВалидностьЗапросаСКДНаСервере(ТекстЗапроса, ДопСообщениеОшибки); +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Ложь, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки = Ложь, Знач ДопСообщениеОшибки = "") Экспорт + ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениямСервер(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки, ДопСообщениеОшибки); +КонецПроцедуры + +&НаСервере +Процедура ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениямСервер(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Ложь, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки = Ложь, Знач ДопСообщениеОшибки = "") Экспорт + Объект().ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки, ДопСообщениеОшибки); +КонецПроцедуры + +&НаКлиенте +Процедура ВызватьОшибкуПроверки(СообщениеОшибки) + + Префикс = "[" + СтатусыРезультатаТестирования.ОшибкаПроверки + "]"; + ВызватьИсключение Префикс + " " + СообщениеОшибки; + +КонецПроцедуры + +&НаКлиенте +Процедура ПропуститьТест(Знач Сообщение = "") Экспорт + + Префикс = "[" + СтатусыРезультатаТестирования.ТестПропущен + "]"; + Если ПустаяСтрока(Сообщение) Тогда + Сообщение = НСтр("ru = 'Тест пропущен'"); + КонецЕсли; + ВызватьИсключение Префикс + " " + Сообщение; + +КонецПроцедуры + +&НаСервере +Процедура ПроверитьВалидностьЗапросаСКДНаСервере(ТекстЗапроса, ДопСообщениеОшибки = "") + Объект().ПроверитьВалидностьЗапросаСКД(ТекстЗапроса, ДопСообщениеОшибки); +КонецПроцедуры +// } + +&НаКлиенте +Функция ФорматДСО(ДопСообщениеОшибки) + Если ДопСообщениеОшибки = "" Тогда + Возврат ""; + КонецЕсли; + + Возврат Символы.ПС + ДопСообщениеОшибки; +КонецФункции + +&НаСервере +Функция Объект() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции + +СтатусыРезультатаТестирования = Новый Структура; +СтатусыРезультатаТестирования.Вставить("ОшибкаПроверки", "Failed"); +СтатусыРезультатаТестирования.Вставить("НеизвестнаяОшибка", "Broken"); +СтатусыРезультатаТестирования.Вставить("ТестПропущен", "Pending"); +СтатусыРезультатаТестирования = Новый ФиксированнаяСтруктура(СтатусыРезультатаТестирования); diff --git "a/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index cadd69af..00000000 --- "a/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ -&НаКлиенте Перем СтатусыРезультатаТестирования; &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Возврат Объект().ОписаниеПлагина(ВозможныеТипыПлагинов); КонецФункции // { функции утверждения- проверки значений. &НаКлиенте Процедура Проверить(_Истина, ДопСообщениеОшибки = "") Экспорт Если Не _Истина Тогда СообщениеОшибки = "Переданный параметр ("+Формат(_Истина, "БЛ=ложь; БИ=истина")+") не является Истиной, а хотели, чтобы являлся." + ФорматДСО(ДопСообщениеОшибки); ВызватьОшибкуПроверки(СообщениеОшибки); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПроверитьИстину(_Истина, ДопСообщениеОшибки = "") Экспорт Проверить(_Истина, ДопСообщениеОшибки); КонецПроцедуры &НаКлиенте Процедура ПроверитьЛожь(_Ложь, ДопСообщениеОшибки = "") Экспорт Если _Ложь Тогда СообщениеОшибки = "Переданный параметр ("+Формат(_Ложь, "БЛ=ложь; БИ=истина")+") не является Ложью, а хотели, чтобы являлся." + ФорматДСО(ДопСообщениеОшибки); ВызватьОшибкуПроверки(СообщениеОшибки); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПроверитьДату(_Дата, _Период, ДопСообщениеОшибки = "") Экспорт Если _Дата < _Период.ДатаНачала или _Дата > _Период.ДатаОкончания Тогда представление = ПредставлениеПериода(_Период.ДатаНачала, _Период.ДатаОкончания, "ФП = Истина"); СообщениеОшибки = "Переданный параметр ("+Формат(_Дата, "ДФ='dd.MM.yyyy HH:mm:ss'")+") не входит в период "+представление+", а хотели, чтобы являлся." + ФорматДСО(ДопСообщениеОшибки); ВызватьОшибкуПроверки(СообщениеОшибки); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПроверитьРавенствоДатСТочностью2Секунды(_Дата, _Дата2, ДопСообщениеОшибки = "") Экспорт Если _Дата < _Дата2-2 или _Дата > _Дата2+2 Тогда СообщениеОшибки = "Переданная дата ("+Формат(_Дата, "ДФ='dd.MM.yyyy HH:mm:ss'")+") не равна дате ("+Формат(_Дата2, "ДФ='dd.MM.yyyy HH:mm:ss'")+") с точностью до 2-х секунд, а хотели, чтобы они равнялись." + ФорматДСО(ДопСообщениеОшибки); ВызватьОшибкуПроверки(СообщениеОшибки); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПроверитьРавенство(_1, _2, ДопСообщениеОшибки = "") Экспорт Если _1 <> _2 Тогда СообщениеОшибки = "Сравниваемые значения ("+_1+"; "+_2+") не равны, а хотели, чтобы были равны." + ФорматДСО(ДопСообщениеОшибки); ВызватьОшибкуПроверки(СообщениеОшибки); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПроверитьНеРавенство(_1, _2, ДопСообщениеОшибки = "") Экспорт Если _1 = _2 Тогда СообщениеОшибки = "Сравниваемые значения ("+_1+"; "+_2+") равны, а хотели, чтобы были не равны." + ФорматДСО(ДопСообщениеОшибки); ВызватьОшибкуПроверки(СообщениеОшибки); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПроверитьБольше(_Больше, _Меньше, ДопСообщениеОшибки = "") Экспорт Если _Больше <= _Меньше Тогда СообщениеОшибки = "Первый параметр ("+_Больше+") меньше или равен второму ("+_Меньше+") а хотели, чтобы был больше." + ФорматДСО(ДопСообщениеОшибки); ВызватьОшибкуПроверки(СообщениеОшибки); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПроверитьБольшеИлиРавно(_Больше, _Меньше, ДопСообщениеОшибки = "") Экспорт Если _Больше < _Меньше Тогда СообщениеОшибки = "Первый параметр ("+_Больше+") меньше второго ("+_Меньше+") а хотели, чтобы был больше или равен." + ФорматДСО(ДопСообщениеОшибки); ВызватьОшибкуПроверки(СообщениеОшибки); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПроверитьМеньше(проверяемоеЗначение1, проверяемоеЗначение2, СообщениеОбОшибке = "") Экспорт Если проверяемоеЗначение1 >= проверяемоеЗначение2 Тогда СообщениеОшибки = "Значение <"+проверяемоеЗначение1+"> больше или равно, чем <"+проверяемоеЗначение2+">, а ожидалось меньше"+ ФорматДСО(СообщениеОбОшибке); ВызватьОшибкуПроверки(СообщениеОшибки) КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПроверитьМеньшеИлиРавно(проверяемоеЗначение1, проверяемоеЗначение2, СообщениеОбОшибке = "") Экспорт Если проверяемоеЗначение1 > проверяемоеЗначение2 Тогда СообщениеОшибки = "Значение <"+проверяемоеЗначение1+"> больше, чем <"+проверяемоеЗначение2+">, а ожидалось меньше или равно"+ ФорматДСО(СообщениеОбОшибке); ВызватьОшибкуПроверки(СообщениеОшибки) КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПроверитьВыполнилось(Знач СтрокаАлгоритм, ПараметрыИлиДопСообщениеОшибки = Неопределено, Знач ДопСообщениеОшибки = "") Экспорт Перем Параметры; Если ТипЗнч(ПараметрыИлиДопСообщениеОшибки) = Тип("Строка") Тогда ДопСообщениеОшибки = ПараметрыИлиДопСообщениеОшибки; Иначе Параметры = ПараметрыИлиДопСообщениеОшибки; КонецЕсли; Попытка Выполнить(СтрокаАлгоритм); Исключение ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); СообщениеОшибки = "Хотели, чтобы алгоритм """+СтрокаАлгоритм+""" выполнился, а он упал с ошибкой """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки); ВызватьОшибкуПроверки(СообщениеОшибки); КонецПопытки; КонецПроцедуры &НаКлиенте Процедура ПроверитьМетодВыполнился(Объект, Знач ИмяМетода, ПараметрыИлиДопСообщениеОшибки = Неопределено, Знач ДопСообщениеОшибки = "") Экспорт Перем Параметры; Если ТипЗнч(ПараметрыИлиДопСообщениеОшибки) = Тип("Строка") Тогда ДопСообщениеОшибки = ПараметрыИлиДопСообщениеОшибки; Иначе Параметры = ПараметрыИлиДопСообщениеОшибки; Если Параметры <> Неопределено Тогда ТипПараметра = ТипЗнч(Параметры); Если ТипПараметра <> Тип("Массив") Тогда ВызватьИсключение ("Ожидали, что вторым параметром будет передан массив параметров для метода <"+ИмяМетода+">, а получили другой объект с типом <"+ТипПараметра+">"); КонецЕсли; КонецЕсли; КонецЕсли; ПараметрыСтрока = ПараметрыСтрокой(Параметры); СтрокаВыполнения = "Объект." + ИмяМетода + "(" + ПараметрыСтрока + ")"; Попытка Выполнить(СтрокаВыполнения); Исключение ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); СообщениеОшибки = "Хотели, чтобы код """+СтрокаВыполнения+""" выполнился, а он упал с ошибкой """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки); ВызватьОшибкуПроверки(СообщениеОшибки); КонецПопытки; КонецПроцедуры &НаКлиенте Функция ПараметрыСтрокой(Параметры) ПараметрыСтрока = ""; Если ЗначениеЗаполнено(Параметры) Тогда Для Индекс = 0 По Параметры.ВГраница() Цикл ПараметрыСтрока = ПараметрыСтрока + ", Параметры[" + Формат(Индекс, "ЧН=0; ЧГ=0") + "]"; КонецЦикла; КонецЕсли; Возврат Сред(ПараметрыСтрока, 3); КонецФункции &НаКлиенте Процедура ПроверитьНеВыполнилось(Знач СтрокаАлгоритм, ПараметрыИлиОжидаемоеОписаниеОшибки, Знач ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки = "", Знач ДопСообщениеОшибки = "") Экспорт Перем Параметры, ОжидаемоеОписаниеОшибки; Если ТипЗнч(ПараметрыИлиОжидаемоеОписаниеОшибки) = Тип("Строка") Тогда ОжидаемоеОписаниеОшибки = ПараметрыИлиОжидаемоеОписаниеОшибки; ДопСообщениеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки; Иначе Параметры = ПараметрыИлиОжидаемоеОписаниеОшибки; ОжидаемоеОписаниеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки; КонецЕсли; Попытка Выполнить(СтрокаАлгоритм); Исключение ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); Если Найти(ПолученноеОписаниеОшибки, ОжидаемоеОписаниеОшибки) = 0 Тогда ВызватьОшибкуПроверки("Хотели, чтобы алгоритм """+СтрокаАлгоритм+""" упал с сообщением об ошибке """+ОжидаемоеОписаниеОшибки+""", а он упал с сообщением """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки)); КонецЕсли; Возврат; КонецПопытки; ВызватьОшибкуПроверки("Хотели, чтобы алгоритм """+СтрокаАлгоритм+""" упал, а он выполнился" + ФорматДСО(ДопСообщениеОшибки)); КонецПроцедуры &НаКлиенте Процедура ПроверитьМетодНеВыполнился(Объект, ИмяМетода, ПараметрыИлиОжидаемоеОписаниеОшибки, Знач ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки = "", Знач ДопСообщениеОшибки = "") Экспорт Перем Параметры, ОжидаемоеОписаниеОшибки; Если ТипЗнч(ПараметрыИлиОжидаемоеОписаниеОшибки) = Тип("Строка") Тогда ОжидаемоеОписаниеОшибки = ПараметрыИлиОжидаемоеОписаниеОшибки; ДопСообщениеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки; Иначе Параметры = ПараметрыИлиОжидаемоеОписаниеОшибки; Если Параметры <> Неопределено Тогда ТипПараметра = ТипЗнч(Параметры); Если ТипПараметра <> Тип("Массив") Тогда ВызватьИсключение ("Ожидали, что третьим параметром будет передан массив параметров для метода <"+ИмяМетода+">, а получили другой объект с типом <"+ТипПараметра+">"); КонецЕсли; КонецЕсли; ОжидаемоеОписаниеОшибки = ОжидаемоеОписаниеОшибкиИлиДопСообщениеОшибки; КонецЕсли; ПараметрыСтрока = ПараметрыСтрокой(Параметры); СтрокаВыполнения = "Объект." + ИмяМетода + "(" + ПараметрыСтрока + ")"; Попытка Выполнить(СтрокаВыполнения); Исключение ПолученноеОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); Если Найти(ПолученноеОписаниеОшибки, ОжидаемоеОписаниеОшибки) = 0 Тогда ВызватьОшибкуПроверки("Хотели, чтобы код """+СтрокаВыполнения+""" упал с сообщением об ошибке """+ОжидаемоеОписаниеОшибки+""", а он упал с сообщением """+ПолученноеОписаниеОшибки+"""." + ФорматДСО(ДопСообщениеОшибки)); КонецЕсли; Возврат; КонецПопытки; ВызватьОшибкуПроверки("Хотели, чтобы код """+СтрокаВыполнения+""" упал, а он выполнился" + ФорматДСО(ДопСообщениеОшибки)); КонецПроцедуры // проверка идет через ЗначениеЗаполнено, но мутабельные значение всегда считаем заполненными &НаКлиенте Процедура ПроверитьЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = "") Экспорт Попытка фЗаполнено = ЗначениеЗаполнено(ПроверяемоеЗначение); Исключение Возврат; КонецПопытки; Если НЕ фЗаполнено Тогда ВызватьОшибкуПроверки("Значение ("+ПроверяемоеЗначение+") не заполнено, а ожидалась заполненность" + ФорматДСО(ДопСообщениеОшибки)); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПроверитьНеЗаполненность(ПроверяемоеЗначение, ДопСообщениеОшибки = "") Экспорт СообщениеОшибки = "Значение ("+ПроверяемоеЗначение+") заполнено, а ожидалась незаполненность" + ФорматДСО(ДопСообщениеОшибки); Попытка фЗаполнено = ЗначениеЗаполнено(ПроверяемоеЗначение); Исключение ВызватьОшибкуПроверки(СообщениеОшибки); КонецПопытки; Если фЗаполнено Тогда ВызватьОшибкуПроверки(СообщениеОшибки); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПроверитьТип(значение, ТипИлиИмяТипа, ДопСообщениеОшибки = "") Экспорт Если ТипЗнч(ТипИлиИмяТипа) = Тип("Строка") Тогда искомыйТип = Тип(ТипИлиИмяТипа); ИначеЕсли ТипЗнч(ТипИлиИмяТипа) = Тип("Тип") Тогда искомыйТип = ТипИлиИмяТипа; Иначе ВызватьИсключение ("ПроверитьТип: Тип значения параметра ТипИлиИмяТипа должен быть <Тип> или <Строка>, а получили <"+ ТипЗнч(ТипИлиИмяТипа) + ">" + ФорматДСО(ДопСообщениеОшибки)); КонецЕсли; Если ТипЗнч(значение) <> искомыйТип Тогда ВызватьОшибкуПроверки("Типом значения <"+значение+"> является <"+ТипЗнч(значение)+">, а ожидался тип <"+ТипИлиИмяТипа+">."+ФорматДСО(ДопСообщениеОшибки)); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПроверитьВхождение(строка, подстрокаПоиска, ДопСообщениеОшибки = "") Экспорт Если Найти(строка, подстрокаПоиска) = 0 Тогда ПредставлениеСтроки = "<"+строка+">"; Если СтрДлина(строка) > 20 Тогда ПредставлениеСтроки = ПредставлениеСтроки + Символы.ПС; КонецЕсли; ПредставлениеПодСтроки = "<"+подстрокаПоиска+">"; Если СтрДлина(подстрокаПоиска) > 20 Тогда ПредставлениеПодСтроки = ПредставлениеПодСтроки + Символы.ПС; КонецЕсли; СообщениеОшибки = "Искали в "+ПредставлениеСтроки+" подстроку "+ПредставлениеПодСтроки+", но не нашли." + ФорматДСО(ДопСообщениеОшибки); ВызватьОшибкуПроверки(СообщениеОшибки); КонецЕсли; КонецПроцедуры //Коллекция - Массив, Структура, Соответствие, ФиксированныйМассив, ФиксированнаяСтруктура, ФиксированноеСоответствие, СписокЗначений &НаКлиенте Процедура ПроверитьВхождениеВКоллекцию(Элемент, Коллекция, ДопСообщениеОшибки = "") Экспорт Нашли = Неопределено; ТипКоллекции = ТипЗнч(Коллекция); Если ТипКоллекции = Тип("Массив") или ТипКоллекции = Тип("ФиксированныйМассив") Тогда Нашли = Коллекция.Найти(Элемент) <> Неопределено; ИначеЕсли ТипКоллекции = Тип("Структура") или ТипКоллекции = Тип("Соответствие") или ТипКоллекции = Тип("ФиксированнаяСтруктура") или ТипКоллекции = Тип("ФиксированноеСоответствие") Тогда Для каждого КлючЗначение Из Коллекция Цикл Нашли = КлючЗначение.Значение = Элемент; Если Нашли Тогда Прервать; КонецЕсли; КонецЦикла; ИначеЕсли ТипКоллекции = Тип("СписокЗначений") Тогда Нашли = Коллекция.НайтиПоЗначению(Элемент) <> Неопределено; КонецЕсли; Если Нашли = Неопределено Тогда СообщениеОшибки = "Утверждение ""ПроверитьВхождениеВКоллекцию"" не умеет работать с типом коллекции <"+ТипКоллекции+">." + ФорматДСО(ДопСообщениеОшибки); ВызватьИсключение СообщениеОшибки; КонецЕсли; Если Не Нашли Тогда СообщениеОшибки = "Не нашли элемент <"+Элемент+"> в коллекции, а хотели, чтобы он был в коллекции." + ФорматДСО(ДопСообщениеОшибки); ВызватьОшибкуПроверки(СообщениеОшибки); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПроверитьВалидностьЗапросаСКД(ТекстЗапроса, ДопСообщениеОшибки = "") Экспорт ПроверитьВалидностьЗапросаСКДНаСервере(ТекстЗапроса, ДопСообщениеОшибки); КонецПроцедуры &НаКлиенте Процедура ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Ложь, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки = Ложь, Знач ДопСообщениеОшибки = "") Экспорт ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениямСервер(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки, ДопСообщениеОшибки); КонецПроцедуры &НаСервере Процедура ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениямСервер(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Ложь, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки = Ложь, Знач ДопСообщениеОшибки = "") Экспорт Объект().ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки, ДопСообщениеОшибки); КонецПроцедуры &НаКлиенте Процедура ВызватьОшибкуПроверки(СообщениеОшибки) Префикс = "[" + СтатусыРезультатаТестирования.ОшибкаПроверки + "]"; ВызватьИсключение Префикс + " " + СообщениеОшибки; КонецПроцедуры &НаКлиенте Процедура ПропуститьТест(Знач Сообщение = "") Экспорт Префикс = "[" + СтатусыРезультатаТестирования.ТестПропущен + "]"; Если ПустаяСтрока(Сообщение) Тогда Сообщение = НСтр("ru = 'Тест пропущен'"); КонецЕсли; ВызватьИсключение Префикс + " " + Сообщение; КонецПроцедуры &НаСервере Процедура ПроверитьВалидностьЗапросаСКДНаСервере(ТекстЗапроса, ДопСообщениеОшибки = "") Объект().ПроверитьВалидностьЗапросаСКД(ТекстЗапроса, ДопСообщениеОшибки); КонецПроцедуры // } &НаКлиенте Функция ФорматДСО(ДопСообщениеОшибки) Если ДопСообщениеОшибки = "" Тогда Возврат ""; КонецЕсли; Возврат Символы.ПС + ДопСообщениеОшибки; КонецФункции &НаСервере Функция Объект() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции СтатусыРезультатаТестирования = Новый Структура; СтатусыРезультатаТестирования.Вставить("ОшибкаПроверки", "Failed"); СтатусыРезультатаТестирования.Вставить("НеизвестнаяОшибка", "Broken"); СтатусыРезультатаТестирования.Вставить("ТестПропущен", "Pending"); СтатусыРезультатаТестирования = Новый ФиксированнаяСтруктура(СтатусыРезультатаТестирования); \ No newline at end of file diff --git "a/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/ObjectModule.txt" "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/ObjectModule.bsl" similarity index 100% rename from "src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/ObjectModule.txt" rename to "src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/ObjectModule.bsl" diff --git "a/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/maps.txt" "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/maps.txt" index 0f538c80..c6881d9f 100644 --- "a/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/maps.txt" +++ "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/maps.txt" @@ -1 +1 @@ -Form\Форма\Форма.txt-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 395) +Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 395) diff --git "a/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/renames.txt" "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/renames.txt" index 31723e1f..f90a2039 100644 --- "a/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/renames.txt" +++ "b/src/Plugins/\320\221\320\260\320\267\320\276\320\262\321\213\320\265\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217/renames.txt" @@ -2,7 +2,7 @@ 4e8e1a4a-a947-419b-95c8-58a411e3ffa4-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4 4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info-->und\908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info -908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.txt +908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.bsl copyinfo-->und\copyinfo root-->und\root version-->und\version diff --git "a/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..c8ecf289 --- /dev/null +++ "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,19 @@ + +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции +// } Helpers diff --git "a/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index 9d226060..00000000 --- "a/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ - // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); КонецФункции // } Plugin interface // { Helpers &НаСервере Функция ЭтотОбъектНаСервере() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции // } Helpers \ No newline at end of file diff --git "a/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.txt" "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.bsl" similarity index 100% rename from "src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.txt" rename to "src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/ObjectModule.bsl" diff --git "a/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/maps.txt" "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/maps.txt" index 4962a47e..4ba753df 100644 --- "a/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/maps.txt" +++ "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/maps.txt" @@ -1 +1 @@ -Form\Форма\Форма.txt-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 48) +Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 48) diff --git "a/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/renames.txt" "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/renames.txt" index 31723e1f..f90a2039 100644 --- "a/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/renames.txt" +++ "b/src/Plugins/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213/renames.txt" @@ -2,7 +2,7 @@ 4e8e1a4a-a947-419b-95c8-58a411e3ffa4-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4 4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info-->und\908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info -908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.txt +908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.bsl copyinfo-->und\copyinfo root-->und\root version-->und\version diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..9f00ea34 --- /dev/null +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,44 @@ + +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +// { Report generator interface +&НаКлиенте +Функция СоздатьОтчет(КонтекстЯдра, РезультатыТестирования) Экспорт + Объект.ТипыУзловДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов").Объект.ТипыУзловДереваТестов; + Объект.СостоянияТестов = КонтекстЯдра.Объект.СостоянияТестов; + Возврат СоздатьОтчетНаСервере(РезультатыТестирования); +КонецФункции + +&НаСервере +Функция СоздатьОтчетНаСервере(РезультатыТестирования) + Возврат ЭтотОбъектНаСервере().СоздатьОтчетНаСервере(РезультатыТестирования); +КонецФункции + +&НаКлиенте +Процедура Показать(Отчет) Экспорт + Отчет.Показать(); +КонецПроцедуры + +&НаКлиенте +Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт + Отчет.Записать(ПолныйПутьФайла); +КонецПроцедуры +// } Report generator interface + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции +// } Helpers + diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index 255eebbd..00000000 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ - // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); КонецФункции // } Plugin interface // { Report generator interface &НаКлиенте Функция СоздатьОтчет(КонтекстЯдра, РезультатыТестирования) Экспорт Объект.ТипыУзловДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов").Объект.ТипыУзловДереваТестов; Объект.СостоянияТестов = КонтекстЯдра.Объект.СостоянияТестов; Возврат СоздатьОтчетНаСервере(РезультатыТестирования); КонецФункции &НаСервере Функция СоздатьОтчетНаСервере(РезультатыТестирования) Возврат ЭтотОбъектНаСервере().СоздатьОтчетНаСервере(РезультатыТестирования); КонецФункции &НаКлиенте Процедура Показать(Отчет) Экспорт Отчет.Показать(); КонецПроцедуры &НаКлиенте Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт Отчет.Записать(ПолныйПутьФайла); КонецПроцедуры // } Report generator interface // { Helpers &НаСервере Функция ЭтотОбъектНаСервере() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции // } Helpers \ No newline at end of file diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/ObjectModule.txt" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/ObjectModule.bsl" similarity index 100% rename from "src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/ObjectModule.txt" rename to "src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/ObjectModule.bsl" diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/maps.txt" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/maps.txt" index d21556a1..b9002f0c 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/maps.txt" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/maps.txt" @@ -1,2 +1,2 @@ -Form\Форма\Форма.txt-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 73) +Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 73) Макеты\СхемаJUnit4.txt-->00f1e100-3117-4bea-8be0-1a49b1eccdd9.0 diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/renames.txt" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/renames.txt" index 0449022b..9193eba7 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/renames.txt" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/renames.txt" @@ -4,7 +4,7 @@ 4e8e1a4a-a947-419b-95c8-58a411e3ffa4-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4 4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info-->und\908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info -908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.txt +908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.bsl copyinfo-->und\copyinfo root-->und\root version-->und\version diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..793020bf --- /dev/null +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,46 @@ + +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +// { Report generator interface +&НаКлиенте +Функция СоздатьОтчет(КонтекстЯдра, РезультатыТестирования) Экспорт + Объект.ТипыУзловДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов").Объект.ТипыУзловДереваТестов; + Объект.СостоянияТестов = КонтекстЯдра.Объект.СостоянияТестов; + Возврат СоздатьОтчетНаСервере(РезультатыТестирования); +КонецФункции + +&НаСервере +Функция СоздатьОтчетНаСервере(РезультатыТестирования) + Возврат ЭтотОбъектНаСервере().СоздатьОтчетНаСервере(РезультатыТестирования); +КонецФункции + +&НаКлиенте +Процедура Показать(Отчет) Экспорт + Если Отчет <> Неопределено Тогда + ЗаголовокОкнаОтчета = НСтр("ru = 'Отчет об автоматическом тестировании'"); + Отчет.Показать(ЗаголовокОкнаОтчета); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт + ВызватьИсключение "Метод не реализован"; +КонецПроцедуры +// } Report generator interface + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции +// } Helpers diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index 80fc6595..00000000 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ - // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); КонецФункции // } Plugin interface // { Report generator interface &НаКлиенте Функция СоздатьОтчет(КонтекстЯдра, РезультатыТестирования) Экспорт Объект.ТипыУзловДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов").Объект.ТипыУзловДереваТестов; Объект.СостоянияТестов = КонтекстЯдра.Объект.СостоянияТестов; Возврат СоздатьОтчетНаСервере(РезультатыТестирования); КонецФункции &НаСервере Функция СоздатьОтчетНаСервере(РезультатыТестирования) Возврат ЭтотОбъектНаСервере().СоздатьОтчетНаСервере(РезультатыТестирования); КонецФункции &НаКлиенте Процедура Показать(Отчет) Экспорт Если Отчет <> Неопределено Тогда ЗаголовокОкнаОтчета = НСтр("ru = 'Отчет об автоматическом тестировании'"); Отчет.Показать(ЗаголовокОкнаОтчета); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт ВызватьИсключение "Метод не реализован"; КонецПроцедуры // } Report generator interface // { Helpers &НаСервере Функция ЭтотОбъектНаСервере() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции // } Helpers \ No newline at end of file diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/ObjectModule.txt" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/ObjectModule.bsl" similarity index 98% rename from "src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/ObjectModule.txt" rename to "src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/ObjectModule.bsl" index 6f66ad23..4be4b504 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/ObjectModule.txt" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/ObjectModule.bsl" @@ -57,7 +57,7 @@ КонецЦикла; Иначе ОбластьЭлемент = МакетОтчетТестирования.ПолучитьОбласть("Элемент"); - ОбластьЭлемент.Параметры.ИмяМетода = РезультатыТестирования.ИмяМетода; + ОбластьЭлемент.Параметры.ИмяМетода = РезультатыТестирования.Представление; ОбластьЭлемент.Параметры.Путь = РезультатыТестирования.Путь; ОбластьЭлемент.Параметры.Сообщение = РезультатыТестирования.Сообщение; ОбластьЭлемент.Области.Элемент.Отступ = Уровень * 2; diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/maps.txt" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/maps.txt" index 53c5b722..d4f72c18 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/maps.txt" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/maps.txt" @@ -1,2 +1,2 @@ -Form\Форма\Форма.txt-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 75) +Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 75) Макеты\ОтчетТестирования.mxl-->e723b36e-7faa-4345-bf5b-763f60cd5663.0 diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/renames.txt" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/renames.txt" index 361c0735..19427328 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/renames.txt" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/renames.txt" @@ -2,7 +2,7 @@ 4e8e1a4a-a947-419b-95c8-58a411e3ffa4-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4 4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info-->und\908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info -908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.txt +908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.bsl copyinfo-->und\copyinfo e723b36e-7faa-4345-bf5b-763f60cd5663-->und\e723b36e-7faa-4345-bf5b-763f60cd5663 e723b36e-7faa-4345-bf5b-763f60cd5663.0-->und\e723b36e-7faa-4345-bf5b-763f60cd5663.0 diff --git "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/und/versions" "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/und/versions" index 934b4bea..2209dc20 100644 --- "a/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/und/versions" +++ "b/src/Plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/und/versions" @@ -1 +1 @@ -{1,11,"",1bfb7b64-d033-4178-b6c3-4b15b36f6d12,"versions",0dc0ce19-c5f8-4ea4-b2b5-44df41a1aef5,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",a91622c4-36f4-4c1d-82af-26e4645b71a5,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",62ae4793-1447-48e3-ad39-0e500237a0c7,"root",c154d79e-9e76-4a02-b1b0-d31a0e2e3f00,"e723b36e-7faa-4345-bf5b-763f60cd5663",2837fca9-157f-4865-8ff5-9b8271c051ab,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",c029b102-b5bd-446f-b6dc-414993458897,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",4cc26bd4-c62a-45a3-9b4c-08c4148dc51c,"version",5164c308-29dd-42e7-b40e-3838593f7527,"e723b36e-7faa-4345-bf5b-763f60cd5663.0",43d59dd4-cff5-497d-a55b-b7a1f83bc259,"copyinfo",17b0b2e8-e40e-4036-baf3-50571f0b0164} \ No newline at end of file +{1,11,"",ad4da44d-18db-4044-bcb6-26f2c8b7ceb5,"versions",3c865e0a-0b79-4972-8ced-503e27d4890c,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",fd7e0723-7b45-4de8-9d83-c3bb7f0cc5cf,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",b7fe60ea-1adf-41eb-9534-0bfa4b7bb079,"root",81927546-aaf0-4fc4-9d3e-4ce804696878,"e723b36e-7faa-4345-bf5b-763f60cd5663",7cc3d945-c911-47a6-87e8-258524a203f0,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",9df62da8-0951-4c81-a81f-483ae5a5386e,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",efd8d0f6-a0ad-4d35-91bf-8ad5cac4fc9d,"version",5634d453-9b18-462b-ab56-ee9bb15029a3,"e723b36e-7faa-4345-bf5b-763f60cd5663.0",2883c5af-b7b3-4298-81f7-72c9d2c99e57,"copyinfo",e0ca2c81-33e1-4fdc-a387-a461d9aae2b1} \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..78762bfe --- /dev/null +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,386 @@ +&НаКлиенте +Перем ПостроительДереваТестов; +&НаКлиенте +Перем ЗагружаемыйПуть; + +&НаКлиенте +Перем КонтейнерТестов; +&НаКлиенте +Перем ТекущаяГруппа; + +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +// { Loader interface +&НаКлиенте +Функция ВыбратьПутьИнтерактивно(ТекущийПуть = "") Экспорт + Перем ВыбранныйПуть; + + ПараметрыОткрытия = Новый Структура("ОтборПоИмениТеста", ""); + ИмяФормыВыбораПодсистемыУФ = СтрЗаменить(ЭтаФорма.ИмяФормы, "УправляемаяФорма", "ФормаВыбораПодсистемУФ"); + ВыбранныйПуть = ОткрытьФормуМодально(ИмяФормыВыбораПодсистемыУФ, ПараметрыОткрытия, ЭтаФорма); + + Возврат ВыбранныйПуть; +КонецФункции + +&НаКлиенте +Функция Загрузить(КонтекстЯдра, Путь) Экспорт + ПолноеИмяБраузераТестов = КонтекстЯдра.Объект.ПолноеИмяБраузераТестов; + + СтруктураМетаданных = СтруктураМетаданныхПоПереданномуПути(Путь); + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); + ДеревоТестов = Неопределено; + ОбработатьОбъектМетаданных(СтруктураМетаданных, ДеревоТестов); + Возврат ДеревоТестов; +КонецФункции + +&НаКлиенте +Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт + Перем Контекст; + Если ЭтоПутьККлиентскомуКонтексту(Путь) Тогда + Контекст = ПолучитьКлиентскийКонтекст(КонтекстЯдра, Путь); + Иначе + Контекст = ПолучитьСерверныйКонтекст(КонтекстЯдра, Путь); + КонецЕсли; + + Возврат Контекст; +КонецФункции +// } Loader interface + +&НаКлиенте +Функция ПолучитьКлиентскийКонтекст(КонтекстЯдра, Путь) + ИдентификаторКонтекста = ПолучитьИдентификаторКонтекстаПоПутиНаСервере(Сред(Путь, СтрДлина(ПрефиксПутейСФормами()) + 1)); + ОписаниеКонтекста = ПолучитьФорму("Обработка." + ИдентификаторКонтекста + ".Форма", , ЭтаФорма, Новый УникальныйИдентификатор); + КонтекстЯдра.ПолучитьОписаниеКонтекстаВыполнения(ИдентификаторКонтекста, Истина); + + Возврат ОписаниеКонтекста; +КонецФункции + +&НаКлиенте +Функция ПолучитьСерверныйКонтекст(КонтекстЯдра, Путь) + ИдентификаторКонтекста = ПолучитьИдентификаторКонтекстаПоПутиНаСервере(Путь); + ОписаниеКонтекста = КонтекстЯдра.ПолучитьОписаниеКонтекстаВыполнения(ИдентификаторКонтекста, Истина); + + Возврат ОписаниеКонтекста; +КонецФункции + +&НаСервере +Функция СтруктураМетаданныхПоПереданномуПути(Путь) + ОбъектМетаданных = ЭтотОбъектНаСервере().ПолучитьОбъектМетаданныхПоПути(Путь); + Если ЭтоПодсистема(ОбъектМетаданных.ПолноеИмя()) Тогда + СтруктураМетаданных = СтруктураМетаданныхПодсистемы(ОбъектМетаданных); + Иначе + СтруктураМетаданных = СтрокаДереваМетаданных(ОбъектМетаданных); + КонецЕсли; + Возврат СтруктураМетаданных; +КонецФункции + +&НаСервере +Функция СтруктураМетаданныхПодсистемы(Подсистема) + СтруктураМетаданных = СтрокаДереваМетаданных(Подсистема); + Для Каждого ПодчиненнаяПодсистема Из Подсистема.Подсистемы Цикл + СтруктураМетаданных.Строки.Добавить(СтруктураМетаданныхПодсистемы(ПодчиненнаяПодсистема)); + КонецЦикла; + + Для Каждого ДочернееМетаданное Из Подсистема.Состав цикл + Если Метаданные.Обработки.Найти(ДочернееМетаданное.Имя) <> Неопределено + ИЛИ Метаданные.Отчеты.Найти(ДочернееМетаданное.Имя) <> Неопределено Тогда + СтруктураМетаданныхОбработки = СтрокаДереваМетаданных(ДочернееМетаданное); + СтруктураМетаданных.Строки.Добавить(СтруктураМетаданныхОбработки); + КонецЕсли; + КонецЦикла; + + Возврат СтруктураМетаданных; +КонецФункции + +&НаСервере +Функция СтрокаДереваМетаданных(ОбъектМетаданных) + СтрокаДерева = Новый Структура(); + СтрокаДерева.Вставить("Имя", ОбъектМетаданных.Имя); + СтрокаДерева.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя()); + СтрокаДерева.Вставить("Строки", Новый Массив); + + Возврат СтрокаДерева; +КонецФункции + +&НаКлиенте +Функция ОбработатьОбъектМетаданных(СтруктураМетаданных, ДеревоТестов) + Если ЭтоПодсистема(СтруктураМетаданных.ПолноеИмя) Тогда + Контейнер = ЗагрузитьПодсистему(СтруктураМетаданных, ДеревоТестов); + Иначе + Контейнер = ЗагрузитьОбработку(СтруктураМетаданных, ДеревоТестов); + КонецЕсли; + + Возврат Контейнер; +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ЭтоПодсистема(ПолноеИмяОбъектаМетаданных) + Возврат (Найти(НРег(ПолноеИмяОбъектаМетаданных), НРег("Подсистема")) > 0); +КонецФункции + +&НаКлиенте +Функция ЗагрузитьПодсистему(СтруктураМетаданных, ДеревоТестов) + + Контейнер = ПостроительДереваТестов.СоздатьКонтейнер(СтруктураМетаданных.Имя, ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Подсистема); + Для Каждого ПодчиненноеМетаданное Из СтруктураМетаданных.Строки Цикл + Если ЭтоПодсистема(ПодчиненноеМетаданное.ПолноеИмя) Тогда + ЗагрузитьПодсистему(ПодчиненноеМетаданное, Контейнер); + Иначе + ЗагрузитьОбработку(ПодчиненноеМетаданное, Контейнер); + КонецЕсли; + КонецЦикла; + + Если ДеревоТестов = Неопределено Тогда + ДеревоТестов = Контейнер; + ИначеЕсли Контейнер.Строки.Количество() > 0 Тогда + ДеревоТестов.Строки.Добавить(Контейнер); + КонецЕсли; + +КонецФункции + +&НаКлиенте +Функция ЗагрузитьОбработку(СтруктураМетаданных, ДеревоТестов) + ЗагружаемыйПуть = СтрЗаменить("Метаданные." + СтруктураМетаданных.ПолноеИмя, ".Обработка.", ".Обработки."); + ЗагружаемыйПуть = СтрЗаменить(ЗагружаемыйПуть, ".Отчет.", ".Отчеты."); + Контейнер = ЗагрузитьОбработкуНаСервере(ЗагружаемыйПуть); + КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьОбработкуНаКлиенте(СтруктураМетаданных); + Если КонтейнерСКлиентскимиТестамиОбработки.Строки.Количество() > 0 Тогда + Контейнер.Строки.Добавить(КонтейнерСКлиентскимиТестамиОбработки); + КонецЕсли; + Если ДеревоТестов = Неопределено Тогда + ДеревоТестов = Контейнер; + ИначеЕсли Контейнер.Строки.Количество() > 0 Тогда + ДеревоТестов.Строки.Добавить(Контейнер); + КонецЕсли; + +КонецФункции + +&НаСервере +Функция ЗагрузитьОбработкуНаСервере(Путь) + КонтекстЯдра = ПолучитьКонтекстЯдраНаСервере(); + + ПостроительДереваТестов = КонтекстЯдра.СоздатьОбъектПлагина("ПостроительДереваТестов"); + ЗагрузчикФайла = КонтекстЯдра.СоздатьОбъектПлагина("ЗагрузчикФайла"); + + ДеревоТестов = ЭтотОбъектНаСервере().ЗагрузитьПуть(Путь, ПостроительДереваТестов, ЗагрузчикФайла); + + Возврат ДеревоТестов; +КонецФункции + +&НаКлиенте +Функция ЗагрузитьОбработкуНаКлиенте(СтруктураМетаданных) + ФормаОбработки = ПолучитьФорму(СтруктураМетаданных.ПолноеИмя + ".Форма"); + Попытка + Контейнер = ЗагрузитьТестыВНовомФормате_НаКлиенте(ФормаОбработки); + Исключение + ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + Если ЭтоНовыйФорматОбработки(ТекстОшибки) Тогда + ВызватьИсключение; + Иначе + Контейнер = ЗагрузитьТестыВСтаромФормате_НаКлиенте(ФормаОбработки); + КонецЕсли; + КонецПопытки; + Возврат Контейнер; +КонецФункции + +&НаКлиенте +Функция ЭтоНовыйФорматОбработки(Знач ТекстОшибки) + ЭтоНовыйФорматОбработки = Не ЕстьОшибка_МетодОбъектаНеОбнаружен(ТекстОшибки, "ЗаполнитьНаборТестов"); + + Возврат ЭтоНовыйФорматОбработки; +КонецФункции + +&НаКлиенте +Функция ЗагрузитьТестыВНовомФормате_НаКлиенте(ФормаОбработки) + КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(ПрефиксПутейСФормами() + СтрЗаменить(ЗагружаемыйПуть, "Метаданные.Обработки.", ""), ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма); + ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма); + Результат = КонтейнерТестов; + КонтейнерТестов = Неопределено; + ТекущаяГруппа = Неопределено; + + Возврат Результат; +КонецФункции + +&НаКлиенте +Функция ЗагрузитьТестыВСтаромФормате_НаКлиенте(ФормаОбработки) + Попытка + СписокТестов = ФормаОбработки.ПолучитьСписокТестов(); + Исключение + Описание = ОписаниеОшибки(); + Если Найти(Описание, "Недостаточно фактических параметров") > 0 Тогда + ВызватьИсключение "Старый формат тестов в обработке тестов <"+ЗагружаемыйПуть+">."+Символы.ПС+ + "Метод ПолучитьСписокТестов сейчас не принимает параметров"; + КонецЕсли; + + Если Найти(Описание, "Метод объекта не обнаружен (ПолучитьСписокТестов)") = 0 Тогда + ВызватьИсключение Описание; + КонецЕсли; + КонецПопытки; + СлучайныйПорядокВыполнения = Истина; + Попытка + СлучайныйПорядокВыполнения = ФормаОбработки.РазрешенСлучайныйПорядокВыполненияТестов(); + Исключение + КонецПопытки; + + Контейнер = ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ПрефиксПутейСФормами() + СтрЗаменить(ЗагружаемыйПуть, "Обработка.", ""), ПрефиксПутейСФормами() + ЗагружаемыйПуть, СлучайныйПорядокВыполнения); + Контейнер.ИконкаУзла = ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма; + + Возврат Контейнер; +КонецФункции + +&НаСервере +Функция ПолучитьИдентификаторКонтекстаПоПутиНаСервере(Путь) + ОбъектМетаданных = ЭтотОбъектНаСервере().ПолучитьОбъектМетаданныхПоПути(Путь); + + Возврат ОбъектМетаданных.Имя; +КонецФункции + +&НаСервере +Функция ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения = Истина) + КонтекстЯдра = ПолучитьКонтекстЯдраНаСервере(); + + ПостроительДереваТестов = КонтекстЯдра.СоздатьОбъектПлагина("ПостроительДереваТестов"); + ЗагрузчикФайла = КонтекстЯдра.СоздатьОбъектПлагина("ЗагрузчикФайла"); + + Контейнер = ЭтотОбъектНаСервере().ПолучитьКонтейнерДереваТестовПоСпискуТестов(ПостроительДереваТестов, ЗагрузчикФайла, СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения); + + Возврат Контейнер; +КонецФункции + +&НаКлиенте +Функция ЭтоПутьККлиентскомуКонтексту(Путь) + ПрефиксПутейСФормами = ПрефиксПутейСФормами(); + Результат = (Найти(Путь, ПрефиксПутейСФормами) = 1); + + Возврат Результат; +КонецФункции + +&НаКлиенте +Функция ПрефиксПутейСФормами() + Возврат "УпрФорма # "; +КонецФункции + +// { API нового формата +&НаКлиенте +Процедура СлучайныйПорядокВыполнения() Экспорт + Если ЗначениеЗаполнено(КонтейнерТестов) Тогда + КонтейнерТестов.СлучайныйПорядокВыполнения = Истина; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура СтрогийПорядокВыполнения() Экспорт + Если ЗначениеЗаполнено(КонтейнерТестов) Тогда + КонтейнерТестов.СлучайныйПорядокВыполнения = Ложь; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура НачатьГруппу(Знач ИмяГруппы, Знач СтрогийПорядокВыполнения = Ложь) Экспорт + ТекущаяГруппа = ПостроительДереваТестов.СоздатьКонтейнер(ИмяГруппы, ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Группа); + ТекущаяГруппа.СлучайныйПорядокВыполнения = Не СтрогийПорядокВыполнения; + КонтейнерТестов.Строки.Добавить(ТекущаяГруппа); +КонецПроцедуры + +&НаКлиенте +Функция Добавить(Знач ИмяМетода, Знач Параметры = Неопределено, Знач Представление = "") Экспорт + Элемент = ПостроительДереваТестов.СоздатьЭлемент(ПрефиксПутейСФормами() + ЗагружаемыйПуть, ИмяМетода, Представление); + Если ЗначениеЗаполнено(Параметры) И ТипЗнч(Параметры) = Тип("Массив") Тогда + Элемент.Параметры = Параметры; + КонецЕсли; + Если ЗначениеЗаполнено(ТекущаяГруппа) Тогда + ТекущаяГруппа.Строки.Добавить(Элемент); + Иначе + КонтейнерТестов.Строки.Добавить(Элемент); + КонецЕсли; + + Возврат Элемент; +КонецФункции + +&НаКлиенте +Функция ПараметрыТеста(Знач Парам1, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, Знач Парам4 = Неопределено, Знач Парам5 = Неопределено, Знач Парам6 = Неопределено, Знач Парам7 = Неопределено, Знач Парам8 = Неопределено, Знач Парам9 = Неопределено) Экспорт + ВсеПараметры = Новый Массив; + ВсеПараметры.Добавить(Парам1); + ВсеПараметры.Добавить(Парам2); + ВсеПараметры.Добавить(Парам3); + ВсеПараметры.Добавить(Парам4); + ВсеПараметры.Добавить(Парам5); + ВсеПараметры.Добавить(Парам6); + ВсеПараметры.Добавить(Парам7); + ВсеПараметры.Добавить(Парам8); + ВсеПараметры.Добавить(Парам9); + + ИндексСПоследнимПараметром = 0; + Для Сч = 0 По ВсеПараметры.ВГраница() Цикл + Индекс = ВсеПараметры.ВГраница() - Сч; + Если ВсеПараметры[Индекс] <> Неопределено Тогда + ИндексСПоследнимПараметром = Индекс; + Прервать; + КонецЕсли; + КонецЦикла; + + ПараметрыТеста = Новый Массив; + Для Сч = 0 По ИндексСПоследнимПараметром Цикл + ПараметрыТеста.Добавить(ВсеПараметры[Сч]); + КонецЦикла; + + Возврат ПараметрыТеста; +КонецФункции +// } API нового формата + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции + +&НаКлиенте +Функция ЕстьОшибка_МетодОбъектаНеОбнаружен(Знач ТекстОшибки, Знач ИмяМетода) + Результат = Ложь; + Если Найти(текстОшибки, "Метод объекта не обнаружен (" + ИмяМетода + ")") > 0 + Или Найти(текстОшибки, "Object method not found (" + ИмяМетода + ")") > 0 Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; +КонецФункции +// } Helpers + +// { Подсистема конфигурации xUnitFor1C + +&НаСервере +Функция ПолучитьКонтекстЯдраНаСервере() + + // Получаем доступ к серверному контексту обработки с использованием + // полного имени метаданных браузера тестов. Иначе нет возможности получить + // доступ к серверному контексту ядра, т.к. изначально вызов был выполнен на клиенте. + // При передаче на сервер клиентский контекст теряется. + КонтекстЯдра = Неопределено; + МетаданныеЯдра = Метаданные.НайтиПоПолномуИмени(ПолноеИмяБраузераТестов); + Если НЕ МетаданныеЯдра = Неопределено + И Метаданные.Обработки.Содержит(МетаданныеЯдра) Тогда + ИмяОбработкиКонекстаЯдра = СтрЗаменить(ПолноеИмяБраузераТестов, "Обработка", "Обработки"); + Выполнить("КонтекстЯдра = " + ИмяОбработкиКонекстаЯдра + ".Создать()"); + Иначе + ИмяОбработкиКонекстаЯдра = СтрЗаменить(ПолноеИмяБраузераТестов, "ВнешняяОбработка", "ВнешниеОбработки"); + ИмяОбработкиКонекстаЯдра = СтрЗаменить(ИмяОбработкиКонекстаЯдра, ".", Символы.ПС); + МенеджерОбъектов = СтрПолучитьСтроку(ИмяОбработкиКонекстаЯдра, 1); + ИмяОбъекта = СтрПолучитьСтроку(ИмяОбработкиКонекстаЯдра, 2); + Выполнить("КонтекстЯдра = " + МенеджерОбъектов + ".Создать("""+ИмяОбъекта+""")"); + КонецЕсли; + + Возврат КонтекстЯдра; + +КонецФункции + +// } Подсистема конфигурации xUnitFor1C \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index 08718d92..00000000 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ -&НаКлиенте Перем ПостроительДереваТестов; &НаКлиенте Перем ЗагружаемыйПуть; &НаКлиенте Перем КонтейнерТестов; &НаКлиенте Перем ТекущаяГруппа; // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); КонецФункции // } Plugin interface // { Loader interface &НаКлиенте Функция ВыбратьПутьИнтерактивно(ТекущийПуть = "") Экспорт Перем ВыбранныйПуть; ПараметрыОткрытия = Новый Структура("ОтборПоИмениТеста", ""); ИмяФормыВыбораПодсистемыУФ = СтрЗаменить(ЭтаФорма.ИмяФормы, "УправляемаяФорма", "ФормаВыбораПодсистемУФ"); ВыбранныйПуть = ОткрытьФормуМодально(ИмяФормыВыбораПодсистемыУФ, ПараметрыОткрытия, ЭтаФорма); Возврат ВыбранныйПуть; КонецФункции &НаКлиенте Функция Загрузить(КонтекстЯдра, Путь) Экспорт СтруктураМетаданных = СтруктураМетаданныхПоПереданномуПути(Путь); ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); ДеревоТестов = Неопределено; ОбработатьОбъектМетаданных(СтруктураМетаданных, ДеревоТестов); Возврат ДеревоТестов; КонецФункции &НаКлиенте Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт Перем Контекст; Если ЭтоПутьККлиентскомуКонтексту(Путь) Тогда Контекст = ПолучитьКлиентскийКонтекст(КонтекстЯдра, Путь); Иначе Контекст = ПолучитьСерверныйКонтекст(КонтекстЯдра, Путь); КонецЕсли; Возврат Контекст; КонецФункции // } Loader interface &НаКлиенте Функция ПолучитьКлиентскийКонтекст(КонтекстЯдра, Путь) ИдентификаторКонтекста = ПолучитьИдентификаторКонтекстаПоПутиНаСервере(Сред(Путь, СтрДлина(ПрефиксПутейСФормами()) + 1)); ОписаниеКонтекста = ПолучитьФорму("Обработка." + ИдентификаторКонтекста + ".Форма", , ЭтаФорма, Новый УникальныйИдентификатор); КонтекстЯдра.ПолучитьОписаниеКонтекстаВыполнения(ИдентификаторКонтекста, Истина); Возврат ОписаниеКонтекста; КонецФункции &НаКлиенте Функция ПолучитьСерверныйКонтекст(КонтекстЯдра, Путь) ИдентификаторКонтекста = ПолучитьИдентификаторКонтекстаПоПутиНаСервере(Путь); ОписаниеКонтекста = КонтекстЯдра.ПолучитьОписаниеКонтекстаВыполнения(ИдентификаторКонтекста, Истина); Возврат ОписаниеКонтекста; КонецФункции &НаСервере Функция СтруктураМетаданныхПоПереданномуПути(Путь) ОбъектМетаданных = ЭтотОбъектНаСервере().ПолучитьОбъектМетаданныхПоПути(Путь); Если ЭтоПодсистема(ОбъектМетаданных.ПолноеИмя()) Тогда СтруктураМетаданных = СтруктураМетаданныхПодсистемы(ОбъектМетаданных); Иначе СтруктураМетаданных = СтрокаДереваМетаданных(ОбъектМетаданных); КонецЕсли; Возврат СтруктураМетаданных; КонецФункции &НаСервере Функция СтруктураМетаданныхПодсистемы(Подсистема) СтруктураМетаданных = СтрокаДереваМетаданных(Подсистема); Для Каждого ПодчиненнаяПодсистема Из Подсистема.Подсистемы Цикл СтруктураМетаданных.Строки.Добавить(СтруктураМетаданныхПодсистемы(ПодчиненнаяПодсистема)); КонецЦикла; Для Каждого ДочернееМетаданное Из Подсистема.Состав цикл Если Метаданные.Обработки.Найти(ДочернееМетаданное.Имя) <> Неопределено Тогда СтруктураМетаданныхОбработки = СтрокаДереваМетаданных(ДочернееМетаданное); СтруктураМетаданных.Строки.Добавить(СтруктураМетаданныхОбработки); КонецЕсли; КонецЦикла; Возврат СтруктураМетаданных; КонецФункции &НаСервере Функция СтрокаДереваМетаданных(ОбъектМетаданных) СтрокаДерева = Новый Структура(); СтрокаДерева.Вставить("Имя", ОбъектМетаданных.Имя); СтрокаДерева.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя()); СтрокаДерева.Вставить("Строки", Новый Массив); Возврат СтрокаДерева; КонецФункции &НаКлиенте Функция ОбработатьОбъектМетаданных(СтруктураМетаданных, ДеревоТестов) Если ЭтоПодсистема(СтруктураМетаданных.ПолноеИмя) Тогда Контейнер = ЗагрузитьПодсистему(СтруктураМетаданных, ДеревоТестов); Иначе Контейнер = ЗагрузитьОбработку(СтруктураМетаданных, ДеревоТестов); КонецЕсли; Возврат Контейнер; КонецФункции &НаКлиентеНаСервереБезКонтекста Функция ЭтоПодсистема(ПолноеИмяОбъектаМетаданных) Возврат (Найти(НРег(ПолноеИмяОбъектаМетаданных), НРег("Подсистема")) > 0); КонецФункции &НаКлиенте Функция ЗагрузитьПодсистему(СтруктураМетаданных, ДеревоТестов) Контейнер = ПостроительДереваТестов.СоздатьКонтейнер(СтруктураМетаданных.Имя, ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Подсистема); Для Каждого ПодчиненноеМетаданное Из СтруктураМетаданных.Строки Цикл Если ЭтоПодсистема(ПодчиненноеМетаданное.ПолноеИмя) Тогда ЗагрузитьПодсистему(ПодчиненноеМетаданное, Контейнер); Иначе ЗагрузитьОбработку(ПодчиненноеМетаданное, Контейнер); КонецЕсли; КонецЦикла; Если ДеревоТестов = Неопределено Тогда ДеревоТестов = Контейнер; ИначеЕсли Контейнер.Строки.Количество() > 0 Тогда ДеревоТестов.Строки.Добавить(Контейнер); КонецЕсли; КонецФункции &НаКлиенте Функция ЗагрузитьОбработку(СтруктураМетаданных, ДеревоТестов) ЗагружаемыйПуть = СтрЗаменить("Метаданные." + СтруктураМетаданных.ПолноеИмя, ".Обработка.", ".Обработки."); Контейнер = ЗагрузитьОбработкуНаСервере(ЗагружаемыйПуть); КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьОбработкуНаКлиенте(СтруктураМетаданных); Если КонтейнерСКлиентскимиТестамиОбработки.Строки.Количество() > 0 Тогда Контейнер.Строки.Добавить(КонтейнерСКлиентскимиТестамиОбработки); КонецЕсли; Если ДеревоТестов = Неопределено Тогда ДеревоТестов = Контейнер; ИначеЕсли Контейнер.Строки.Количество() > 0 Тогда ДеревоТестов.Строки.Добавить(Контейнер); КонецЕсли; КонецФункции &НаСервере Функция ЗагрузитьОбработкуНаСервере(Путь) ПостроительДереваТестов = ВнешниеОбработки.Создать("ПостроительДереваТестов"); ЗагрузчикФайла = ВнешниеОбработки.Создать("ЗагрузчикФайла"); ДеревоТестов = ЭтотОбъектНаСервере().ЗагрузитьПуть(Путь, ПостроительДереваТестов, ЗагрузчикФайла); Возврат ДеревоТестов; КонецФункции &НаКлиенте Функция ЗагрузитьОбработкуНаКлиенте(СтруктураМетаданных) ФормаОбработки = ПолучитьФорму(СтруктураМетаданных.ПолноеИмя + ".Форма"); Попытка Контейнер = ЗагрузитьТестыВНовомФормате_НаКлиенте(ФормаОбработки); Исключение ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); Если ЭтоНовыйФорматОбработки(ТекстОшибки) Тогда ВызватьИсключение; Иначе Контейнер = ЗагрузитьТестыВСтаромФормате_НаКлиенте(ФормаОбработки); КонецЕсли; КонецПопытки; Возврат Контейнер; КонецФункции &НаКлиенте Функция ЭтоНовыйФорматОбработки(Знач ТекстОшибки) ЭтоНовыйФорматОбработки = Не ЕстьОшибка_МетодОбъектаНеОбнаружен(ТекстОшибки, "ЗаполнитьНаборТестов"); Возврат ЭтоНовыйФорматОбработки; КонецФункции &НаКлиенте Функция ЗагрузитьТестыВНовомФормате_НаКлиенте(ФормаОбработки) КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(ПрефиксПутейСФормами() + СтрЗаменить(ЗагружаемыйПуть, "Метаданные.Обработки.", ""), ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма); ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма); Результат = КонтейнерТестов; КонтейнерТестов = Неопределено; ТекущаяГруппа = Неопределено; Возврат Результат; КонецФункции &НаКлиенте Функция ЗагрузитьТестыВСтаромФормате_НаКлиенте(ФормаОбработки) Попытка СписокТестов = ФормаОбработки.ПолучитьСписокТестов(); Исключение Описание = ОписаниеОшибки(); Если Найти(Описание, "Недостаточно фактических параметров") > 0 Тогда ВызватьИсключение "Старый формат тестов в обработке тестов <"+ЗагружаемыйПуть+">."+Символы.ПС+ "Метод ПолучитьСписокТестов сейчас не принимает параметров"; КонецЕсли; Если Найти(Описание, "Метод объекта не обнаружен (ПолучитьСписокТестов)") = 0 Тогда ВызватьИсключение Описание; КонецЕсли; КонецПопытки; СлучайныйПорядокВыполнения = Истина; Попытка СлучайныйПорядокВыполнения = ФормаОбработки.РазрешенСлучайныйПорядокВыполненияТестов(); Исключение КонецПопытки; Контейнер = ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ПрефиксПутейСФормами() + СтрЗаменить(ЗагружаемыйПуть, "Обработка.", ""), ПрефиксПутейСФормами() + ЗагружаемыйПуть, СлучайныйПорядокВыполнения); Контейнер.ИконкаУзла = ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма; Возврат Контейнер; КонецФункции &НаСервере Функция ПолучитьИдентификаторКонтекстаПоПутиНаСервере(Путь) ОбъектМетаданных = ЭтотОбъектНаСервере().ПолучитьОбъектМетаданныхПоПути(Путь); Возврат ОбъектМетаданных.Имя; КонецФункции &НаСервере Функция ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения = Истина) ПостроительДереваТестов = ВнешниеОбработки.Создать("ПостроительДереваТестов", Ложь); ЗагрузчикФайла = ВнешниеОбработки.Создать("ЗагрузчикФайла", Ложь); Контейнер = ЭтотОбъектНаСервере().ПолучитьКонтейнерДереваТестовПоСпискуТестов(ПостроительДереваТестов, ЗагрузчикФайла, СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения); Возврат Контейнер; КонецФункции &НаКлиенте Функция ЭтоПутьККлиентскомуКонтексту(Путь) ПрефиксПутейСФормами = ПрефиксПутейСФормами(); Результат = (Найти(Путь, ПрефиксПутейСФормами) = 1); Возврат Результат; КонецФункции &НаКлиенте Функция ПрефиксПутейСФормами() Возврат "УпрФорма # "; КонецФункции // { API нового формата &НаКлиенте Процедура СлучайныйПорядокВыполнения() Экспорт Если ЗначениеЗаполнено(КонтейнерТестов) Тогда КонтейнерТестов.СлучайныйПорядокВыполнения = Истина; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура СтрогийПорядокВыполнения() Экспорт Если ЗначениеЗаполнено(КонтейнерТестов) Тогда КонтейнерТестов.СлучайныйПорядокВыполнения = Ложь; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура НачатьГруппу(Знач ИмяГруппы, Знач СтрогийПорядокВыполнения = Ложь) Экспорт ТекущаяГруппа = ПостроительДереваТестов.СоздатьКонтейнер(ИмяГруппы, ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Группа); ТекущаяГруппа.СлучайныйПорядокВыполнения = Не СтрогийПорядокВыполнения; КонтейнерТестов.Строки.Добавить(ТекущаяГруппа); КонецПроцедуры &НаКлиенте Функция Добавить(Знач ИмяМетода, Знач Параметры = Неопределено, Знач Представление = "") Экспорт Элемент = ПостроительДереваТестов.СоздатьЭлемент(ПрефиксПутейСФормами() + ЗагружаемыйПуть, ИмяМетода, Представление); Если ЗначениеЗаполнено(Параметры) И ТипЗнч(Параметры) = Тип("Массив") Тогда Элемент.Параметры = Параметры; КонецЕсли; Если ЗначениеЗаполнено(ТекущаяГруппа) Тогда ТекущаяГруппа.Строки.Добавить(Элемент); Иначе КонтейнерТестов.Строки.Добавить(Элемент); КонецЕсли; Возврат Элемент; КонецФункции &НаКлиенте Функция ПараметрыТеста(Знач Парам1, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, Знач Парам4 = Неопределено, Знач Парам5 = Неопределено, Знач Парам6 = Неопределено, Знач Парам7 = Неопределено, Знач Парам8 = Неопределено, Знач Парам9 = Неопределено) Экспорт ВсеПараметры = Новый Массив; ВсеПараметры.Добавить(Парам1); ВсеПараметры.Добавить(Парам2); ВсеПараметры.Добавить(Парам3); ВсеПараметры.Добавить(Парам4); ВсеПараметры.Добавить(Парам5); ВсеПараметры.Добавить(Парам6); ВсеПараметры.Добавить(Парам7); ВсеПараметры.Добавить(Парам8); ВсеПараметры.Добавить(Парам9); ИндексСПоследнимПараметром = 0; Для Сч = 0 По ВсеПараметры.ВГраница() Цикл Индекс = ВсеПараметры.ВГраница() - Сч; Если ВсеПараметры[Индекс] <> Неопределено Тогда ИндексСПоследнимПараметром = Индекс; Прервать; КонецЕсли; КонецЦикла; ПараметрыТеста = Новый Массив; Для Сч = 0 По ИндексСПоследнимПараметром Цикл ПараметрыТеста.Добавить(ВсеПараметры[Сч]); КонецЦикла; Возврат ПараметрыТеста; КонецФункции // } API нового формата // { Helpers &НаСервере Функция ЭтотОбъектНаСервере() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции &НаКлиенте Функция ЕстьОшибка_МетодОбъектаНеОбнаружен(Знач ТекстОшибки, Знач ИмяМетода) Результат = Ложь; Если Найти(текстОшибки, "Метод объекта не обнаружен (" + ИмяМетода + ")") > 0 Или Найти(текстОшибки, "Object method not found (" + ИмяМетода + ")") > 0 Тогда Результат = Истина; КонецЕсли; Возврат Результат; КонецФункции // } Helpers \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\243\320\244/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\243\320\244/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..e6fa7d84 --- /dev/null +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\243\320\244/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,26 @@ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + РеквизитФормыВЗначение("Объект").ЗаполнитьДеревоПодсистем(ДеревоПодсистем, Параметры.ОтборПоИмениТеста); +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + РазвернутьСтрокиДерева(Истина); +КонецПроцедуры + +&НаКлиенте +Процедура ДеревоПодсистемВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + Закрыть(ДеревоПодсистем.НайтиПоИдентификатору(ВыбраннаяСтрока).Путь); +КонецПроцедуры + +&НаКлиенте +Процедура РазвернутьСтрокиДерева(ВключаяПодчиненные = Ложь) + + Для каждого СтрокаДерева из ДеревоПодсистем.ПолучитьЭлементы() Цикл + Идентификатор = СтрокаДерева.ПолучитьИдентификатор(); + Элементы.ДеревоПодсистем.Развернуть(Идентификатор, ВключаяПодчиненные); + КонецЦикла; + +КонецПроцедуры diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\243\320\244/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\243\320\244/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index cf2ec6ac..00000000 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\243\320\244/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ - &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) РеквизитФормыВЗначение("Объект").ЗаполнитьДеревоПодсистем(ДеревоПодсистем, Параметры.ОтборПоИмениТеста); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) РазвернутьСтрокиДерева(Истина); КонецПроцедуры &НаКлиенте Процедура ДеревоПодсистемВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Закрыть(ДеревоПодсистем.НайтиПоИдентификатору(ВыбраннаяСтрока).Путь); КонецПроцедуры &НаКлиенте Процедура РазвернутьСтрокиДерева(ВключаяПодчиненные = Ложь) Для каждого СтрокаДерева из ДеревоПодсистем.ПолучитьЭлементы() Цикл Идентификатор = СтрокаДерева.ПолучитьИдентификатор(); Элементы.ДеревоПодсистем.Развернуть(Идентификатор, ВключаяПодчиненные); КонецЦикла; КонецПроцедуры \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/form" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/form" index 4567f6f9..afeb1a04 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/form" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/form" @@ -3,7 +3,7 @@ { {1,1, {"ru","Выберите тестовый случай или всю подсистему"} -},8,4294967295}, +},9,4294967295}, {09ccdc77-ea1a-4a6d-ab1c-3435eada2433, {1, { @@ -56,7 +56,7 @@ {2,286,0,1,4,0,0,6,0},0,4294967295,5,64,0}, {0} }, -{3, +{4, {ea83fe3a-ac3c-4cce-8045-3dddf35b28b1,4, {5, {"Pattern", @@ -125,7 +125,7 @@ {"ru","Имя"} }, {1,0}, -{1,0},194.9999999999999,0,-1,-1,-1,12590595, +{1,0},197,0,-1,-1,-1,12590595, {3,0, {0},"",-1,-1,1,0}, {3,0, @@ -153,7 +153,7 @@ {6,3,0,1}, {6,3,0,1}, {6,3,0,1},1,0,0,4,0,"Имя", -{},28,0, +{},29,0, {1,0}, {"Pattern", {"S"} @@ -504,9 +504,76 @@ A0Qbgk0z0YbgC3miYgVfyBMVK/hCfqTFCqEQJxgjhEKcYIwQCnGKYwQXAACvVTho {0,7,3},0,0,0,0,2,2,0,0}, {14,"ПолеКартинкиПодсистема",4294967295,0,0,0}, {0} +}, +{151ef23e-6bb2-4681-83d0-35bc2217230c,9, +{1, +{ +{10,1, +{3,4, +{0} +}, +{3,4, +{0} +}, +{6,3,0,1},0, +{3,3, +{-22} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,3, +{-7} +}, +{3,3, +{-21} +}, +{3,0, +{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, +{1,0} +},15,0,0, +{3,1, +{0,db817ee1-fd28-4e7f-bb4a-53686b2b153c},"",-1,-1,0,0}, +{0,0,0},1,1,0,0, +{1,0} +}, +{0} +}, +{8,106,178,141,208,0, +{0, +{2,-1,6,0}, +{2,-1,6,0} +}, +{0, +{2,9,0,30}, +{2,-1,6,0} +}, +{0, +{2,-1,6,0}, +{2,-1,6,0} +}, +{0, +{2,9,2,35}, +{2,-1,6,0} +}, +{0, +{2,-1,6,0}, +{2,-1,6,0} +}, +{0, +{2,-1,6,0}, +{2,-1,6,0} +},1, +{0,9,1},0,1, +{0,9,3},0,0,0,0,3,4,0,0}, +{14,"ПолеКартинкиТестОтчет",4294967295,0,0,0}, +{0} } } -},400,292,1,0,1,4,4,352}, +},400,292,1,0,1,4,4,361}, { {5},8, {3, diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/module" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/module.bsl" similarity index 87% rename from "src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/module" rename to "src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/module.bsl" index c07c5a1d..4858e319 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/module" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/module.bsl" @@ -14,8 +14,9 @@ КонецПроцедуры //{ Типы строк дерева тестов -мМассивПиктограммТиповСтроки = Новый Массив(4); +мМассивПиктограммТиповСтроки = Новый Массив(8); мМассивПиктограммТиповСтроки[мЗначенияТиповСтроки.ТестовыйСлучай] = ЭлементыФормы.ПолеКартинкиТест.Картинка; мМассивПиктограммТиповСтроки[мЗначенияТиповСтроки.Подсистема] = ЭлементыФормы.ПолеКартинкиПодсистема.Картинка; +мМассивПиктограммТиповСтроки[мЗначенияТиповСтроки.ТестовыйСлучайОтчет] = ЭлементыФормы.ПолеКартинкиТестОтчет.Картинка; мМассивПиктограммТиповСтроки = Новый ФиксированныйМассив(мМассивПиктограммТиповСтроки); //} Типы строк дерева тестов \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.bsl" similarity index 89% rename from "src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.txt" rename to "src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.bsl" index 109945b1..51df8b82 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.txt" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.bsl" @@ -93,7 +93,8 @@ КонецЦикла; Для каждого ДочернееМетаданное Из Подсистема.Состав цикл - Если Метаданные.Обработки.Найти(ДочернееМетаданное.Имя) <> Неопределено Тогда + Если Метаданные.Обработки.Найти(ДочернееМетаданное.Имя) <> Неопределено + ИЛИ Метаданные.Отчеты.Найти(ДочернееМетаданное.Имя) <> Неопределено Тогда КонтейнерСТестамиОбработки = ЗагрузитьОбработку(ДочернееМетаданное, ПостроительДереваТестов, ЗагрузчикФайла); Если КонтейнерСТестамиОбработки.Строки.Количество() > 0 Тогда Контейнер.Строки.Добавить(КонтейнерСТестамиОбработки); @@ -121,9 +122,15 @@ КонецФункции Функция ЗагрузитьТестыВНовомФормате(ПостроительДереваТестов, Обработка, МетаданныеОбработки, ЗагрузчикФайла) - ЗагружаемыйПуть = СтрЗаменить("Метаданные." + МетаданныеОбработки.ПолноеИмя(), ".Обработка.", ".Обработки."); КэшПостроительДереваТестов = ПостроительДереваТестов; - КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(МетаданныеОбработки.Имя, ПостроительДереваТестов.ИконкиУзловДереваТестов.Обработка); + Если Метаданные.Обработки.Содержит(МетаданныеОбработки) Тогда + ЗагружаемыйПуть = СтрЗаменить("Метаданные." + МетаданныеОбработки.ПолноеИмя(), ".Обработка.", ".Обработки."); + ИконкаУзла = ПостроительДереваТестов.ИконкиУзловДереваТестов.Обработка; + ИначеЕсли Метаданные.Отчеты.Содержит(МетаданныеОбработки) Тогда + ЗагружаемыйПуть = СтрЗаменить("Метаданные." + МетаданныеОбработки.ПолноеИмя(), ".Отчет.", ".Отчеты."); + ИконкаУзла = ПостроительДереваТестов.ИконкиУзловДереваТестов.Отчет; + КонецЕсли; + КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(МетаданныеОбработки.Имя, ИконкаУзла); Обработка.ЗаполнитьНаборТестов(ЭтотОбъект); Результат = КонтейнерТестов; КонтейнерТестов = Неопределено; @@ -175,7 +182,13 @@ КонецФункции Функция СоздатьОбработкуПоМетаданным(МетаданныеОбработки) - Возврат Обработки[МетаданныеОбработки.Имя].Создать(); + Если Метаданные.Обработки.Найти(МетаданныеОбработки.Имя) <> Неопределено Тогда + Возврат Обработки[МетаданныеОбработки.Имя].Создать(); + ИначеЕсли Метаданные.Отчеты.Найти(МетаданныеОбработки.Имя) <> Неопределено Тогда + Возврат Отчеты[МетаданныеОбработки.Имя].Создать(); + Иначе + ВызватьИсключение "Не удалось найти обработку / отчет с идентификатором """+МетаданныеОбработки.Имя+""""; + КонецЕсли; КонецФункции //{ Работа со встроенными в конфигурацию тестами и подсистемами @@ -200,6 +213,11 @@ СтрокаТеста.Имя = ОбъектМетаданных.Имя; СтрокаТеста.Путь = "Метаданные."+СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), "Обработка.", "Обработки."); СтрокаТеста.ТипСтроки = мЗначенияТиповСтроки.ТестовыйСлучай; + ИначеЕсли Найти(ОбъектМетаданных.ПолноеИмя(), "Отчет."+ОтборПоИмениТеста) = 1 Тогда + СтрокаТеста = ПодчиненныеСтроки(СтрокаПодсистемы).Добавить(); + СтрокаТеста.Имя = ОбъектМетаданных.Имя; + СтрокаТеста.Путь = "Метаданные."+СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), "Отчет.", "Отчеты."); + СтрокаТеста.ТипСтроки = мЗначенияТиповСтроки.ТестовыйСлучайОтчет; КонецЕсли; КонецЦикла; @@ -307,6 +325,7 @@ мЗначенияТиповСтроки = Новый Структура; мЗначенияТиповСтроки.Вставить("КаталогТестов", 0); мЗначенияТиповСтроки.Вставить("ТестовыйСлучай", 1); +мЗначенияТиповСтроки.Вставить("ТестовыйСлучайОтчет", 7); мЗначенияТиповСтроки.Вставить("ТестовыйМетод", 2); мЗначенияТиповСтроки.Вставить("Подсистема", 3); мЗначенияТиповСтроки.Вставить("Ошибка", 9); diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/maps.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/maps.txt" index 275bf92c..1d8d0dad 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/maps.txt" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/maps.txt" @@ -1,2 +1,2 @@ -Form\УправляемаяФорма\Форма.txt-->d75f146d-5027-4604-80fd-3b704ddd86a8.0 (29, 376) -Form\ФормаВыбораПодсистемУФ\Форма.txt-->7074798d-333f-4d35-91d6-154b9f00a019.0 (381, 407) +Form\УправляемаяФорма\Форма.bsl-->d75f146d-5027-4604-80fd-3b704ddd86a8.0 (29, 414) +Form\ФормаВыбораПодсистемУФ\Форма.bsl-->7074798d-333f-4d35-91d6-154b9f00a019.0 (427, 453) diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/renames.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/renames.txt" index 1eb75ecf..2d3c155a 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/renames.txt" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/renames.txt" @@ -7,7 +7,7 @@ copyinfo-->und\copyinfo d75f146d-5027-4604-80fd-3b704ddd86a8-->und\d75f146d-5027-4604-80fd-3b704ddd86a8 d75f146d-5027-4604-80fd-3b704ddd86a8.0-->und\d75f146d-5027-4604-80fd-3b704ddd86a8.0 dfe532e1-d0ef-4008-afd4-214781ee4960.0\info-->und\dfe532e1-d0ef-4008-afd4-214781ee4960.0\info -dfe532e1-d0ef-4008-afd4-214781ee4960.0\text-->ObjectModule.txt +dfe532e1-d0ef-4008-afd4-214781ee4960.0\text-->ObjectModule.bsl root-->und\root version-->und\version versions-->und\versions diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/7074798d-333f-4d35-91d6-154b9f00a019.0" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/7074798d-333f-4d35-91d6-154b9f00a019.0" index 7da9b325..54232af7 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/7074798d-333f-4d35-91d6-154b9f00a019.0" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/7074798d-333f-4d35-91d6-154b9f00a019.0" @@ -36,37 +36,60 @@ {3,3, {0},"",-1,-1,0, { -{#base64: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} +{#base64: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} },0}, {3,4, {0} diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/d75f146d-5027-4604-80fd-3b704ddd86a8.0" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/d75f146d-5027-4604-80fd-3b704ddd86a8.0" index b938ea27..17987340 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/d75f146d-5027-4604-80fd-3b704ddd86a8.0" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/d75f146d-5027-4604-80fd-3b704ddd86a8.0" @@ -62,6 +62,8 @@ &НаКлиенте Функция Загрузить(КонтекстЯдра, Путь) Экспорт + ПолноеИмяБраузераТестов = КонтекстЯдра.Объект.ПолноеИмяБраузераТестов; + СтруктураМетаданных = СтруктураМетаданныхПоПереданномуПути(Путь); ПостроительДереваТестов = КонтекстЯдра.Плагин(""ПостроительДереваТестов""); ДеревоТестов = Неопределено; @@ -118,7 +120,8 @@ КонецЦикла; Для Каждого ДочернееМетаданное Из Подсистема.Состав цикл - Если Метаданные.Обработки.Найти(ДочернееМетаданное.Имя) <> Неопределено Тогда + Если Метаданные.Обработки.Найти(ДочернееМетаданное.Имя) <> Неопределено + ИЛИ Метаданные.Отчеты.Найти(ДочернееМетаданное.Имя) <> Неопределено Тогда СтруктураМетаданныхОбработки = СтрокаДереваМетаданных(ДочернееМетаданное); СтруктураМетаданных.Строки.Добавить(СтруктураМетаданныхОбработки); КонецЕсли; @@ -176,6 +179,7 @@ &НаКлиенте Функция ЗагрузитьОбработку(СтруктураМетаданных, ДеревоТестов) ЗагружаемыйПуть = СтрЗаменить(""Метаданные."" + СтруктураМетаданных.ПолноеИмя, "".Обработка."", "".Обработки.""); + ЗагружаемыйПуть = СтрЗаменить(ЗагружаемыйПуть, "".Отчет."", "".Отчеты.""); Контейнер = ЗагрузитьОбработкуНаСервере(ЗагружаемыйПуть); КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьОбработкуНаКлиенте(СтруктураМетаданных); Если КонтейнерСКлиентскимиТестамиОбработки.Строки.Количество() > 0 Тогда @@ -191,8 +195,11 @@ &НаСервере Функция ЗагрузитьОбработкуНаСервере(Путь) - ПостроительДереваТестов = ВнешниеОбработки.Создать(""ПостроительДереваТестов""); - ЗагрузчикФайла = ВнешниеОбработки.Создать(""ЗагрузчикФайла""); + КонтекстЯдра = ПолучитьКонтекстЯдраНаСервере(); + + ПостроительДереваТестов = КонтекстЯдра.СоздатьОбъектПлагина(""ПостроительДереваТестов""); + ЗагрузчикФайла = КонтекстЯдра.СоздатьОбъектПлагина(""ЗагрузчикФайла""); + ДеревоТестов = ЭтотОбъектНаСервере().ЗагрузитьПуть(Путь, ПостроительДереваТестов, ЗагрузчикФайла); Возврат ДеревоТестов; @@ -268,8 +275,11 @@ &НаСервере Функция ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения = Истина) - ПостроительДереваТестов = ВнешниеОбработки.Создать(""ПостроительДереваТестов"", Ложь); - ЗагрузчикФайла = ВнешниеОбработки.Создать(""ЗагрузчикФайла"", Ложь); + КонтекстЯдра = ПолучитьКонтекстЯдраНаСервере(); + + ПостроительДереваТестов = КонтекстЯдра.СоздатьОбъектПлагина(""ПостроительДереваТестов""); + ЗагрузчикФайла = КонтекстЯдра.СоздатьОбъектПлагина(""ЗагрузчикФайла""); + Контейнер = ЭтотОбъектНаСервере().ПолучитьКонтейнерДереваТестовПоСпискуТестов(ПостроительДереваТестов, ЗагрузчикФайла, СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения); Возврат Контейнер; @@ -373,8 +383,36 @@ Возврат Результат; КонецФункции // } Helpers -", -{4,1, + +// { Подсистема конфигурации xUnitFor1C + +&НаСервере +Функция ПолучитьКонтекстЯдраНаСервере() + + // Получаем доступ к серверному контексту обработки с использованием + // полного имени метаданных браузера тестов. Иначе нет возможности получить + // доступ к серверному контексту ядра, т.к. изначально вызов был выполнен на клиенте. + // При передаче на сервер клиентский контекст теряется. + КонтекстЯдра = Неопределено; + МетаданныеЯдра = Метаданные.НайтиПоПолномуИмени(ПолноеИмяБраузераТестов); + Если НЕ МетаданныеЯдра = Неопределено + И Метаданные.Обработки.Содержит(МетаданныеЯдра) Тогда + ИмяОбработкиКонекстаЯдра = СтрЗаменить(ПолноеИмяБраузераТестов, ""Обработка"", ""Обработки""); + Выполнить(""КонтекстЯдра = "" + ИмяОбработкиКонекстаЯдра + "".Создать()""); + Иначе + ИмяОбработкиКонекстаЯдра = СтрЗаменить(ПолноеИмяБраузераТестов, ""ВнешняяОбработка"", ""ВнешниеОбработки""); + ИмяОбработкиКонекстаЯдра = СтрЗаменить(ИмяОбработкиКонекстаЯдра, ""."", Символы.ПС); + МенеджерОбъектов = СтрПолучитьСтроку(ИмяОбработкиКонекстаЯдра, 1); + ИмяОбъекта = СтрПолучитьСтроку(ИмяОбработкиКонекстаЯдра, 2); + Выполнить(""КонтекстЯдра = "" + МенеджерОбъектов + "".Создать(""""""+ИмяОбъекта+"""""")""); + КонецЕсли; + + Возврат КонтекстЯдра; + +КонецФункции + +// } Подсистема конфигурации xUnitFor1C", +{4,2, {9, {1},0,"Объект", {1,0}, @@ -393,6 +431,27 @@ {0,0},1,0,0,0, {0,0}, {0,0} +}, +{9, +{2},0,"ПолноеИмяБраузераТестов", +{1,1, +{"ru","Полное имя браузера тестов"} +}, +{"Pattern", +{"S"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},0,0,0,0, +{0,0}, +{0,0} },0,0, {#base64:77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxTZXR0 aW5ncyB4bWxucz0iaHR0cDovL3Y4LjFjLnJ1LzguMS9kYXRhLWNvbXBvc2l0aW9u diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/versions" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/versions" index 67d31a79..fc9beede 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/versions" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/versions" @@ -1 +1 @@ -{1,15,"7074798d-333f-4d35-91d6-154b9f00a019",0faf7006-8bd0-46d0-aaaf-46d480cbb787,"7074798d-333f-4d35-91d6-154b9f00a019.0",d4049c32-1066-4754-b65c-e0df4a6acf0e,"7074798d-333f-4d35-91d6-154b9f00a019.1",cee938b5-68b8-422f-9afa-810b9299c036,"",6640787d-eaed-43e5-b987-86a784ccdf82,"versions",143f4395-d524-4c48-b1de-d3710ba20f1f,"root",7087237e-be7e-4959-9db5-d6d050e2b3eb,"c279f76a-3497-488b-ad4e-2ba469b0bd9b",ca7fdcbd-de61-4677-9ff7-e411a7770446,"51efd65a-ed36-4be7-a563-89b34ebfa851",c09e6b3f-4ca6-4037-8a4f-6e06467d405d,"dfe532e1-d0ef-4008-afd4-214781ee4960.0",1b7678be-2c9c-4cb2-9eaf-2c1c9c3af379,"c279f76a-3497-488b-ad4e-2ba469b0bd9b.0",7e27bce4-b31a-4dcf-afcd-2579b7394032,"c279f76a-3497-488b-ad4e-2ba469b0bd9b.1",34b3490d-5b18-4d62-8822-f65cab5af125,"d75f146d-5027-4604-80fd-3b704ddd86a8",c3ef4553-6c35-448c-9ce8-4a201c78d0f3,"version",4134ff87-a48e-43b5-ab67-f10135a5cf5f,"copyinfo",3c1b2d00-62b1-454e-bd9b-795a4a41573f,"d75f146d-5027-4604-80fd-3b704ddd86a8.0",ae9951b0-f7fa-4dda-9d0a-fbd4a48d7414} \ No newline at end of file +{1,15,"7074798d-333f-4d35-91d6-154b9f00a019",00e9fa7a-a001-4f7c-9980-65426f423b3f,"7074798d-333f-4d35-91d6-154b9f00a019.1",cee938b5-68b8-422f-9afa-810b9299c036,"7074798d-333f-4d35-91d6-154b9f00a019.0",bec7bffd-74c7-4954-8430-284a1ba6b869,"",2f438957-e571-416f-b97b-878877d690e3,"versions",d4d6440e-6e8c-4585-87aa-a4cfebdb7f18,"root",7d6ee2d2-2237-4eee-88ec-b15f49036672,"c279f76a-3497-488b-ad4e-2ba469b0bd9b",a0483b09-af40-4029-a4dd-e1623524a2dc,"51efd65a-ed36-4be7-a563-89b34ebfa851",f37556ab-7441-4e72-bb7a-1768c936abbf,"c279f76a-3497-488b-ad4e-2ba469b0bd9b.0",29930658-ed00-461f-bbf0-28cc9b4e217c,"dfe532e1-d0ef-4008-afd4-214781ee4960.0",15bc5568-ef27-4899-aa73-33cd6ed066fb,"c279f76a-3497-488b-ad4e-2ba469b0bd9b.1",34b3490d-5b18-4d62-8822-f65cab5af125,"d75f146d-5027-4604-80fd-3b704ddd86a8",8b28bef4-c3c7-4bf4-9228-536f16ba8ae9,"version",db532ab5-bf94-48e7-9b57-abe564416b15,"copyinfo",d90ef72f-b750-4486-8c3d-4664de8bebfd,"d75f146d-5027-4604-80fd-3b704ddd86a8.0",ffbd6064-4373-44dd-bd3e-1beef334cbc3} \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..28be2169 --- /dev/null +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,95 @@ + +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +// { Loader interface +&НаКлиенте +Функция ВыбратьПутьИнтерактивно(ТекущийПуть = "") Экспорт + ДиалогВыбораКаталога = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога); + ДиалогВыбораКаталога.Каталог = ТекущийПуть; + + Результат = ""; + Если ДиалогВыбораКаталога.Выбрать() Тогда + Результат = ДиалогВыбораКаталога.Каталог; + КонецЕсли; + + Возврат Результат; +КонецФункции + +&НаКлиенте +Функция Загрузить(КонтекстЯдра, Путь) Экспорт + КаталогДляЗагрузки = Новый Файл(Путь); + Если Не (КаталогДляЗагрузки.Существует() И КаталогДляЗагрузки.ЭтоКаталог()) Тогда + ВызватьИсключение "Для загрузки передан не каталог файловой системы <" + КаталогДляЗагрузки.ПолноеИмя + ">"; + КонецЕсли; + ДеревоТестов = ЗагрузитьКаталог(КонтекстЯдра, КаталогДляЗагрузки); + ДеревоТестов.Имя = КаталогДляЗагрузки.ПолноеИмя; + + Возврат ДеревоТестов; +КонецФункции + +&НаКлиенте +Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт + ЗагрузчикФайла = КонтекстЯдра.Плагин("ЗагрузчикФайла"); + Контекст = ЗагрузчикФайла.ПолучитьКонтекстПоПути(КонтекстЯдра, Путь); + + Возврат Контекст; +КонецФункции +// } Loader interface + +&НаКлиенте +Функция ЗагрузитьКаталог(КонтекстЯдра, КаталогДляЗагрузки) + КонтейнерКаталога = КонтекстЯдра.Плагин("ПостроительДереваТестов").СоздатьКонтейнер(КаталогДляЗагрузки.Имя); + НайденныеФайлы = НайтиФайлы(КаталогДляЗагрузки.ПолноеИмя, "*", Ложь); + Для каждого Файл из НайденныеФайлы Цикл + ОбработкаПрерыванияПользователя(); + Если Файл.ЭтоКаталог() Тогда + КонтейнерДочернегоКаталога = ЗагрузитьКаталог(КонтекстЯдра, Файл); + Если КонтейнерДочернегоКаталога.Строки.Количество() > 0 Тогда + КонтейнерКаталога.Строки.Добавить(КонтейнерДочернегоКаталога); + КонецЕсли; + ИначеЕсли НРег(Файл.Расширение) = ".epf" + ИЛИ НРег(Файл.Расширение) = ".erf" Тогда + КонтейнерФайла = ЗагрузитьФайл(КонтекстЯдра, Файл); + Если ЗначениеЗаполнено(КонтейнерФайла) И КонтейнерФайла.Строки.Количество() > 0 Тогда + КонтейнерКаталога.Строки.Добавить(КонтейнерФайла); + КонецЕсли; + КонецЕсли; + КонецЦикла; + + Возврат КонтейнерКаталога; +КонецФункции + +&НаКлиенте +Функция ЗагрузитьФайл(КонтекстЯдра, ФайлОбработки) + ЗагрузчикФайла = КонтекстЯдра.Плагин("ЗагрузчикФайла"); + Попытка + ДеревоТестовФайла = ЗагрузчикФайла.Загрузить(КонтекстЯдра, ФайлОбработки.ПолноеИмя); + Результат = ДеревоТестовФайла; + Если ДеревоТестовФайла.Строки.Количество() > 0 Тогда + Результат = ДеревоТестовФайла.Строки[0]; + КонецЕсли; + + Исключение + Сообщить("Не удалось загрузить файл " + ФайлОбработки.ПолноеИмя + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + Результат = Неопределено; + КонецПопытки; + + Возврат Результат; +КонецФункции + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции +// } Helpers diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index 837b8202..00000000 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ - // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); КонецФункции // } Plugin interface // { Loader interface &НаКлиенте Функция ВыбратьПутьИнтерактивно(ТекущийПуть = "") Экспорт ДиалогВыбораКаталога = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога); ДиалогВыбораКаталога.Каталог = ТекущийПуть; Результат = ""; Если ДиалогВыбораКаталога.Выбрать() Тогда Результат = ДиалогВыбораКаталога.Каталог; КонецЕсли; Возврат Результат; КонецФункции &НаКлиенте Функция Загрузить(КонтекстЯдра, Путь) Экспорт КаталогДляЗагрузки = Новый Файл(Путь); Если Не (КаталогДляЗагрузки.Существует() И КаталогДляЗагрузки.ЭтоКаталог()) Тогда ВызватьИсключение "Для загрузки передан не каталог файловой системы <" + КаталогДляЗагрузки.ПолноеИмя + ">"; КонецЕсли; ДеревоТестов = ЗагрузитьКаталог(КонтекстЯдра, КаталогДляЗагрузки); ДеревоТестов.Имя = КаталогДляЗагрузки.ПолноеИмя; Возврат ДеревоТестов; КонецФункции &НаКлиенте Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт ЗагрузчикФайла = КонтекстЯдра.Плагин("ЗагрузчикФайла"); Контекст = ЗагрузчикФайла.ПолучитьКонтекстПоПути(КонтекстЯдра, Путь); Возврат Контекст; КонецФункции // } Loader interface &НаКлиенте Функция ЗагрузитьКаталог(КонтекстЯдра, КаталогДляЗагрузки) КонтейнерКаталога = КонтекстЯдра.Плагин("ПостроительДереваТестов").СоздатьКонтейнер(КаталогДляЗагрузки.Имя); НайденныеФайлы = НайтиФайлы(КаталогДляЗагрузки.ПолноеИмя, "*", Ложь); Для каждого Файл из НайденныеФайлы Цикл ОбработкаПрерыванияПользователя(); Если Файл.ЭтоКаталог() Тогда КонтейнерДочернегоКаталога = ЗагрузитьКаталог(КонтекстЯдра, Файл); Если КонтейнерДочернегоКаталога.Строки.Количество() > 0 Тогда КонтейнерКаталога.Строки.Добавить(КонтейнерДочернегоКаталога); КонецЕсли; ИначеЕсли НРег(Файл.Расширение) = ".epf" Тогда КонтейнерФайла = ЗагрузитьФайл(КонтекстЯдра, Файл); Если ЗначениеЗаполнено(КонтейнерФайла) И КонтейнерФайла.Строки.Количество() > 0 Тогда КонтейнерКаталога.Строки.Добавить(КонтейнерФайла); КонецЕсли; КонецЕсли; КонецЦикла; Возврат КонтейнерКаталога; КонецФункции &НаКлиенте Функция ЗагрузитьФайл(КонтекстЯдра, ФайлОбработки) ЗагрузчикФайла = КонтекстЯдра.Плагин("ЗагрузчикФайла"); Попытка ДеревоТестовФайла = ЗагрузчикФайла.Загрузить(КонтекстЯдра, ФайлОбработки.ПолноеИмя); Результат = ДеревоТестовФайла; Если ДеревоТестовФайла.Строки.Количество() > 0 Тогда Результат = ДеревоТестовФайла.Строки[0]; КонецЕсли; Исключение Сообщить("Не удалось загрузить файл " + ФайлОбработки.ПолноеИмя + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Результат = Неопределено; КонецПопытки; Возврат Результат; КонецФункции // { Helpers &НаСервере Функция ЭтотОбъектНаСервере() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции // } Helpers \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/ObjectModule.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/ObjectModule.bsl" similarity index 98% rename from "src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/ObjectModule.txt" rename to "src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/ObjectModule.bsl" index a1243e6f..ca495c24 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/ObjectModule.txt" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/ObjectModule.bsl" @@ -58,7 +58,8 @@ Если КонтейнерДочернегоКаталога.Строки.Количество() > 0 Тогда КонтейнерКаталога.Строки.Добавить(КонтейнерДочернегоКаталога); КонецЕсли; - ИначеЕсли НРег(Файл.Расширение) = ".epf" Тогда + ИначеЕсли НРег(Файл.Расширение) = ".epf" + ИЛИ НРег(Файл.Расширение) = ".erf" Тогда КонтейнерФайла = ЗагрузитьФайл(КонтекстЯдра, Файл); Если ЗначениеЗаполнено(КонтейнерФайла) И КонтейнерФайла.Строки.Количество() > 0 Тогда КонтейнерКаталога.Строки.Добавить(КонтейнерФайла); diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/maps.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/maps.txt" index d55d2535..b22b49ed 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/maps.txt" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/maps.txt" @@ -1 +1 @@ -Form\Форма\Форма.txt-->b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4.0 (29, 123) +Form\Форма\Форма.bsl-->b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4.0 (29, 124) diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/renames.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/renames.txt" index 016c7042..1803b0c8 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/renames.txt" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/renames.txt" @@ -1,5 +1,5 @@ 47df0590-78c7-4bb0-bf65-a5c6ef41a8d7.0\info-->und\47df0590-78c7-4bb0-bf65-a5c6ef41a8d7.0\info -47df0590-78c7-4bb0-bf65-a5c6ef41a8d7.0\text-->ObjectModule.txt +47df0590-78c7-4bb0-bf65-a5c6ef41a8d7.0\text-->ObjectModule.bsl b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4-->und\b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4 b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4.0-->und\b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4.0 copyinfo-->und\copyinfo diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4.0" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4.0" index 5707dc11..5033f4dc 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4.0" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4.0" @@ -85,7 +85,8 @@ Если КонтейнерДочернегоКаталога.Строки.Количество() > 0 Тогда КонтейнерКаталога.Строки.Добавить(КонтейнерДочернегоКаталога); КонецЕсли; - ИначеЕсли НРег(Файл.Расширение) = "".epf"" Тогда + ИначеЕсли НРег(Файл.Расширение) = "".epf"" + ИЛИ НРег(Файл.Расширение) = "".erf"" Тогда КонтейнерФайла = ЗагрузитьФайл(КонтекстЯдра, Файл); Если ЗначениеЗаполнено(КонтейнерФайла) И КонтейнерФайла.Строки.Количество() > 0 Тогда КонтейнерКаталога.Строки.Добавить(КонтейнерФайла); diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/versions" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/versions" index 01eff009..f985d8f8 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/versions" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/und/versions" @@ -1 +1 @@ -{1,9,"",a73548cb-8b09-4339-8e65-5dafbc67e9ba,"versions",836f05f6-3716-4525-b8a7-88884cc8e1bf,"root",41c35924-0c56-4645-900c-4012d0cc1ecf,"b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4",e55900cb-dc21-430b-b801-929e89884b34,"d8b3f25c-4b0c-4bad-8a2e-f7cf4018a448",8e5cff37-ef98-4a5c-86dc-c11d1ac0dbe5,"version",a3e2635a-3df5-4011-9887-a2c5b784e886,"47df0590-78c7-4bb0-bf65-a5c6ef41a8d7.0",ae0ef434-0699-4a5f-a4a7-53a1fb8e84cc,"b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4.0",b70ab356-25f4-483e-948b-8db3c9344f08,"copyinfo",338ec1da-041e-4029-afcf-50abe78abc74} \ No newline at end of file +{1,9,"",c976b57c-a78d-4a15-88d2-bc1bfab6b0a5,"versions",4faab415-d1c3-49ca-bf2f-9a49d85c217e,"root",8e10878a-c30c-4f77-b2ea-8070a6c7061b,"b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4",e3f9aec2-f9af-459f-acdc-a5d857f5832d,"d8b3f25c-4b0c-4bad-8a2e-f7cf4018a448",5f22a51b-d89c-4cb5-a591-3b2c47646211,"version",52a1a5ee-fdbb-40b1-9449-47f637fa0871,"47df0590-78c7-4bb0-bf65-a5c6ef41a8d7.0",3f5e0575-79e6-4a48-ae14-4790b3824efd,"b5f25876-92c4-4d3f-ac5d-d5ee489cf5d4.0",1b5a5666-3fb3-4b28-ab81-c87949865cd0,"copyinfo",4beb48c3-57cb-49a4-9a4c-01201dd22437} \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..1da1574e --- /dev/null +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,374 @@ +&НаКлиенте +Перем КэшПостроительДереваТестов; +&НаКлиенте +Перем ЗагружаемыйПуть; + +&НаКлиенте +Перем КонтейнерТестов; +&НаКлиенте +Перем ТекущаяГруппа; + +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт +КонецПроцедуры + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +// { Loader interface +&НаКлиенте +Функция ВыбратьПутьИнтерактивно(ТекущийПуть = "") Экспорт + ДиалогВыбораТеста = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); + ДиалогВыбораТеста.Фильтр = "Обработка-тест (*.epf)|*.epf|Отчет-тест (*.erf)|*.erf|Все файлы|*"; + ДиалогВыбораТеста.МножественныйВыбор = Истина; + ДиалогВыбораТеста.ПроверятьСуществованиеФайла = Истина; + ДиалогВыбораТеста.ПолноеИмяФайла = ТекущийПуть; + + Результат = Новый ТекстовыйДокумент; + Если ДиалогВыбораТеста.Выбрать() Тогда + Для каждого ПолноеИмяФайла Из ДиалогВыбораТеста.ВыбранныеФайлы Цикл + Результат.ДобавитьСтроку(ПолноеИмяФайла); + КонецЦикла; + КонецЕсли; + Текст = Результат.ПолучитьТекст(); + + Возврат Лев(Текст, СтрДлина(Текст) - 1); +КонецФункции + +&НаКлиенте +Функция Загрузить(КонтекстЯдра, Путь) Экспорт + + ПолноеИмяБраузераТестов = КонтекстЯдра.Объект.ПолноеИмяБраузераТестов; + + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); + ДеревоТестов = Неопределено; + Для Сч = 1 По СтрЧислоСтрок(Путь) Цикл + ФайлОбработки = Новый Файл(СтрПолучитьСтроку(Путь, Сч)); + ПроверитьКорректностьФайла(ФайлОбработки); + + Если ДеревоТестов = Неопределено Тогда + ДеревоТестов = ПостроительДереваТестов.СоздатьКонтейнер(ФайлОбработки.Путь); + КонецЕсли; + + КонтекстЯдра.ПодключитьВнешнююОбработку(ФайлОбработки); + + КонтейнерССервернымиТестамиОбработки = ЗагрузитьФайлНаСервере(ФайлОбработки.ПолноеИмя); + КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки); + Если КонтейнерСКлиентскимиТестамиОбработки.Строки.Количество() > 0 Тогда + КонтейнерССервернымиТестамиОбработки.Строки.Добавить(КонтейнерСКлиентскимиТестамиОбработки); + КонецЕсли; + Если КонтейнерССервернымиТестамиОбработки.Строки.Количество() > 0 Тогда + ДеревоТестов.Строки.Добавить(КонтейнерССервернымиТестамиОбработки); + КонецЕсли; + КонецЦикла; + + Возврат ДеревоТестов; +КонецФункции + +&НаКлиенте +Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт + Перем Контекст; + Если ЭтоПутьККлиентскомуКонтексту(Путь) Тогда + Контекст = ПолучитьКлиентскийКонтекст(КонтекстЯдра, Путь); + Иначе + Контекст = ПолучитьСерверныйКонтекст(КонтекстЯдра, Путь); + КонецЕсли; + + Возврат Контекст; +КонецФункции +// } Loader interface + +&НаКлиенте +Функция ПолучитьКлиентскийКонтекст(КонтекстЯдра, Путь) + ПрефиксПутейСФормами = ПрефиксПутейСФормами(); + ФайлОбработки = Новый Файл(Сред(Путь, СтрДлина(ПрефиксПутейСФормами) + 1)); + ПроверитьКорректностьФайла(ФайлОбработки); + КонтекстЯдра.ПодключитьВнешнююОбработку(ФайлОбработки); + Контекст = ПолучитьФорму("ВнешняяОбработка." + ФайлОбработки.ИмяБезРасширения + ".Форма", , ЭтаФорма, Новый УникальныйИдентификатор); + Если ПеременнаяСодержитСвойство(Контекст, "ПутьКФайлуПолный") Тогда + Контекст.ПутьКФайлуПолный = ФайлОбработки.ПолноеИмя; + КонецЕсли; + + Возврат Контекст; +КонецФункции + +&НаКлиенте +Функция ПолучитьСерверныйКонтекст(КонтекстЯдра, Путь) + ФайлОбработки = Новый Файл(Путь); + ПроверитьКорректностьФайла(ФайлОбработки); + КонтекстЯдра.ПодключитьВнешнююОбработку(ФайлОбработки); + Контекст = КонтекстЯдра.ПолучитьОписаниеКонтекстаВыполнения(ФайлОбработки.ИмяБезРасширения); + + Возврат Контекст; +КонецФункции + +&НаКлиенте +Процедура ПроверитьКорректностьФайла(Файл) + Если Не Файл.Существует() Тогда + ВызватьИсключение "Переданный файл не существует файл <" + Файл.ПолноеИмя + ">"; + КонецЕсли; + Если Файл.ЭтоКаталог() Тогда + ВызватьИсключение "Передан каталог вместо файла <" + Файл.ПолноеИмя + ">"; + КонецЕсли; +КонецПроцедуры + +&НаСервере +Функция ЗагрузитьФайлНаСервере(ПолныйПутьКОбработкеНаКлиенте) + + КонтекстЯдра = ПолучитьКонтекстЯдраНаСервере(); + + ПостроительДереваТестов = КонтекстЯдра.СоздатьОбъектПлагина("ПостроительДереваТестов"); + ФайлОбработки = Новый Файл(ПолныйПутьКОбработкеНаКлиенте); + Контейнер = ЭтотОбъектНаСервере().ЗагрузитьФайл(ПостроительДереваТестов, ФайлОбработки); + + Возврат Контейнер; +КонецФункции + +&НаКлиенте +Функция ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки) + + ЭтоФайлОтчета = (НРег(ФайлОбработки.Расширение) = ".erf"); + + Если ЭтоФайлОтчета Тогда + ФормаОбработки = ПолучитьФорму("ВнешнийОтчет." + ФайлОбработки.ИмяБезРасширения + ".Форма"); + Иначе + ФормаОбработки = ПолучитьФорму("ВнешняяОбработка." + ФайлОбработки.ИмяБезРасширения + ".Форма"); + КонецЕсли; + + Попытка + Контейнер = ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки); + Исключение + ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + Если ЭтоНовыйФорматОбработки(ТекстОшибки) Тогда + ВызватьИсключение; + Иначе + Контейнер = ЗагрузитьТестыВСтаромФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки); + КонецЕсли; + КонецПопытки; + + Возврат Контейнер; +КонецФункции + +&НаКлиенте +Функция ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки) + ЗагружаемыйПуть = ФайлОбработки.ПолноеИмя; + КэшПостроительДереваТестов = ПостроительДереваТестов; + КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(ПрефиксПутейСФормами() + ФайлОбработки.ИмяБезРасширения, ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма); + ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма); + Результат = КонтейнерТестов; + КонтейнерТестов = Неопределено; + ТекущаяГруппа = Неопределено; + + Возврат Результат; +КонецФункции + +&НаКлиенте +Функция ЭтоНовыйФорматОбработки(Знач ТекстОшибки) + ЭтоНовыйФорматОбработки = Не ЕстьОшибка_МетодОбъектаНеОбнаружен(ТекстОшибки, "ЗаполнитьНаборТестов"); + + Возврат ЭтоНовыйФорматОбработки; +КонецФункции + +&НаКлиенте +Функция ЗагрузитьТестыВСтаромФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки) + Попытка + СписокТестов = ФормаОбработки.ПолучитьСписокТестов(); + Исключение + Описание = ОписаниеОшибки(); + Если Найти(Описание, "Недостаточно фактических параметров") > 0 Тогда + ВызватьИсключение "Старый формат тестов в обработке тестов <"+ФайлОбработки.ПолноеИмя+">."+Символы.ПС+ + "Метод ПолучитьСписокТестов сейчас не принимает параметров"; + КонецЕсли; + + Если Найти(Описание, "Метод объекта не обнаружен (ПолучитьСписокТестов)") = 0 Тогда + ВызватьИсключение Описание; + КонецЕсли; + КонецПопытки; + СлучайныйПорядокВыполнения = Истина; + Попытка + СлучайныйПорядокВыполнения = ФормаОбработки.РазрешенСлучайныйПорядокВыполненияТестов(); + Исключение + КонецПопытки; + + ИмяКонтейнера = ПрефиксПутейСФормами() + ФайлОбработки.ИмяБезРасширения; + Путь = ПрефиксПутейСФормами() + ФайлОбработки.ПолноеИмя; + Контейнер = ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения); + Контейнер.ИконкаУзла = ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма; + + Возврат Контейнер; +КонецФункции + +&НаСервере +Функция ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения = Истина) + + КонтекстЯдра = ПолучитьКонтекстЯдраНаСервере(); + + ПостроительДереваТестов = КонтекстЯдра.СоздатьОбъектПлагина("ПостроительДереваТестов"); + Контейнер = ЭтотОбъектНаСервере().ПолучитьКонтейнерДереваТестовПоСпискуТестов(ПостроительДереваТестов, СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения); + + Возврат Контейнер; +КонецФункции + +&НаКлиенте +Функция ЭтоПутьККлиентскомуКонтексту(Путь) + ПрефиксПутейСФормами = ПрефиксПутейСФормами(); + Результат = (Найти(Путь, ПрефиксПутейСФормами) = 1); + + Возврат Результат; +КонецФункции + +&НаКлиенте +Функция ПрефиксПутейСФормами() + Возврат "УпрФорма # "; +КонецФункции + +// { API нового формата +&НаКлиенте +Процедура СлучайныйПорядокВыполнения() Экспорт + Если ЗначениеЗаполнено(КонтейнерТестов) Тогда + КонтейнерТестов.СлучайныйПорядокВыполнения = Истина; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура СтрогийПорядокВыполнения() Экспорт + Если ЗначениеЗаполнено(КонтейнерТестов) Тогда + КонтейнерТестов.СлучайныйПорядокВыполнения = Ложь; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура НачатьГруппу(Знач ИмяГруппы, Знач СтрогийПорядокВыполнения = Ложь) Экспорт + ТекущаяГруппа = КэшПостроительДереваТестов.СоздатьКонтейнер(ИмяГруппы, КэшПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Группа); + ТекущаяГруппа.СлучайныйПорядокВыполнения = Не СтрогийПорядокВыполнения; + КонтейнерТестов.Строки.Добавить(ТекущаяГруппа); +КонецПроцедуры + +&НаКлиенте +Функция Добавить(Знач ИмяМетода, Знач Параметры = Неопределено, Знач Представление = "") Экспорт + Элемент = КэшПостроительДереваТестов.СоздатьЭлемент(ПрефиксПутейСФормами() + ЗагружаемыйПуть, ИмяМетода, Представление); + Если ЗначениеЗаполнено(Параметры) И ТипЗнч(Параметры) = Тип("Массив") Тогда + Элемент.Параметры = Параметры; + КонецЕсли; + Если ЗначениеЗаполнено(ТекущаяГруппа) Тогда + ТекущаяГруппа.Строки.Добавить(Элемент); + Иначе + КонтейнерТестов.Строки.Добавить(Элемент); + КонецЕсли; + + Возврат Элемент; +КонецФункции + +&НаКлиенте +Функция ПараметрыТеста(Знач Парам1, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, Знач Парам4 = Неопределено, Знач Парам5 = Неопределено, Знач Парам6 = Неопределено, Знач Парам7 = Неопределено, Знач Парам8 = Неопределено, Знач Парам9 = Неопределено) Экспорт + ВсеПараметры = Новый Массив; + ВсеПараметры.Добавить(Парам1); + ВсеПараметры.Добавить(Парам2); + ВсеПараметры.Добавить(Парам3); + ВсеПараметры.Добавить(Парам4); + ВсеПараметры.Добавить(Парам5); + ВсеПараметры.Добавить(Парам6); + ВсеПараметры.Добавить(Парам7); + ВсеПараметры.Добавить(Парам8); + ВсеПараметры.Добавить(Парам9); + + ИндексСПоследнимПараметром = 0; + Для Сч = 0 По ВсеПараметры.ВГраница() Цикл + Индекс = ВсеПараметры.ВГраница() - Сч; + Если ВсеПараметры[Индекс] <> Неопределено Тогда + ИндексСПоследнимПараметром = Индекс; + Прервать; + КонецЕсли; + КонецЦикла; + + ПараметрыТеста = Новый Массив; + Для Сч = 0 По ИндексСПоследнимПараметром Цикл + ПараметрыТеста.Добавить(ВсеПараметры[Сч]); + КонецЦикла; + + Возврат ПараметрыТеста; +КонецФункции +// } API нового формата + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции + +&НаКлиенте +Функция ЕстьОшибка_МетодОбъектаНеОбнаружен(Знач ТекстОшибки, Знач ИмяМетода) + Результат = Ложь; + Если Найти(текстОшибки, "Метод объекта не обнаружен (" + ИмяМетода + ")") > 0 + ИЛИ Найти(текстОшибки, "Object method not found (" + ИмяМетода + ")") > 0 Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; +КонецФункции +// } Helpers + +// Универсальная функция для проверки наличия +// свойств у значения любого типа данных +// Переменные: +// 1. Переменная - переменная любого типа, +// для которой необходимо проверить наличие свойства +// 2. ИмяСвойства - переменная типа "Строка", +// содержащая искомое свойства +// +&НаКлиентеНаСервереБезКонтекста +Функция ПеременнаяСодержитСвойство(Переменная, ИмяСвойства) + // Инициализируем структуру для теста + // с ключом (значение переменной "ИмяСвойства") + // и значением произвольного GUID'а + GUIDПроверка = Новый УникальныйИдентификатор; + СтруктураПроверка = Новый Структура; + СтруктураПроверка.Вставить(ИмяСвойства, GUIDПроверка); + // Заполняем созданную структуру из переданного + // значения переменной + ЗаполнитьЗначенияСвойств(СтруктураПроверка, Переменная); + // Если значение для свойства структуры осталось + // NULL, то искомое свойство не найдено, + // и наоборот. + Если СтруктураПроверка[ИмяСвойства] = GUIDПроверка Тогда + Возврат Ложь; + Иначе + Возврат Истина; + КонецЕсли; +КонецФункции + +&НаСервере +Функция ПолучитьКонтекстЯдраНаСервере() + + // Получаем доступ к серверному контексту обработки с использованием + // полного имени метаданных браузера тестов. Иначе нет возможности получить + // доступ к серверному контексту ядра, т.к. изначально вызов был выполнен на клиенте. + // При передаче на сервер клиентский контекст теряется. + КонтекстЯдра = Неопределено; + МетаданныеЯдра = Метаданные.НайтиПоПолномуИмени(ПолноеИмяБраузераТестов); + Если НЕ МетаданныеЯдра = Неопределено + И Метаданные.Обработки.Содержит(МетаданныеЯдра) Тогда + ИмяОбработкиКонекстаЯдра = СтрЗаменить(ПолноеИмяБраузераТестов, "Обработка", "Обработки"); + Выполнить("КонтекстЯдра = " + ИмяОбработкиКонекстаЯдра + ".Создать()"); + Иначе + ИмяОбработкиКонекстаЯдра = СтрЗаменить(ПолноеИмяБраузераТестов, "ВнешняяОбработка", "ВнешниеОбработки"); + ИмяОбработкиКонекстаЯдра = СтрЗаменить(ИмяОбработкиКонекстаЯдра, ".", Символы.ПС); + МенеджерОбъектов = СтрПолучитьСтроку(ИмяОбработкиКонекстаЯдра, 1); + ИмяОбъекта = СтрПолучитьСтроку(ИмяОбработкиКонекстаЯдра, 2); + Выполнить("КонтекстЯдра = " + МенеджерОбъектов + ".Создать("""+ИмяОбъекта+""")"); + КонецЕсли; + + Возврат КонтекстЯдра; + +КонецФункции + +// } Подсистема конфигурации xUnitFor1C diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index 7485c980..00000000 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ -&НаКлиенте Перем КэшПостроительДереваТестов; &НаКлиенте Перем ЗагружаемыйПуть; &НаКлиенте Перем КонтейнерТестов; &НаКлиенте Перем ТекущаяГруппа; // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаКлиенте Процедура Инициализация(КонтекстЯдраПараметр) Экспорт КонецПроцедуры &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); КонецФункции // } Plugin interface // { Loader interface &НаКлиенте Функция ВыбратьПутьИнтерактивно(ТекущийПуть = "") Экспорт ДиалогВыбораТеста = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогВыбораТеста.Фильтр = "Обработка-тест (*.epf)|*.epf|Все файлы|*"; ДиалогВыбораТеста.МножественныйВыбор = Истина; ДиалогВыбораТеста.ПроверятьСуществованиеФайла = Истина; ДиалогВыбораТеста.ПолноеИмяФайла = ТекущийПуть; Результат = Новый ТекстовыйДокумент; Если ДиалогВыбораТеста.Выбрать() Тогда Для каждого ПолноеИмяФайла Из ДиалогВыбораТеста.ВыбранныеФайлы Цикл Результат.ДобавитьСтроку(ПолноеИмяФайла); КонецЦикла; КонецЕсли; Текст = Результат.ПолучитьТекст(); Возврат Лев(Текст, СтрДлина(Текст) - 1); КонецФункции &НаКлиенте Функция Загрузить(КонтекстЯдра, Путь) Экспорт ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); ДеревоТестов = Неопределено; Для Сч = 1 По СтрЧислоСтрок(Путь) Цикл ФайлОбработки = Новый Файл(СтрПолучитьСтроку(Путь, Сч)); ПроверитьКорректностьФайла(ФайлОбработки); Если ДеревоТестов = Неопределено Тогда ДеревоТестов = ПостроительДереваТестов.СоздатьКонтейнер(ФайлОбработки.Путь); КонецЕсли; КонтекстЯдра.ПодключитьВнешнююОбработку(ФайлОбработки); КонтейнерССервернымиТестамиОбработки = ЗагрузитьФайлНаСервере(ФайлОбработки.ПолноеИмя); КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки); Если КонтейнерСКлиентскимиТестамиОбработки.Строки.Количество() > 0 Тогда КонтейнерССервернымиТестамиОбработки.Строки.Добавить(КонтейнерСКлиентскимиТестамиОбработки); КонецЕсли; Если КонтейнерССервернымиТестамиОбработки.Строки.Количество() > 0 Тогда ДеревоТестов.Строки.Добавить(КонтейнерССервернымиТестамиОбработки); КонецЕсли; КонецЦикла; Возврат ДеревоТестов; КонецФункции &НаКлиенте Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт Перем Контекст; Если ЭтоПутьККлиентскомуКонтексту(Путь) Тогда Контекст = ПолучитьКлиентскийКонтекст(КонтекстЯдра, Путь); Иначе Контекст = ПолучитьСерверныйКонтекст(КонтекстЯдра, Путь); КонецЕсли; Возврат Контекст; КонецФункции // } Loader interface &НаКлиенте Функция ПолучитьКлиентскийКонтекст(КонтекстЯдра, Путь) ПрефиксПутейСФормами = ПрефиксПутейСФормами(); ФайлОбработки = Новый Файл(Сред(Путь, СтрДлина(ПрефиксПутейСФормами) + 1)); ПроверитьКорректностьФайла(ФайлОбработки); КонтекстЯдра.ПодключитьВнешнююОбработку(ФайлОбработки); Контекст = ПолучитьФорму("ВнешняяОбработка." + ФайлОбработки.ИмяБезРасширения + ".Форма", , ЭтаФорма, Новый УникальныйИдентификатор); Возврат Контекст; КонецФункции &НаКлиенте Функция ПолучитьСерверныйКонтекст(КонтекстЯдра, Путь) ФайлОбработки = Новый Файл(Путь); ПроверитьКорректностьФайла(ФайлОбработки); КонтекстЯдра.ПодключитьВнешнююОбработку(ФайлОбработки); Контекст = КонтекстЯдра.ПолучитьОписаниеКонтекстаВыполнения(ФайлОбработки.ИмяБезРасширения); Возврат Контекст; КонецФункции &НаКлиенте Процедура ПроверитьКорректностьФайла(Файл) Если Не Файл.Существует() Тогда ВызватьИсключение "Переданный файл не существует файл <" + Файл.ПолноеИмя + ">"; КонецЕсли; Если Файл.ЭтоКаталог() Тогда ВызватьИсключение "Передан каталог вместо файла <" + Файл.ПолноеИмя + ">"; КонецЕсли; КонецПроцедуры &НаСервере Функция ЗагрузитьФайлНаСервере(ПолныйПутьКОбработкеНаКлиенте) ПостроительДереваТестов = ВнешниеОбработки.Создать("ПостроительДереваТестов", Ложь); ФайлОбработки = Новый Файл(ПолныйПутьКОбработкеНаКлиенте); Контейнер = ЭтотОбъектНаСервере().ЗагрузитьФайл(ПостроительДереваТестов, ФайлОбработки); Возврат Контейнер; КонецФункции &НаКлиенте Функция ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки) ФормаОбработки = ПолучитьФорму("ВнешняяОбработка." + ФайлОбработки.ИмяБезРасширения + ".Форма"); Попытка Контейнер = ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки); Исключение ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); Если ЭтоНовыйФорматОбработки(ТекстОшибки) Тогда ВызватьИсключение; Иначе Контейнер = ЗагрузитьТестыВСтаромФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки); КонецЕсли; КонецПопытки; Возврат Контейнер; КонецФункции &НаКлиенте Функция ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки) ЗагружаемыйПуть = ФайлОбработки.ПолноеИмя; КэшПостроительДереваТестов = ПостроительДереваТестов; КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(ПрефиксПутейСФормами() + ФайлОбработки.ИмяБезРасширения, ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма); ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма); Результат = КонтейнерТестов; КонтейнерТестов = Неопределено; ТекущаяГруппа = Неопределено; Возврат Результат; КонецФункции &НаКлиенте Функция ЭтоНовыйФорматОбработки(Знач ТекстОшибки) ЭтоНовыйФорматОбработки = Не ЕстьОшибка_МетодОбъектаНеОбнаружен(ТекстОшибки, "ЗаполнитьНаборТестов"); Возврат ЭтоНовыйФорматОбработки; КонецФункции &НаКлиенте Функция ЗагрузитьТестыВСтаромФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки) Попытка СписокТестов = ФормаОбработки.ПолучитьСписокТестов(); Исключение Описание = ОписаниеОшибки(); Если Найти(Описание, "Недостаточно фактических параметров") > 0 Тогда ВызватьИсключение "Старый формат тестов в обработке тестов <"+ФайлОбработки.ПолноеИмя+">."+Символы.ПС+ "Метод ПолучитьСписокТестов сейчас не принимает параметров"; КонецЕсли; Если Найти(Описание, "Метод объекта не обнаружен (ПолучитьСписокТестов)") = 0 Тогда ВызватьИсключение Описание; КонецЕсли; КонецПопытки; СлучайныйПорядокВыполнения = Истина; Попытка СлучайныйПорядокВыполнения = ФормаОбработки.РазрешенСлучайныйПорядокВыполненияТестов(); Исключение КонецПопытки; Контейнер = ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ПрефиксПутейСФормами() + ФайлОбработки.ИмяБезРасширения, ПрефиксПутейСФормами() + ФайлОбработки.ПолноеИмя, СлучайныйПорядокВыполнения); Контейнер.ИконкаУзла = ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма; Возврат Контейнер; КонецФункции &НаСервере Функция ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения = Истина) ПостроительДереваТестов = ВнешниеОбработки.Создать("ПостроительДереваТестов", Ложь); Контейнер = ЭтотОбъектНаСервере().ПолучитьКонтейнерДереваТестовПоСпискуТестов(ПостроительДереваТестов, СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения); Возврат Контейнер; КонецФункции &НаКлиенте Функция ЭтоПутьККлиентскомуКонтексту(Путь) ПрефиксПутейСФормами = ПрефиксПутейСФормами(); Результат = (Найти(Путь, ПрефиксПутейСФормами) = 1); Возврат Результат; КонецФункции &НаКлиенте Функция ПрефиксПутейСФормами() Возврат "УпрФорма # "; КонецФункции // { API нового формата &НаКлиенте Процедура СлучайныйПорядокВыполнения() Экспорт Если ЗначениеЗаполнено(КонтейнерТестов) Тогда КонтейнерТестов.СлучайныйПорядокВыполнения = Истина; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура СтрогийПорядокВыполнения() Экспорт Если ЗначениеЗаполнено(КонтейнерТестов) Тогда КонтейнерТестов.СлучайныйПорядокВыполнения = Ложь; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура НачатьГруппу(Знач ИмяГруппы, Знач СтрогийПорядокВыполнения = Ложь) Экспорт ТекущаяГруппа = КэшПостроительДереваТестов.СоздатьКонтейнер(ИмяГруппы, КэшПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Группа); ТекущаяГруппа.СлучайныйПорядокВыполнения = Не СтрогийПорядокВыполнения; КонтейнерТестов.Строки.Добавить(ТекущаяГруппа); КонецПроцедуры &НаКлиенте Функция Добавить(Знач ИмяМетода, Знач Параметры = Неопределено, Знач Представление = "") Экспорт Элемент = КэшПостроительДереваТестов.СоздатьЭлемент(ПрефиксПутейСФормами() + ЗагружаемыйПуть, ИмяМетода, Представление); Если ЗначениеЗаполнено(Параметры) И ТипЗнч(Параметры) = Тип("Массив") Тогда Элемент.Параметры = Параметры; КонецЕсли; Если ЗначениеЗаполнено(ТекущаяГруппа) Тогда ТекущаяГруппа.Строки.Добавить(Элемент); Иначе КонтейнерТестов.Строки.Добавить(Элемент); КонецЕсли; Возврат Элемент; КонецФункции &НаКлиенте Функция ПараметрыТеста(Знач Парам1, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, Знач Парам4 = Неопределено, Знач Парам5 = Неопределено, Знач Парам6 = Неопределено, Знач Парам7 = Неопределено, Знач Парам8 = Неопределено, Знач Парам9 = Неопределено) Экспорт ВсеПараметры = Новый Массив; ВсеПараметры.Добавить(Парам1); ВсеПараметры.Добавить(Парам2); ВсеПараметры.Добавить(Парам3); ВсеПараметры.Добавить(Парам4); ВсеПараметры.Добавить(Парам5); ВсеПараметры.Добавить(Парам6); ВсеПараметры.Добавить(Парам7); ВсеПараметры.Добавить(Парам8); ВсеПараметры.Добавить(Парам9); ИндексСПоследнимПараметром = 0; Для Сч = 0 По ВсеПараметры.ВГраница() Цикл Индекс = ВсеПараметры.ВГраница() - Сч; Если ВсеПараметры[Индекс] <> Неопределено Тогда ИндексСПоследнимПараметром = Индекс; Прервать; КонецЕсли; КонецЦикла; ПараметрыТеста = Новый Массив; Для Сч = 0 По ИндексСПоследнимПараметром Цикл ПараметрыТеста.Добавить(ВсеПараметры[Сч]); КонецЦикла; Возврат ПараметрыТеста; КонецФункции // } API нового формата // { Helpers &НаСервере Функция ЭтотОбъектНаСервере() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции &НаКлиенте Функция ЕстьОшибка_МетодОбъектаНеОбнаружен(Знач ТекстОшибки, Знач ИмяМетода) Результат = Ложь; Если Найти(текстОшибки, "Метод объекта не обнаружен (" + ИмяМетода + ")") > 0 ИЛИ Найти(текстОшибки, "Object method not found (" + ИмяМетода + ")") > 0 Тогда Результат = Истина; КонецЕсли; Возврат Результат; КонецФункции // } Helpers \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/ObjectModule.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/ObjectModule.bsl" similarity index 89% rename from "src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/ObjectModule.txt" rename to "src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/ObjectModule.bsl" index fa4ad593..6bbc206d 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/ObjectModule.txt" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/ObjectModule.bsl" @@ -23,7 +23,7 @@ #Если ТолстыйКлиентОбычноеПриложение Тогда Функция ВыбратьПутьИнтерактивно(ТекущийПуть = "") Экспорт ДиалогВыбораТеста = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); - ДиалогВыбораТеста.Фильтр = "Обработка-тест (*.epf)|*.epf|Все файлы|*"; + ДиалогВыбораТеста.Фильтр = "Обработка-тест (*.epf)|*.epf|Отчет-тест (*.erf)|*.erf|Все файлы|*"; ДиалогВыбораТеста.МножественныйВыбор = Истина; ДиалогВыбораТеста.ПроверятьСуществованиеФайла = Истина; ДиалогВыбораТеста.ПолноеИмяФайла = ТекущийПуть; @@ -45,7 +45,6 @@ ДеревоТестов = Неопределено; Для Сч = 1 По СтрЧислоСтрок(Путь) Цикл ФайлОбработки = Новый Файл(СтрПолучитьСтроку(Путь, Сч)); - ПроверитьКорректностьФайла(ФайлОбработки); Если ДеревоТестов = Неопределено Тогда ДеревоТестов = ПостроительДереваТестов.СоздатьКонтейнер(ФайлОбработки.Путь); @@ -62,14 +61,36 @@ Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт ФайлОбработки = Новый Файл(Путь); - ПроверитьКорректностьФайла(ФайлОбработки); - Обработка = ВнешниеОбработки.Создать(ФайлОбработки.ПолноеИмя, Ложь); + Обработка = ПолучитьКонтекстОбработки(ФайлОбработки); Возврат Обработка; КонецФункции // } Loader interface +Функция ПолучитьКонтекстОбработки(ФайлОбработки) + + ЭтоФайлОтчета = (НРег(ФайлОбработки.Расширение) = ".erf"); + + Попытка + Если ЭтоФайлОтчета Тогда + Обработка = ВнешниеОтчеты.Создать(ФайлОбработки.ИмяБезРасширения, Ложь); + Иначе + Обработка = ВнешниеОбработки.Создать(ФайлОбработки.ИмяБезРасширения, Ложь); + КонецЕсли; + Исключение + ПроверитьКорректностьФайла(ФайлОбработки); + + Если ЭтоФайлОтчета Тогда + Обработка = ВнешниеОтчеты.Создать(ФайлОбработки.ПолноеИмя, Ложь); + Иначе + Обработка = ВнешниеОбработки.Создать(ФайлОбработки.ПолноеИмя, Ложь); + КонецЕсли; + КонецПопытки; + Возврат Обработка; + +КонецФункции + Процедура ПроверитьКорректностьФайла(Файл) Если Не Файл.Существует() Тогда ВызватьИсключение "Переданный файл не существует файл <" + Файл.ПолноеИмя + ">"; @@ -80,7 +101,7 @@ КонецПроцедуры Функция ЗагрузитьФайл(ПостроительДереваТестов, ФайлОбработки) Экспорт - Обработка = ВнешниеОбработки.Создать(ФайлОбработки.ПолноеИмя, Ложь); + Обработка = ПолучитьКонтекстОбработки(ФайлОбработки); Попытка Контейнер = ЗагрузитьТестыВНовомФормате(ПостроительДереваТестов, Обработка, ФайлОбработки); Исключение @@ -98,7 +119,12 @@ Функция ЗагрузитьТестыВНовомФормате(ПостроительДереваТестов, Обработка, ФайлОбработки) ЗагружаемыйПуть = ФайлОбработки.ПолноеИмя; КэшПостроительДереваТестов = ПостроительДереваТестов; - КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(ФайлОбработки.ИмяБезРасширения, ПостроительДереваТестов.ИконкиУзловДереваТестов.Обработка); + Если НРег(ФайлОбработки.Расширение) = ".erf" Тогда + ИконкаУзла = ПостроительДереваТестов.ИконкиУзловДереваТестов.Отчет; + Иначе + ИконкаУзла = ПостроительДереваТестов.ИконкиУзловДереваТестов.Обработка; + КонецЕсли; + КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(ФайлОбработки.ИмяБезРасширения, ИконкаУзла); Обработка.ЗаполнитьНаборТестов(ЭтотОбъект); Результат = КонтейнерТестов; КонтейнерТестов = Неопределено; diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/maps.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/maps.txt" index a0d4b300..0815d097 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/maps.txt" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/maps.txt" @@ -1 +1 @@ -Form\Форма\Форма.txt-->d75f146d-5027-4604-80fd-3b704ddd86a8.0 (29, 325) +Form\Форма\Форма.bsl-->d75f146d-5027-4604-80fd-3b704ddd86a8.0 (29, 403) diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/renames.txt" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/renames.txt" index 3c0c8e26..4d07c6f4 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/renames.txt" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/renames.txt" @@ -3,7 +3,7 @@ copyinfo-->und\copyinfo d75f146d-5027-4604-80fd-3b704ddd86a8-->und\d75f146d-5027-4604-80fd-3b704ddd86a8 d75f146d-5027-4604-80fd-3b704ddd86a8.0-->und\d75f146d-5027-4604-80fd-3b704ddd86a8.0 dfe532e1-d0ef-4008-afd4-214781ee4960.0\info-->und\dfe532e1-d0ef-4008-afd4-214781ee4960.0\info -dfe532e1-d0ef-4008-afd4-214781ee4960.0\text-->ObjectModule.txt +dfe532e1-d0ef-4008-afd4-214781ee4960.0\text-->ObjectModule.bsl root-->und\root version-->und\version versions-->und\versions diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/d75f146d-5027-4604-80fd-3b704ddd86a8.0" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/d75f146d-5027-4604-80fd-3b704ddd86a8.0" index 27983413..bbf5830b 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/d75f146d-5027-4604-80fd-3b704ddd86a8.0" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/d75f146d-5027-4604-80fd-3b704ddd86a8.0" @@ -56,7 +56,7 @@ &НаКлиенте Функция ВыбратьПутьИнтерактивно(ТекущийПуть = """") Экспорт ДиалогВыбораТеста = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); - ДиалогВыбораТеста.Фильтр = ""Обработка-тест (*.epf)|*.epf|Все файлы|*""; + ДиалогВыбораТеста.Фильтр = ""Обработка-тест (*.epf)|*.epf|Отчет-тест (*.erf)|*.erf|Все файлы|*""; ДиалогВыбораТеста.МножественныйВыбор = Истина; ДиалогВыбораТеста.ПроверятьСуществованиеФайла = Истина; ДиалогВыбораТеста.ПолноеИмяФайла = ТекущийПуть; @@ -74,6 +74,9 @@ &НаКлиенте Функция Загрузить(КонтекстЯдра, Путь) Экспорт + + ПолноеИмяБраузераТестов = КонтекстЯдра.Объект.ПолноеИмяБраузераТестов; + ПостроительДереваТестов = КонтекстЯдра.Плагин(""ПостроительДереваТестов""); ДеревоТестов = Неопределено; Для Сч = 1 По СтрЧислоСтрок(Путь) Цикл @@ -119,6 +122,9 @@ ПроверитьКорректностьФайла(ФайлОбработки); КонтекстЯдра.ПодключитьВнешнююОбработку(ФайлОбработки); Контекст = ПолучитьФорму(""ВнешняяОбработка."" + ФайлОбработки.ИмяБезРасширения + "".Форма"", , ЭтаФорма, Новый УникальныйИдентификатор); + Если ПеременнаяСодержитСвойство(Контекст, ""ПутьКФайлуПолный"") Тогда + Контекст.ПутьКФайлуПолный = ФайлОбработки.ПолноеИмя; + КонецЕсли; Возврат Контекст; КонецФункции @@ -145,7 +151,10 @@ &НаСервере Функция ЗагрузитьФайлНаСервере(ПолныйПутьКОбработкеНаКлиенте) - ПостроительДереваТестов = ВнешниеОбработки.Создать(""ПостроительДереваТестов"", Ложь); + + КонтекстЯдра = ПолучитьКонтекстЯдраНаСервере(); + + ПостроительДереваТестов = КонтекстЯдра.СоздатьОбъектПлагина(""ПостроительДереваТестов""); ФайлОбработки = Новый Файл(ПолныйПутьКОбработкеНаКлиенте); Контейнер = ЭтотОбъектНаСервере().ЗагрузитьФайл(ПостроительДереваТестов, ФайлОбработки); @@ -154,7 +163,15 @@ &НаКлиенте Функция ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки) - ФормаОбработки = ПолучитьФорму(""ВнешняяОбработка."" + ФайлОбработки.ИмяБезРасширения + "".Форма""); + + ЭтоФайлОтчета = (НРег(ФайлОбработки.Расширение) = "".erf""); + + Если ЭтоФайлОтчета Тогда + ФормаОбработки = ПолучитьФорму(""ВнешнийОтчет."" + ФайлОбработки.ИмяБезРасширения + "".Форма""); + Иначе + ФормаОбработки = ПолучитьФорму(""ВнешняяОбработка."" + ФайлОбработки.ИмяБезРасширения + "".Форма""); + КонецЕсли; + Попытка Контейнер = ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки); Исключение @@ -210,7 +227,9 @@ Исключение КонецПопытки; - Контейнер = ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ПрефиксПутейСФормами() + ФайлОбработки.ИмяБезРасширения, ПрефиксПутейСФормами() + ФайлОбработки.ПолноеИмя, СлучайныйПорядокВыполнения); + ИмяКонтейнера = ПрефиксПутейСФормами() + ФайлОбработки.ИмяБезРасширения; + Путь = ПрефиксПутейСФормами() + ФайлОбработки.ПолноеИмя; + Контейнер = ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения); Контейнер.ИконкаУзла = ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма; Возврат Контейнер; @@ -218,7 +237,10 @@ &НаСервере Функция ПолучитьКонтейнерДереваТестовПоСпискуТестовНаСервере(СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения = Истина) - ПостроительДереваТестов = ВнешниеОбработки.Создать(""ПостроительДереваТестов"", Ложь); + + КонтекстЯдра = ПолучитьКонтекстЯдраНаСервере(); + + ПостроительДереваТестов = КонтекстЯдра.СоздатьОбъектПлагина(""ПостроительДереваТестов""); Контейнер = ЭтотОбъектНаСервере().ПолучитьКонтейнерДереваТестовПоСпискуТестов(ПостроительДереваТестов, СписокТестов, ИмяКонтейнера, Путь, СлучайныйПорядокВыполнения); Возврат Контейнер; @@ -322,8 +344,64 @@ Возврат Результат; КонецФункции // } Helpers + +// Универсальная функция для проверки наличия +// свойств у значения любого типа данных +// Переменные: +// 1. Переменная - переменная любого типа, +// для которой необходимо проверить наличие свойства +// 2. ИмяСвойства - переменная типа ""Строка"", +// содержащая искомое свойства +// +&НаКлиентеНаСервереБезКонтекста +Функция ПеременнаяСодержитСвойство(Переменная, ИмяСвойства) + // Инициализируем структуру для теста + // с ключом (значение переменной ""ИмяСвойства"") + // и значением произвольного GUID'а + GUIDПроверка = Новый УникальныйИдентификатор; + СтруктураПроверка = Новый Структура; + СтруктураПроверка.Вставить(ИмяСвойства, GUIDПроверка); + // Заполняем созданную структуру из переданного + // значения переменной + ЗаполнитьЗначенияСвойств(СтруктураПроверка, Переменная); + // Если значение для свойства структуры осталось + // NULL, то искомое свойство не найдено, + // и наоборот. + Если СтруктураПроверка[ИмяСвойства] = GUIDПроверка Тогда + Возврат Ложь; + Иначе + Возврат Истина; + КонецЕсли; +КонецФункции + +&НаСервере +Функция ПолучитьКонтекстЯдраНаСервере() + + // Получаем доступ к серверному контексту обработки с использованием + // полного имени метаданных браузера тестов. Иначе нет возможности получить + // доступ к серверному контексту ядра, т.к. изначально вызов был выполнен на клиенте. + // При передаче на сервер клиентский контекст теряется. + КонтекстЯдра = Неопределено; + МетаданныеЯдра = Метаданные.НайтиПоПолномуИмени(ПолноеИмяБраузераТестов); + Если НЕ МетаданныеЯдра = Неопределено + И Метаданные.Обработки.Содержит(МетаданныеЯдра) Тогда + ИмяОбработкиКонекстаЯдра = СтрЗаменить(ПолноеИмяБраузераТестов, ""Обработка"", ""Обработки""); + Выполнить(""КонтекстЯдра = "" + ИмяОбработкиКонекстаЯдра + "".Создать()""); + Иначе + ИмяОбработкиКонекстаЯдра = СтрЗаменить(ПолноеИмяБраузераТестов, ""ВнешняяОбработка"", ""ВнешниеОбработки""); + ИмяОбработкиКонекстаЯдра = СтрЗаменить(ИмяОбработкиКонекстаЯдра, ""."", Символы.ПС); + МенеджерОбъектов = СтрПолучитьСтроку(ИмяОбработкиКонекстаЯдра, 1); + ИмяОбъекта = СтрПолучитьСтроку(ИмяОбработкиКонекстаЯдра, 2); + Выполнить(""КонтекстЯдра = "" + МенеджерОбъектов + "".Создать(""""""+ИмяОбъекта+"""""")""); + КонецЕсли; + + Возврат КонтекстЯдра; + +КонецФункции + +// } Подсистема конфигурации xUnitFor1C ", -{4,1, +{4,2, {9, {1},0,"Объект", {1,0}, @@ -342,6 +420,27 @@ {0,0},1,0,0,0, {0,0}, {0,0} +}, +{9, +{2},0,"ПолноеИмяБраузераТестов", +{1,1, +{"ru","Полное имя браузера тестов"} +}, +{"Pattern", +{"S"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},0,0,0,0, +{0,0}, +{0,0} },0,0, {#base64:77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxTZXR0 aW5ncyB4bWxucz0iaHR0cDovL3Y4LjFjLnJ1LzguMS9kYXRhLWNvbXBvc2l0aW9u diff --git "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/versions" "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/versions" index 46a4b792..5a81c3d5 100644 --- "a/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/versions" +++ "b/src/Plugins/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/versions" @@ -1 +1 @@ -{1,9,"",dedbd9a9-89c6-4bc2-9d82-4eae3a0a43ee,"versions",cddd11fd-4a9b-4f80-8f9b-e1b1ed267a5e,"root",6bdf644e-702d-4576-bbc6-0d51015572e4,"51efd65a-ed36-4be7-a563-89b34ebfa851",35002c5e-f7aa-4b6d-9dc3-17d0c16ff4d2,"dfe532e1-d0ef-4008-afd4-214781ee4960.0",5161140a-66e8-4c0c-a059-74bd58c2ad51,"d75f146d-5027-4604-80fd-3b704ddd86a8",c08777aa-27bb-481a-a96a-e161a273ef4f,"version",009aad49-2f04-4edb-bd30-2677e65f466f,"copyinfo",30bfa618-1fff-4aa2-a454-7351653b2719,"d75f146d-5027-4604-80fd-3b704ddd86a8.0",6cb5e7d6-e58d-4645-8c55-10591d225047} \ No newline at end of file +{1,9,"",599d7500-b04b-455f-afbf-f5aebcac7cfd,"versions",4ddcf7d6-e62e-4151-aa57-ceaa252a33fe,"root",b0d0b048-53ba-4b02-aaf7-b12d801f8fab,"51efd65a-ed36-4be7-a563-89b34ebfa851",509e5c47-75ea-412a-a898-505ee928e721,"dfe532e1-d0ef-4008-afd4-214781ee4960.0",8034b5ad-0627-4645-a476-9cfaa0720799,"d75f146d-5027-4604-80fd-3b704ddd86a8",9c78f44b-2768-40ba-b424-404384d058a4,"version",c2985c6b-6411-4798-8f0f-0c93866c0dd3,"copyinfo",fbd38334-beaf-4449-a806-d5bc44cca36a,"d75f146d-5027-4604-80fd-3b704ddd86a8.0",50571a90-9665-4f15-88ec-be723f93edab} \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..c8ecf289 --- /dev/null +++ "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,19 @@ + +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции +// } Helpers diff --git "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index 9d226060..00000000 --- "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ - // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); КонецФункции // } Plugin interface // { Helpers &НаСервере Функция ЭтотОбъектНаСервере() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции // } Helpers \ No newline at end of file diff --git "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/ObjectModule.txt" "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/ObjectModule.bsl" similarity index 100% rename from "src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/ObjectModule.txt" rename to "src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/ObjectModule.bsl" diff --git "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/maps.txt" "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/maps.txt" index 4962a47e..4ba753df 100644 --- "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/maps.txt" +++ "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/maps.txt" @@ -1 +1 @@ -Form\Форма\Форма.txt-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 48) +Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 48) diff --git "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/renames.txt" "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/renames.txt" index 31723e1f..f90a2039 100644 --- "a/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/renames.txt" +++ "b/src/Plugins/\320\227\320\260\320\277\321\200\320\276\321\201\321\213\320\230\320\267\320\221\320\224/renames.txt" @@ -2,7 +2,7 @@ 4e8e1a4a-a947-419b-95c8-58a411e3ffa4-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4 4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info-->und\908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info -908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.txt +908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.bsl copyinfo-->und\copyinfo root-->und\root version-->und\version diff --git "a/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..c8ecf289 --- /dev/null +++ "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,19 @@ + +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции +// } Helpers diff --git "a/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index 9d226060..00000000 --- "a/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ - // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); КонецФункции // } Plugin interface // { Helpers &НаСервере Функция ЭтотОбъектНаСервере() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции // } Helpers \ No newline at end of file diff --git "a/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/ObjectModule.txt" "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/ObjectModule.bsl" similarity index 100% rename from "src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/ObjectModule.txt" rename to "src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/ObjectModule.bsl" diff --git "a/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/maps.txt" "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/maps.txt" index 4962a47e..4ba753df 100644 --- "a/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/maps.txt" +++ "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/maps.txt" @@ -1 +1 @@ -Form\Форма\Форма.txt-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 48) +Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 48) diff --git "a/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/renames.txt" "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/renames.txt" index 31723e1f..f90a2039 100644 --- "a/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/renames.txt" +++ "b/src/Plugins/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273/renames.txt" @@ -2,7 +2,7 @@ 4e8e1a4a-a947-419b-95c8-58a411e3ffa4-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4 4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info-->und\908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info -908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.txt +908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.bsl copyinfo-->und\copyinfo root-->und\root version-->und\version diff --git "a/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..dc9c9f50 --- /dev/null +++ "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,29 @@ + +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +&НаКлиенте +Функция Разобрать(СтрокаПараметров) Экспорт + Возврат РазобратьНаСервере(СтрокаПараметров); +КонецФункции + +&НаСервере +Функция РазобратьНаСервере(СтрокаПараметров) + Возврат ЭтотОбъектНаСервере().Разобрать(СтрокаПараметров); +КонецФункции + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции +// } Helpers diff --git "a/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index a1934d86..00000000 --- "a/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ - // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); КонецФункции // } Plugin interface &НаКлиенте Функция Разобрать(СтрокаПараметров) Экспорт Возврат РазобратьНаСервере(СтрокаПараметров); КонецФункции &НаСервере Функция РазобратьНаСервере(СтрокаПараметров) Возврат ЭтотОбъектНаСервере().Разобрать(СтрокаПараметров); КонецФункции // { Helpers &НаСервере Функция ЭтотОбъектНаСервере() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции // } Helpers \ No newline at end of file diff --git "a/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/ObjectModule.txt" "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/ObjectModule.bsl" similarity index 100% rename from "src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/ObjectModule.txt" rename to "src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/ObjectModule.bsl" diff --git "a/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/maps.txt" "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/maps.txt" index 69ef73b7..c56d31a1 100644 --- "a/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/maps.txt" +++ "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/maps.txt" @@ -1 +1 @@ -Form\Форма\Форма.txt-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 58) +Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 58) diff --git "a/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/renames.txt" "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/renames.txt" index 31723e1f..f90a2039 100644 --- "a/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/renames.txt" +++ "b/src/Plugins/\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/renames.txt" @@ -2,7 +2,7 @@ 4e8e1a4a-a947-419b-95c8-58a411e3ffa4-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4 4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info-->und\908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info -908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.txt +908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.bsl copyinfo-->und\copyinfo root-->und\root version-->und\version diff --git "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..3be6f296 --- /dev/null +++ "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,39 @@ + +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +&НаКлиенте +Функция СоздатьКонтейнер(ИмяКонтейнера, ИконкаУзла = Неопределено) Экспорт + Возврат СоздатьКонтейнерНаСервере(ИмяКонтейнера, ИконкаУзла); +КонецФункции + +&НаСервере +Функция СоздатьКонтейнерНаСервере(ИмяКонтейнера, ИконкаУзла) + Возврат ЭтотОбъектНаСервере().СоздатьКонтейнер(ИмяКонтейнера, ИконкаУзла); +КонецФункции + +&НаКлиенте +Функция СоздатьЭлемент(Путь, ИмяМетода, Представление = "", ИконкаУзла = Неопределено) Экспорт + Возврат СоздатьЭлементНаСервере(Путь, ИмяМетода, Представление, ИконкаУзла); +КонецФункции + +&НаСервере +Функция СоздатьЭлементНаСервере(Путь, ИмяМетода, Представление, ИконкаУзла) + Возврат ЭтотОбъектНаСервере().СоздатьЭлемент(Путь, ИмяМетода, Представление, ИконкаУзла); +КонецФункции + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции +// } Helpers \ No newline at end of file diff --git "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index 05b8ea61..00000000 --- "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ - // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); КонецФункции // } Plugin interface &НаКлиенте Функция СоздатьКонтейнер(ИмяКонтейнера, ИконкаУзла = Неопределено) Экспорт Возврат СоздатьКонтейнерНаСервере(ИмяКонтейнера, ИконкаУзла); КонецФункции &НаСервере Функция СоздатьКонтейнерНаСервере(ИмяКонтейнера, ИконкаУзла) Возврат ЭтотОбъектНаСервере().СоздатьКонтейнер(ИмяКонтейнера, ИконкаУзла); КонецФункции &НаКлиенте Функция СоздатьЭлемент(Путь, ИмяМетода, Представление = "", ИконкаУзла = Неопределено) Экспорт Возврат СоздатьЭлементНаСервере(Путь, ИмяМетода, Представление, ИконкаУзла); КонецФункции &НаСервере Функция СоздатьЭлементНаСервере(Путь, ИмяМетода, Представление, ИконкаУзла) Возврат ЭтотОбъектНаСервере().СоздатьЭлемент(Путь, ИмяМетода, Представление, ИконкаУзла); КонецФункции // { Helpers &НаСервере Функция ЭтотОбъектНаСервере() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции // } Helpers \ No newline at end of file diff --git "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/ObjectModule.txt" "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/ObjectModule.bsl" similarity index 98% rename from "src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/ObjectModule.txt" rename to "src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/ObjectModule.bsl" index 89a3fa45..377977a4 100644 --- "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/ObjectModule.txt" +++ "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/ObjectModule.bsl" @@ -28,6 +28,7 @@ Результат.Вставить("Форма", 4); Результат.Вставить("ФункцияНаФорме", 5); Результат.Вставить("Группа", 6); + Результат.Вставить("Отчет", 7); Возврат Новый ФиксированнаяСтруктура(Результат); КонецФункции diff --git "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/maps.txt" "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/maps.txt" index 92a28969..7f491ee3 100644 --- "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/maps.txt" +++ "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/maps.txt" @@ -1 +1 @@ -Form\Форма\Форма.txt-->6b075fcb-982d-4834-be17-5c2ec6964f8f.0 (29, 67) +Form\Форма\Форма.bsl-->6b075fcb-982d-4834-be17-5c2ec6964f8f.0 (29, 67) diff --git "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/renames.txt" "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/renames.txt" index c51c4330..55b22a49 100644 --- "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/renames.txt" +++ "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/renames.txt" @@ -1,5 +1,5 @@ 0cccd541-8b75-44da-b850-b0a7254eb4e4.0\info-->und\0cccd541-8b75-44da-b850-b0a7254eb4e4.0\info -0cccd541-8b75-44da-b850-b0a7254eb4e4.0\text-->ObjectModule.txt +0cccd541-8b75-44da-b850-b0a7254eb4e4.0\text-->ObjectModule.bsl 6b075fcb-982d-4834-be17-5c2ec6964f8f-->und\6b075fcb-982d-4834-be17-5c2ec6964f8f 6b075fcb-982d-4834-be17-5c2ec6964f8f.0-->und\6b075fcb-982d-4834-be17-5c2ec6964f8f.0 8c7dc67a-399f-441c-8acd-6bcdf2539678-->und\8c7dc67a-399f-441c-8acd-6bcdf2539678 diff --git "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/versions" "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/versions" index 26b0576e..d989ff4f 100644 --- "a/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/versions" +++ "b/src/Plugins/\320\237\320\276\321\201\321\202\321\200\320\276\320\270\321\202\320\265\320\273\321\214\320\224\320\265\321\200\320\265\320\262\320\260\320\242\320\265\321\201\321\202\320\276\320\262/und/versions" @@ -1 +1 @@ -{1,9,"",3b125b56-6aae-431e-9d9a-87a62e8b48c4,"versions",501fe1bc-096f-4cba-9f77-779c66ced61e,"root",7efe0f08-77b4-4643-8d43-d5b298e53b18,"6b075fcb-982d-4834-be17-5c2ec6964f8f.0",deb2355e-ce7c-443d-adb4-908fef0bb7b4,"8c7dc67a-399f-441c-8acd-6bcdf2539678",d6f02e6d-e1ee-43d9-ac72-d983331b0a8c,"0cccd541-8b75-44da-b850-b0a7254eb4e4.0",69568088-7dc2-4ec9-b16f-46fed7412d44,"version",c137f9e2-d960-4745-bac2-bb12706c112b,"copyinfo",143599d0-39f2-4391-808f-48d257b7a85b,"6b075fcb-982d-4834-be17-5c2ec6964f8f",578da219-d94c-4646-adaa-902144304331} \ No newline at end of file +{1,9,"",d8ec4fd3-4a66-4c93-86b0-f2f581bfde43,"versions",4e3220d9-657c-47c6-803d-723896eb6c50,"root",a7b2dbaf-7bdb-463f-9156-f47b0934c90a,"6b075fcb-982d-4834-be17-5c2ec6964f8f.0",7309732a-3d4f-47b6-a266-31c22df78c84,"8c7dc67a-399f-441c-8acd-6bcdf2539678",9dc10e03-c2e3-4f97-b7ea-32e6fc4f9cb8,"0cccd541-8b75-44da-b850-b0a7254eb4e4.0",890df57b-36aa-49ff-bb65-d287e164e05a,"version",0bd54340-9f04-4cac-8c04-d1254bff24f4,"copyinfo",39f26e11-d9ea-4757-935a-55c2cb3c4e20,"6b075fcb-982d-4834-be17-5c2ec6964f8f",04a593a2-a479-43f5-af6c-68a60e00757c} \ No newline at end of file diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..67f7cc2c --- /dev/null +++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,484 @@ + + +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат Объект().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +// { Методы генерации тестовых данных + +&НаКлиенте +Функция СоздатьДанныеПоТабличномуДокументу(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения = Неопределено, ИмяКолонкиЗамещения = Неопределено) Экспорт + Данные = СоздатьДанныеПоТабличномуДокументуСервер(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения); + Возврат Данные; +КонецФункции + +&НаСервере +Функция СоздатьДанныеПоТабличномуДокументуСервер(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения) + Данные = Объект().СоздатьДанныеПоТабличномуДокументу(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения); + Возврат Неопределено; //Данные; +КонецФункции +//} + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ ТаблицаДанных + +&НаКлиенте +Процедура ТаблицаДанныхСсылкаПриИзменении(Элемент) + ТаблицаДанныхСсылкаПриИзмененииСервер(Элементы.ТаблицаДанных.ТекущаяСтрока); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ + +&НаКлиенте +Процедура СоздатьМакетДанных(Команда) + ПанельИсточников = Элементы.ГруппаСтраницы; + Если ПанельИсточников.ТекущаяСтраница = ПанельИсточников.ПодчиненныеЭлементы.ГруппаМетаданные Тогда + КоманднаяПанель1СоздатьМакетДанныхПоМетаданным(); + ИначеЕсли ПанельИсточников.ТекущаяСтраница = ПанельИсточников.ПодчиненныеЭлементы.ГруппаТаблицаДанных Тогда + КоманднаяПанель1СоздатьМакетДанныхПоТаблицеДанных(); + ИначеЕсли ПанельИсточников.ТекущаяСтраница = ПанельИсточников.ПодчиненныеЭлементы.ГруппаПользователиИБ Тогда + КоманднаяПанель1СоздатьМакетДанныхДляПользователейИБ(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура КоманднаяПанель1СоздатьМакетДанныхПоТаблицеДанных() + Если ПроверитьЗаполнение() Тогда + НовыйМакет = СоздатьМакетДанныхПоТаблицеДанныхСервер(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура КоманднаяПанель1СоздатьМакетДанныхПоМетаданным() + + СохранитьОтображениеДерева(Объект.ДеревоМетаданных.ПолучитьЭлементы()); + НовыйМакет = СоздатьМакетДанныхПоМетаданнымСервер(); + ВосстановитьОтображениеДерева(Объект.ДеревоМетаданных.ПолучитьЭлементы()); + +КонецПроцедуры + +&НаКлиенте +Процедура КоманднаяПанель1СоздатьМакетДанныхДляПользователейИБ() + + МассивИменПользователей = Новый Массив; + Для Каждого ИдентификаторСтроки Из Элементы.ПользователиИнфБазы.ВыделенныеСтроки Цикл + Строка = Объект.ПользователиИБ.НайтиПоИдентификатору(ИдентификаторСтроки); + МассивИменПользователей.Добавить(Строка.Имя); + КонецЦикла; + НовыйМакет = СоздатьМакетДанныхПоПользователямИБСервер(МассивИменПользователей); + +КонецПроцедуры + +&НаКлиенте +Процедура ПротестироватьЗагрузкуМакета(Команда) + ПроверитьЗагрузкуМакетаСервер(Макет); +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьМакетДанныхВФайл(Команда) + ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); + ДиалогВыбораФайла.ПолноеИмяФайла = ""; + ДиалогВыбораФайла.Фильтр = "Табличный документ (*.mxl)|*.mxl|Все файлы (*.*)|*.*"; + ДиалогВыбораФайла.Заголовок = "Выберите файл"; + Если Не ДиалогВыбораФайла.Выбрать() Тогда + Возврат; + КонецЕсли; + + Макет.Записать(ДиалогВыбораФайла.ПолноеИмяФайла); +КонецПроцедуры + +&НаКлиенте +Процедура ОчиститьТаблицуДанных(Команда) + Объект.ТаблицаДанных.Очистить(); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +&НаСервере +Функция Объект() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции + +&НаСервере +Процедура ТаблицаДанныхСсылкаПриИзмененииСервер(ИдентификаторСтрокиДанных) + ЭлементДанных = Объект.ТаблицаДанных.НайтиПоИдентификатору(ИдентификаторСтрокиДанных); + Объект().ПриИзмененииСсылки(ЭлементДанных); +КонецПроцедуры + +&НаСервере +Функция СоздатьМакетДанныхПоТаблицеДанныхСервер() + Возврат Объект().СоздатьМакетДанныхПоТаблицеДанных(Макет); +КонецФункции + +&НаСервере +Функция СоздатьМакетДанныхПоМетаданнымСервер() + + ОбъектНаСервере = Объект(); + ЗаполнитьДеревоМетаданныхНаСервере(ОбъектНаСервере); + НовыйМакет = ОбъектНаСервере.СоздатьМакетДанныхПоМетаданным(Макет); + ЗначениеВРеквизитФормы(ОбъектНаСервере.ДеревоМетаданных, "Объект.ДеревоМетаданных"); + + Возврат НовыйМакет; + +КонецФункции + +Функция СоздатьМакетДанныхПоПользователямИБСервер(МассивИменПользователей) + Возврат Объект().СоздатьМакетДанныхПоПользователямИБ(Макет, МассивИменПользователей); +КонецФункции + +&НаСервере +Процедура ПроверитьЗагрузкуМакетаСервер(ТабличныйДокумент) + Объект().ПроверитьЗагрузкуМакета(ТабличныйДокумент); +КонецПроцедуры + + + + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ОбъектНаСервере = Объект(); + ЭтаФорма.Заголовок = ОбъектНаСервере.ЗаголовокФормы(); + + ОбъектНаСервере.НачальнаяИнициализация(); + ЗначениеВРеквизитФормы(ОбъектНаСервере.ДеревоМетаданных, "Объект.ДеревоМетаданных"); + ЗначениеВРеквизитФормы(ОбъектНаСервере.ПользователиИБ, "Объект.ПользователиИБ"); + + ОбъектНаСервере.СписокВыбора_РежимПоиска(Элементы.ТаблицаДанныхРежимПоиска.СписокВыбора); + ОбъектНаСервере.СписокВыбора_РежимСоздания(Элементы.ТаблицаДанныхРежимСоздания.СписокВыбора); + + Объект.ВыгружатьСсылку = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ПересчитатьВыгружаемыеПоСсылке(Команда) + + Состояние(Нстр("ru = 'Выполняется поиск объектов метаданных, которые могут быть выгружены по ссылкам...'")); + СохранитьОтображениеДерева(Объект.ДеревоМетаданных.ПолучитьЭлементы()); + ПересчитатьВыгружаемыеПоСсылкеНаСервере(); + ВосстановитьОтображениеДерева(Объект.ДеревоМетаданных.ПолучитьЭлементы()); + +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьОтображениеДерева(СтрокиДерева) + + Для Каждого Строка Из СтрокиДерева Цикл + + ИдентификаторСтроки=Строка.ПолучитьИдентификатор(); + Строка.Развернут = Элементы.ДеревоМетаданных.Развернут(ИдентификаторСтроки); + + СохранитьОтображениеДерева(Строка.ПолучитьЭлементы()); + + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ВосстановитьОтображениеДерева(СтрокиДерева) + + Для Каждого Строка Из СтрокиДерева Цикл + + ИдентификаторСтроки=Строка.ПолучитьИдентификатор(); + Если Строка.Развернут Тогда + Элементы.ДеревоМетаданных.Развернуть(ИдентификаторСтроки); + КонецЕсли; + + ВосстановитьОтображениеДерева(Строка.ПолучитьЭлементы()); + + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ПересчитатьВыгружаемыеПоСсылкеНаСервере() + + ОбъектНаСервере = Объект(); + ЗаполнитьДеревоМетаданныхНаСервере(ОбъектНаСервере); + ОбъектНаСервере.СоставВыгрузки(Истина); + ЗначениеВРеквизитФормы(ОбъектНаСервере.ДеревоМетаданных, "Объект.ДеревоМетаданных"); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьДеревоМетаданныхНаСервере(ОбъектНаСервере) + + ДеревоМетаданных = РеквизитФормыВЗначение("Объект.ДеревоМетаданных"); + + ОбъектНаСервере.НачальнаяИнициализация(); + + ПроставитьПометкиВыгружаемыхДанных(ОбъектНаСервере.ДеревоМетаданных.Строки, ДеревоМетаданных.Строки); + +КонецПроцедуры + +&НаСервере +Процедура ПроставитьПометкиВыгружаемыхДанных(СтрокиИсходногоДерева, СтрокиЗаменяемогоДерева) + + КолонкаВыгружать = СтрокиЗаменяемогоДерева.ВыгрузитьКолонку("Выгружать"); + СтрокиИсходногоДерева.ЗагрузитьКолонку(КолонкаВыгружать, "Выгружать"); + + КолонкаВыгружатьПриНеобходимости = СтрокиЗаменяемогоДерева.ВыгрузитьКолонку("ВыгружатьПриНеобходимости"); + СтрокиИсходногоДерева.ЗагрузитьКолонку(КолонкаВыгружатьПриНеобходимости, "ВыгружатьПриНеобходимости"); + + КолонкаРазвернут = СтрокиЗаменяемогоДерева.ВыгрузитьКолонку("Развернут"); + СтрокиИсходногоДерева.ЗагрузитьКолонку(КолонкаРазвернут, "Развернут"); + + КолонкаНастройкиКомпоновщика = СтрокиЗаменяемогоДерева.ВыгрузитьКолонку("НастройкиКомпоновщика"); + СтрокиИсходногоДерева.ЗагрузитьКолонку(КолонкаНастройкиКомпоновщика, "НастройкиКомпоновщика"); + + КолонкаИспользоватьОтбор = СтрокиЗаменяемогоДерева.ВыгрузитьКолонку("ИспользоватьОтбор"); + СтрокиИсходногоДерева.ЗагрузитьКолонку(КолонкаИспользоватьОтбор, "ИспользоватьОтбор"); + + Для Каждого СтрокаИсходногоДерева Из СтрокиИсходногоДерева Цикл + + ИндексСтроки = СтрокиИсходногоДерева.Индекс(СтрокаИсходногоДерева); + СтрокаИзменяемогоДерева = СтрокиЗаменяемогоДерева.Получить(ИндексСтроки); + + ПроставитьПометкиВыгружаемыхДанных(СтрокаИсходногоДерева.Строки, СтрокаИзменяемогоДерева.Строки); + + КонецЦикла; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ ДеревоМетаданных + +&НаКлиенте +Процедура ДеревоМетаданныхВыгружатьПриИзменении(Элемент) + + ТекущиеДанные = Элементы.ДеревоМетаданных.ТекущиеДанные; + + Если ТекущиеДанные.Выгружать = 2 Тогда + ТекущиеДанные.Выгружать = 0; + КонецЕсли; + + УстановитьПометкиПодчиненных(ТекущиеДанные, "Выгружать"); + УстановитьПометкиРодителей(ТекущиеДанные, "Выгружать"); + +КонецПроцедуры + +&НаКлиенте +Процедура ДеревоМетаданныхВыгружатьПриНеобходимостиПриИзменении(Элемент) + + ТекущиеДанные = Элементы.ДеревоМетаданных.ТекущиеДанные; + + Если ТекущиеДанные.ВыгружатьПриНеобходимости = 2 Тогда + ТекущиеДанные.ВыгружатьПриНеобходимости = 0; + КонецЕсли; + + УстановитьПометкиПодчиненных(ТекущиеДанные, "ВыгружатьПриНеобходимости"); + УстановитьПометкиРодителей(ТекущиеДанные, "ВыгружатьПриНеобходимости"); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПометкиПодчиненных(ТекСтрока, ИмяФлажка) + + Подчиненные = ТекСтрока.ПолучитьЭлементы(); + + Если Подчиненные.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Для Каждого Строка из Подчиненные Цикл + + Строка[ИмяФлажка] = ТекСтрока[ИмяФлажка]; + + УстановитьПометкиПодчиненных(Строка, ИмяФлажка); + + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПометкиРодителей(ТекСтрока, ИмяФлажка) + + Родитель = ТекСтрока.ПолучитьРодителя(); + Если Родитель = Неопределено Тогда + Возврат; + КонецЕсли; + + ТекСостояние = Родитель[ИмяФлажка]; + + НайденыВключенные = Ложь; + НайденыВыключенные = Ложь; + + Для Каждого Строка из Родитель.ПолучитьЭлементы() Цикл + Если Строка[ИмяФлажка] = 0 Тогда + НайденыВыключенные = Истина; + ИначеЕсли Строка[ИмяФлажка] = 1 + ИЛИ Строка[ИмяФлажка] = 2 Тогда + НайденыВключенные = Истина; + КонецЕсли; + Если НайденыВключенные И НайденыВыключенные Тогда + Прервать; + КонецЕсли; + КонецЦикла; + + Если НайденыВключенные И НайденыВыключенные Тогда + Включить = 2; + ИначеЕсли НайденыВключенные И (Не НайденыВыключенные) Тогда + Включить = 1; + ИначеЕсли (Не НайденыВключенные) И НайденыВыключенные Тогда + Включить = 0; + ИначеЕсли (Не НайденыВключенные) И (Не НайденыВыключенные) Тогда + Включить = 2; + КонецЕсли; + + Если Включить = ТекСостояние Тогда + Возврат; + Иначе + Родитель[ИмяФлажка] = Включить; + УстановитьПометкиРодителей(Родитель, ИмяФлажка); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ДеревоМетаданныхПриАктивизацииСтроки(Элемент) + + Если Элемент.ТекущаяСтрока = ДеревоМетаданныхПредыдущаяСтрока Тогда + Возврат; + КонецЕсли; + ДеревоМетаданныхПредыдущаяСтрока = Элемент.ТекущаяСтрока; + + НастроитьКомпоновщик(); + +КонецПроцедуры + +// Служит для настройки построителя при отборе данных +// +// Параметры: +// +&НаКлиенте +Процедура НастроитьКомпоновщик() + + ТекущаяСтрока = Элементы.ДеревоМетаданных.ТекущиеДанные; + + Если ТекущаяСтрока = Неопределено Тогда + Возврат; + КонецЕсли; + + Если НЕ ОпределитьПоСтрокеДереваДоступенПостроитель(ТекущаяСтрока) Тогда + + ДоступностьКомпоновщика = ЛОЖЬ; + УдалитьОтборыКомпоновщика(Объект.КомпоновщикНастроекКомпоновкиДанных); + + Иначе + + Попытка + + НастроитьКомпоновщикНаСервере(Элементы.ДеревоМетаданных.ТекущаяСтрока); + + ДоступностьКомпоновщика = Истина; + + Исключение + ДоступностьКомпоновщика = ЛОЖЬ; + УдалитьОтборыКомпоновщика(Объект.КомпоновщикНастроекКомпоновкиДанных); + КонецПопытки; + + КонецЕсли; + + Элементы.КомпоновщикОтбор.Доступность = ДоступностьКомпоновщика; + //Элементы.КоманднаяПанельКомпоновщикОтбор.Доступность = ДоступностьКомпоновщика; + +КонецПроцедуры + +&НаКлиенте +Функция ОпределитьПоСтрокеДереваДоступенПостроитель(СтрокаДерева) + + Если СтрокаДерева.ПолучитьЭлементы().Количество() > 0 Тогда + Возврат Ложь; + Иначе + Возврат Истина; + КонецЕсли; + +КонецФункции + +&НаКлиенте +Процедура УдалитьОтборыКомпоновщика(Компоновщик) + + Компоновщик.Настройки.Отбор.Элементы.Очистить(); + +КонецПроцедуры + +&НаСервере +Процедура НастроитьКомпоновщикНаСервере(ТекущаяСтрока) + + СтрокаДерева = Объект.ДеревоМетаданных.НайтиПоИдентификатору(ТекущаяСтрока); + СхемаКомпоновкиДанных = Объект().ПодготовитьКомпоновщикДляВыгрузки(СтрокаДерева); + АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, УникальныйИдентификатор); + Объект.КомпоновщикНастроекКомпоновкиДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы)); + Объект.КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); + +КонецПроцедуры // НастроитьКомпоновщикНаСервере() + +&НаКлиенте +Процедура КомпоновщикОтборПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) + + ОбновитьНастройкиПостроителяВТаблицеДляВыгрузки(); + +КонецПроцедуры + +&НаКлиенте +Процедура КомпоновщикОтборПослеУдаления(Элемент) + + ОбновитьНастройкиПостроителяВТаблицеДляВыгрузки(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьНастройкиПостроителяВТаблицеДляВыгрузки() + + ТекущаяСтрока = Элементы.ДеревоМетаданных.ТекущиеДанные; + Если Объект.КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор.Элементы.Количество() > 0 Тогда + + ТекущаяСтрока.НастройкиКомпоновщика = Объект.КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор;//Объект.КомпоновщикНастроекКомпоновкиДанных.ПолучитьНастройки(); + ТекущаяСтрока.ИспользоватьОтбор = ИСТИНА; + ТекущаяСтрока.Выгружать = Истина; + + Иначе + + ТекущаяСтрока.НастройкиКомпоновщика = Неопределено; + ТекущаяСтрока.ИспользоватьОтбор = ЛОЖЬ; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьРезультатОтбора(Команда) + + // показать выбранные записи + Если Элементы.КомпоновщикОтбор.Доступность <> Истина + ИЛИ Элементы.ДеревоМетаданных.ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ТабличныйДокумент = ПолучитьРезультатОтбораНаСервере(); + ТабличныйДокумент.Показать(НСтр("ru = 'Выбранные объекты'")); + +КонецПроцедуры + +&НаСервере +Функция ПолучитьРезультатОтбораНаСервере() + + СтрокаДерева = Объект.ДеревоМетаданных.НайтиПоИдентификатору(Элементы.ДеревоМетаданных.ТекущаяСтрока); + ТабличныйДокумент = Объект().СформироватьОтчетПоОтобраннымДанным(СтрокаДерева); + + Возврат ТабличныйДокумент; + +КонецФункции // ПолучитьРезультатОтбораНаСервере() diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index 46109dfc..00000000 --- "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ - // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Возврат Объект().ОписаниеПлагина(ВозможныеТипыПлагинов); КонецФункции // } Plugin interface // { Методы генерации тестовых данных &НаКлиенте Функция СоздатьДанныеПоТабличномуДокументу(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения = Неопределено, ИмяКолонкиЗамещения = Неопределено) Экспорт Данные = СоздатьДанныеПоТабличномуДокументуСервер(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения); Возврат Данные; КонецФункции &НаСервере Функция СоздатьДанныеПоТабличномуДокументуСервер(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения) Данные = Объект().СоздатьДанныеПоТабличномуДокументу(ТабличныйДокумент, РежимыЗагрузкиИлиИмяКолонкиЗамещения, ИмяКолонкиЗамещения); Возврат Неопределено; //Данные; КонецФункции //} //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ ТаблицаДанных &НаКлиенте Процедура ТаблицаДанныхСсылкаПриИзменении(Элемент) ТаблицаДанныхСсылкаПриИзмененииСервер(Элементы.ТаблицаДанных.ТекущаяСтрока); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ КОМАНД ФОРМЫ &НаКлиенте Процедура СоздатьМакетДанных(Команда) ПанельИсточников = Элементы.ГруппаСтраницы; Если ПанельИсточников.ТекущаяСтраница = ПанельИсточников.ПодчиненныеЭлементы.ГруппаМетаданные Тогда КоманднаяПанель1СоздатьМакетДанныхПоМетаданным(); ИначеЕсли ПанельИсточников.ТекущаяСтраница = ПанельИсточников.ПодчиненныеЭлементы.ГруппаТаблицаДанных Тогда КоманднаяПанель1СоздатьМакетДанныхПоТаблицеДанных(); ИначеЕсли ПанельИсточников.ТекущаяСтраница = ПанельИсточников.ПодчиненныеЭлементы.ГруппаПользователиИБ Тогда КоманднаяПанель1СоздатьМакетДанныхДляПользователейИБ(); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура КоманднаяПанель1СоздатьМакетДанныхПоТаблицеДанных() Если ПроверитьЗаполнение() Тогда НовыйМакет = СоздатьМакетДанныхПоТаблицеДанныхСервер(); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура КоманднаяПанель1СоздатьМакетДанныхПоМетаданным() СохранитьОтображениеДерева(Объект.ДеревоМетаданных.ПолучитьЭлементы()); НовыйМакет = СоздатьМакетДанныхПоМетаданнымСервер(); ВосстановитьОтображениеДерева(Объект.ДеревоМетаданных.ПолучитьЭлементы()); КонецПроцедуры &НаКлиенте Процедура КоманднаяПанель1СоздатьМакетДанныхДляПользователейИБ() МассивИменПользователей = Новый Массив; Для Каждого ИдентификаторСтроки Из Элементы.ПользователиИнфБазы.ВыделенныеСтроки Цикл Строка = Объект.ПользователиИБ.НайтиПоИдентификатору(ИдентификаторСтроки); МассивИменПользователей.Добавить(Строка.Имя); КонецЦикла; НовыйМакет = СоздатьМакетДанныхПоПользователямИБСервер(МассивИменПользователей); КонецПроцедуры &НаКлиенте Процедура ПротестироватьЗагрузкуМакета(Команда) ПроверитьЗагрузкуМакетаСервер(Макет); КонецПроцедуры &НаКлиенте Процедура СохранитьМакетДанныхВФайл(Команда) ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); ДиалогВыбораФайла.ПолноеИмяФайла = ""; ДиалогВыбораФайла.Фильтр = "Табличный документ (*.mxl)|*.mxl|Все файлы (*.*)|*.*"; ДиалогВыбораФайла.Заголовок = "Выберите файл"; Если Не ДиалогВыбораФайла.Выбрать() Тогда Возврат; КонецЕсли; Макет.Записать(ДиалогВыбораФайла.ПолноеИмяФайла); КонецПроцедуры &НаКлиенте Процедура ОчиститьТаблицуДанных(Команда) Объект.ТаблицаДанных.Очистить(); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ &НаСервере Функция Объект() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции &НаСервере Процедура ТаблицаДанныхСсылкаПриИзмененииСервер(ИдентификаторСтрокиДанных) ЭлементДанных = Объект.ТаблицаДанных.НайтиПоИдентификатору(ИдентификаторСтрокиДанных); Объект().ПриИзмененииСсылки(ЭлементДанных); КонецПроцедуры &НаСервере Функция СоздатьМакетДанныхПоТаблицеДанныхСервер() Возврат Объект().СоздатьМакетДанныхПоТаблицеДанных(Макет); КонецФункции &НаСервере Функция СоздатьМакетДанныхПоМетаданнымСервер() ОбъектНаСервере = Объект(); ЗаполнитьДеревоМетаданныхНаСервере(ОбъектНаСервере); НовыйМакет = ОбъектНаСервере.СоздатьМакетДанныхПоМетаданным(Макет); ЗначениеВРеквизитФормы(ОбъектНаСервере.ДеревоМетаданных, "Объект.ДеревоМетаданных"); Возврат НовыйМакет; КонецФункции Функция СоздатьМакетДанныхПоПользователямИБСервер(МассивИменПользователей) Возврат Объект().СоздатьМакетДанныхПоПользователямИБ(Макет, МассивИменПользователей); КонецФункции &НаСервере Процедура ПроверитьЗагрузкуМакетаСервер(ТабличныйДокумент) Объект().ПроверитьЗагрузкуМакета(ТабличныйДокумент); КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОбъектНаСервере = Объект(); ЭтаФорма.Заголовок = ОбъектНаСервере.ЗаголовокФормы(); ОбъектНаСервере.НачальнаяИнициализация(); ЗначениеВРеквизитФормы(ОбъектНаСервере.ДеревоМетаданных, "Объект.ДеревоМетаданных"); ЗначениеВРеквизитФормы(ОбъектНаСервере.ПользователиИБ, "Объект.ПользователиИБ"); ОбъектНаСервере.СписокВыбора_РежимПоиска(Элементы.ТаблицаДанныхРежимПоиска.СписокВыбора); ОбъектНаСервере.СписокВыбора_РежимСоздания(Элементы.ТаблицаДанныхРежимСоздания.СписокВыбора); Объект.ВыгружатьСсылку = Истина; КонецПроцедуры &НаКлиенте Процедура ПересчитатьВыгружаемыеПоСсылке(Команда) Состояние(Нстр("ru = 'Выполняется поиск объектов метаданных, которые могут быть выгружены по ссылкам...'")); СохранитьОтображениеДерева(Объект.ДеревоМетаданных.ПолучитьЭлементы()); ПересчитатьВыгружаемыеПоСсылкеНаСервере(); ВосстановитьОтображениеДерева(Объект.ДеревоМетаданных.ПолучитьЭлементы()); КонецПроцедуры &НаКлиенте Процедура СохранитьОтображениеДерева(СтрокиДерева) Для Каждого Строка Из СтрокиДерева Цикл ИдентификаторСтроки=Строка.ПолучитьИдентификатор(); Строка.Развернут = Элементы.ДеревоМетаданных.Развернут(ИдентификаторСтроки); СохранитьОтображениеДерева(Строка.ПолучитьЭлементы()); КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ВосстановитьОтображениеДерева(СтрокиДерева) Для Каждого Строка Из СтрокиДерева Цикл ИдентификаторСтроки=Строка.ПолучитьИдентификатор(); Если Строка.Развернут Тогда Элементы.ДеревоМетаданных.Развернуть(ИдентификаторСтроки); КонецЕсли; ВосстановитьОтображениеДерева(Строка.ПолучитьЭлементы()); КонецЦикла; КонецПроцедуры &НаСервере Процедура ПересчитатьВыгружаемыеПоСсылкеНаСервере() ОбъектНаСервере = Объект(); ЗаполнитьДеревоМетаданныхНаСервере(ОбъектНаСервере); ОбъектНаСервере.СоставВыгрузки(Истина); ЗначениеВРеквизитФормы(ОбъектНаСервере.ДеревоМетаданных, "Объект.ДеревоМетаданных"); КонецПроцедуры &НаСервере Процедура ЗаполнитьДеревоМетаданныхНаСервере(ОбъектНаСервере) ДеревоМетаданных = РеквизитФормыВЗначение("Объект.ДеревоМетаданных"); ОбъектНаСервере.НачальнаяИнициализация(); ПроставитьПометкиВыгружаемыхДанных(ОбъектНаСервере.ДеревоМетаданных.Строки, ДеревоМетаданных.Строки); КонецПроцедуры &НаСервере Процедура ПроставитьПометкиВыгружаемыхДанных(СтрокиИсходногоДерева, СтрокиЗаменяемогоДерева) КолонкаВыгружать = СтрокиЗаменяемогоДерева.ВыгрузитьКолонку("Выгружать"); СтрокиИсходногоДерева.ЗагрузитьКолонку(КолонкаВыгружать, "Выгружать"); КолонкаВыгружатьПриНеобходимости = СтрокиЗаменяемогоДерева.ВыгрузитьКолонку("ВыгружатьПриНеобходимости"); СтрокиИсходногоДерева.ЗагрузитьКолонку(КолонкаВыгружатьПриНеобходимости, "ВыгружатьПриНеобходимости"); КолонкаРазвернут = СтрокиЗаменяемогоДерева.ВыгрузитьКолонку("Развернут"); СтрокиИсходногоДерева.ЗагрузитьКолонку(КолонкаРазвернут, "Развернут"); КолонкаНастройкиКомпоновщика = СтрокиЗаменяемогоДерева.ВыгрузитьКолонку("НастройкиКомпоновщика"); СтрокиИсходногоДерева.ЗагрузитьКолонку(КолонкаНастройкиКомпоновщика, "НастройкиКомпоновщика"); КолонкаИспользоватьОтбор = СтрокиЗаменяемогоДерева.ВыгрузитьКолонку("ИспользоватьОтбор"); СтрокиИсходногоДерева.ЗагрузитьКолонку(КолонкаИспользоватьОтбор, "ИспользоватьОтбор"); Для Каждого СтрокаИсходногоДерева Из СтрокиИсходногоДерева Цикл ИндексСтроки = СтрокиИсходногоДерева.Индекс(СтрокаИсходногоДерева); СтрокаИзменяемогоДерева = СтрокиЗаменяемогоДерева.Получить(ИндексСтроки); ПроставитьПометкиВыгружаемыхДанных(СтрокаИсходногоДерева.Строки, СтрокаИзменяемогоДерева.Строки); КонецЦикла; КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ ДеревоМетаданных &НаКлиенте Процедура ДеревоМетаданныхВыгружатьПриИзменении(Элемент) ТекущиеДанные = Элементы.ДеревоМетаданных.ТекущиеДанные; Если ТекущиеДанные.Выгружать = 2 Тогда ТекущиеДанные.Выгружать = 0; КонецЕсли; УстановитьПометкиПодчиненных(ТекущиеДанные, "Выгружать"); УстановитьПометкиРодителей(ТекущиеДанные, "Выгружать"); КонецПроцедуры &НаКлиенте Процедура ДеревоМетаданныхВыгружатьПриНеобходимостиПриИзменении(Элемент) ТекущиеДанные = Элементы.ДеревоМетаданных.ТекущиеДанные; Если ТекущиеДанные.ВыгружатьПриНеобходимости = 2 Тогда ТекущиеДанные.ВыгружатьПриНеобходимости = 0; КонецЕсли; УстановитьПометкиПодчиненных(ТекущиеДанные, "ВыгружатьПриНеобходимости"); УстановитьПометкиРодителей(ТекущиеДанные, "ВыгружатьПриНеобходимости"); КонецПроцедуры &НаКлиенте Процедура УстановитьПометкиПодчиненных(ТекСтрока, ИмяФлажка) Подчиненные = ТекСтрока.ПолучитьЭлементы(); Если Подчиненные.Количество() = 0 Тогда Возврат; КонецЕсли; Для Каждого Строка из Подчиненные Цикл Строка[ИмяФлажка] = ТекСтрока[ИмяФлажка]; УстановитьПометкиПодчиненных(Строка, ИмяФлажка); КонецЦикла; КонецПроцедуры &НаКлиенте Процедура УстановитьПометкиРодителей(ТекСтрока, ИмяФлажка) Родитель = ТекСтрока.ПолучитьРодителя(); Если Родитель = Неопределено Тогда Возврат; КонецЕсли; ТекСостояние = Родитель[ИмяФлажка]; НайденыВключенные = Ложь; НайденыВыключенные = Ложь; Для Каждого Строка из Родитель.ПолучитьЭлементы() Цикл Если Строка[ИмяФлажка] = 0 Тогда НайденыВыключенные = Истина; ИначеЕсли Строка[ИмяФлажка] = 1 ИЛИ Строка[ИмяФлажка] = 2 Тогда НайденыВключенные = Истина; КонецЕсли; Если НайденыВключенные И НайденыВыключенные Тогда Прервать; КонецЕсли; КонецЦикла; Если НайденыВключенные И НайденыВыключенные Тогда Включить = 2; ИначеЕсли НайденыВключенные И (Не НайденыВыключенные) Тогда Включить = 1; ИначеЕсли (Не НайденыВключенные) И НайденыВыключенные Тогда Включить = 0; ИначеЕсли (Не НайденыВключенные) И (Не НайденыВыключенные) Тогда Включить = 2; КонецЕсли; Если Включить = ТекСостояние Тогда Возврат; Иначе Родитель[ИмяФлажка] = Включить; УстановитьПометкиРодителей(Родитель, ИмяФлажка); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ДеревоМетаданныхПриАктивизацииСтроки(Элемент) Если Элемент.ТекущаяСтрока = ДеревоМетаданныхПредыдущаяСтрока Тогда Возврат; КонецЕсли; ДеревоМетаданныхПредыдущаяСтрока = Элемент.ТекущаяСтрока; НастроитьКомпоновщик(); КонецПроцедуры // Служит для настройки построителя при отборе данных // // Параметры: // &НаКлиенте Процедура НастроитьКомпоновщик() ТекущаяСтрока = Элементы.ДеревоМетаданных.ТекущиеДанные; Если ТекущаяСтрока = Неопределено Тогда Возврат; КонецЕсли; Если НЕ ОпределитьПоСтрокеДереваДоступенПостроитель(ТекущаяСтрока) Тогда ДоступностьКомпоновщика = ЛОЖЬ; УдалитьОтборыКомпоновщика(Объект.КомпоновщикНастроекКомпоновкиДанных); Иначе Попытка НастроитьКомпоновщикНаСервере(Элементы.ДеревоМетаданных.ТекущаяСтрока); ДоступностьКомпоновщика = Истина; Исключение ДоступностьКомпоновщика = ЛОЖЬ; УдалитьОтборыКомпоновщика(Объект.КомпоновщикНастроекКомпоновкиДанных); КонецПопытки; КонецЕсли; Элементы.КомпоновщикОтбор.Доступность = ДоступностьКомпоновщика; //Элементы.КоманднаяПанельКомпоновщикОтбор.Доступность = ДоступностьКомпоновщика; КонецПроцедуры &НаКлиенте Функция ОпределитьПоСтрокеДереваДоступенПостроитель(СтрокаДерева) Если СтрокаДерева.ПолучитьЭлементы().Количество() > 0 Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции &НаКлиенте Процедура УдалитьОтборыКомпоновщика(Компоновщик) Компоновщик.Настройки.Отбор.Элементы.Очистить(); КонецПроцедуры &НаСервере Процедура НастроитьКомпоновщикНаСервере(ТекущаяСтрока) СтрокаДерева = Объект.ДеревоМетаданных.НайтиПоИдентификатору(ТекущаяСтрока); СхемаКомпоновкиДанных = Объект().ПодготовитьКомпоновщикДляВыгрузки(СтрокаДерева); АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, УникальныйИдентификатор); Объект.КомпоновщикНастроекКомпоновкиДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы)); Объект.КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); КонецПроцедуры // НастроитьКомпоновщикНаСервере() &НаКлиенте Процедура КомпоновщикОтборПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) ОбновитьНастройкиПостроителяВТаблицеДляВыгрузки(); КонецПроцедуры &НаКлиенте Процедура КомпоновщикОтборПослеУдаления(Элемент) ОбновитьНастройкиПостроителяВТаблицеДляВыгрузки(); КонецПроцедуры &НаКлиенте Процедура ОбновитьНастройкиПостроителяВТаблицеДляВыгрузки() ТекущаяСтрока = Элементы.ДеревоМетаданных.ТекущиеДанные; Если Объект.КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор.Элементы.Количество() > 0 Тогда ТекущаяСтрока.НастройкиКомпоновщика = Объект.КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор;//Объект.КомпоновщикНастроекКомпоновкиДанных.ПолучитьНастройки(); ТекущаяСтрока.ИспользоватьОтбор = ИСТИНА; ТекущаяСтрока.Выгружать = Истина; Иначе ТекущаяСтрока.НастройкиКомпоновщика = Неопределено; ТекущаяСтрока.ИспользоватьОтбор = ЛОЖЬ; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПоказатьРезультатОтбора(Команда) // показать выбранные записи Если Элементы.КомпоновщикОтбор.Доступность <> Истина ИЛИ Элементы.ДеревоМетаданных.ТекущиеДанные = Неопределено Тогда Возврат; КонецЕсли; ТабличныйДокумент = ПолучитьРезультатОтбораНаСервере(); ТабличныйДокумент.Показать(НСтр("ru = 'Выбранные объекты'")); КонецПроцедуры &НаСервере Функция ПолучитьРезультатОтбораНаСервере() СтрокаДерева = Объект.ДеревоМетаданных.НайтиПоИдентификатору(Элементы.ДеревоМетаданных.ТекущаяСтрока); ТабличныйДокумент = Объект().СформироватьОтчетПоОтобраннымДанным(СтрокаДерева); Возврат ТабличныйДокумент; КонецФункции // ПолучитьРезультатОтбораНаСервере() \ No newline at end of file diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\244\320\276\321\200\320\274\320\260/form" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\244\320\276\321\200\320\274\320\260/form" index 64b3094e..137b6be0 100644 --- "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\244\320\276\321\200\320\274\320\260/form" +++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\244\320\276\321\200\320\274\320\260/form" @@ -92,7 +92,29 @@ {1,0} },8,2,1,0,1,1, {5,c45fa92b-aba3-4d9e-a9fe-274560abc287,286,1,8, -{6,276f1308-64e1-4512-a03f-93324270533c,1,e1692cc2-605b-4535-84dd-28440238746c, +{6,8a0d842b-3e14-4f27-9585-6a879e8494d5,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, +{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0}, +{6,2b39e455-221b-44b9-a7ae-2da17d3e370d,1,e1692cc2-605b-4535-84dd-28440238746c, +{3,"КоманднаяПанель1ПодменюСоздатьМакетДанных", +{1,"КоманднаяПанель1ПодменюСоздатьМакетДанных", +{1,1, +{"ru","Подменю создать макет данных"} +}, +{1,1, +{"ru","Подменю создать макет данных"} +}, +{1,1, +{"ru","Подменю создать макет данных"} +}, +{3,0, +{0},"",-1,-1,1,0}, +{0,0,0} +} +},1, +{3,1, +{0,affb1617-24bc-4170-9c84-0902cc3ef206},"",-1,-1,1,0} +}, +{6,c90b136a-e3a4-4bf0-9cd7-2e4c05299bb3,1,e1692cc2-605b-4535-84dd-28440238746c, {3,"КоманднаяПанель1ПротестироватьЗагрузкуМакета", {1,"КоманднаяПанель1ПротестироватьЗагрузкуМакета", {1,1, @@ -112,16 +134,14 @@ {3,1, {0,20ebc47b-f4d9-439c-acd3-fdc624fbac2a},"",-1,-1,1,0} }, -{6,a0808445-f34a-47d9-8b21-2edfa143931d,1,fbe38877-b914-4fd5-8540-07dde06ba2e1, +{6,48d66207-c286-4533-951d-de92644af716,1,fbe38877-b914-4fd5-8540-07dde06ba2e1, {6,4294967295,00000000-0000-0000-0000-000000000000,142, {1,99,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0},0,1},0}, -{6,0d8e18a6-75bb-4c63-bd3a-6eafe0ae3273,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, -{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0}, -{6,1e13ab7c-7558-4863-b060-4812a0dab948,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, +{6,277bdfd7-82b7-4c6e-a5cb-8cf898097182,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, {1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0}, -{6,4890e1d4-b20e-4442-a9ec-d6bc22162335,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, +{6,504389c0-6f9f-49ac-8bc3-82c315fe2b1c,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, {1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0}, -{6,437408dc-3cb1-4fb1-8624-fc3785565a6d,1,e1692cc2-605b-4535-84dd-28440238746c, +{6,773f2072-0e0c-4ebf-ba4e-8c5b3206cd8c,1,e1692cc2-605b-4535-84dd-28440238746c, {3,"КоманднаяПанель1СохранитьМакетДанныхВФайл", {1,"КоманднаяПанель1СохранитьМакетДанныхВФайл", {1,1, @@ -141,57 +161,37 @@ {3,1, {0,818ab7d0-4654-4542-bd5e-fd9d1352b5a1},"",-1,-1,1,0} }, -{6,8f5a9af6-600a-474e-aa9d-b2521f16f7a0,1,e1692cc2-605b-4535-84dd-28440238746c, -{3,"КоманднаяПанель1ПодменюСоздатьМакетДанных", -{1,"КоманднаяПанель1ПодменюСоздатьМакетДанных", -{1,1, -{"ru","Подменю создать макет данных"} -}, -{1,1, -{"ru","Подменю создать макет данных"} -}, -{1,1, -{"ru","Подменю создать макет данных"} -}, -{3,0, -{0},"",-1,-1,1,0}, -{0,0,0} -} -},1, -{3,1, -{0,affb1617-24bc-4170-9c84-0902cc3ef206},"",-1,-1,1,0} -}, -{6,eee8ec2d-adb1-4c3c-8e8a-93095c912c3b,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, +{6,10c33669-56f5-4bd4-9221-863fe52857ea,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, {1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},1, -{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,8,1e13ab7c-7558-4863-b060-4812a0dab948, +{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,8,8a0d842b-3e14-4f27-9585-6a879e8494d5, {8,"Разделитель4",0,1, {1,1, {"ru","Действие2"} -},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,38,1e2,2,0,1,0,0,0,0},8f5a9af6-600a-474e-aa9d-b2521f16f7a0, +},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,38,1e2,2,0,1,0,0,0,0},2b39e455-221b-44b9-a7ae-2da17d3e370d, {8,"ПодменюСоздатьМакетДанных",0,1, {1,1, {"ru","Создать макет данных"} -},1,c45fa92b-aba3-4d9e-a9fe-274560abc287,81,1e2,0,3,1,0,0,0,0},4890e1d4-b20e-4442-a9ec-d6bc22162335, +},1,c45fa92b-aba3-4d9e-a9fe-274560abc287,81,1e2,0,3,1,0,0,0,0},10c33669-56f5-4bd4-9221-863fe52857ea, {8,"Разделитель1",0,1, {1,1, {"ru","Действие1"} -},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,11,1e2,2,0,1,0,0,0,0},276f1308-64e1-4512-a03f-93324270533c, +},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,11,1e2,2,0,1,0,0,0,0},c90b136a-e3a4-4bf0-9cd7-2e4c05299bb3, {8,"ПротестироватьЗагрузкуМакета",0,1, {1,1, {"#","Протестировать загрузку макета"} -},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,12,1e2,0,3,1,0,0,0,0},eee8ec2d-adb1-4c3c-8e8a-93095c912c3b, +},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,12,1e2,0,3,1,0,0,0,0},504389c0-6f9f-49ac-8bc3-82c315fe2b1c, {8,"Разделитель2",0,1, {1,1, {"ru","Действие1"} -},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,13,1e2,2,0,1,0,0,0,0},437408dc-3cb1-4fb1-8624-fc3785565a6d, +},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,13,1e2,2,0,1,0,0,0,0},773f2072-0e0c-4ebf-ba4e-8c5b3206cd8c, {8,"СохранитьМакетДанныхВФайл",0,1, {1,1, {"#","Сохранить макет данных в файл"} -},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,14,1e2,0,3,1,0,0,0,0},0d8e18a6-75bb-4c63-bd3a-6eafe0ae3273, +},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,14,1e2,0,3,1,0,0,0,0},277bdfd7-82b7-4c6e-a5cb-8cf898097182, {8,"Разделитель3",0,1, {1,1, {"ru","Действие2"} -},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,16,1e2,2,0,1,0,0,0,0},a0808445-f34a-47d9-8b21-2edfa143931d, +},0,c45fa92b-aba3-4d9e-a9fe-274560abc287,16,1e2,2,0,1,0,0,0,0},48d66207-c286-4533-951d-de92644af716, {8,"Действие1",0,1, {1,1, {"#","Действие1"} @@ -542,9 +542,9 @@ {1,0} },8,2,1,0,1,1, {5,c57d1982-5648-4cf0-a874-e4b7f130b2f9,431,1,2, -{6,71821fb3-8d47-4db4-83c4-833d459e7042,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, +{6,8deff7fa-a745-4cc6-921e-a6d1e3d351ed,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, {1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0}, -{6,4083e81f-f20e-4b73-974a-ef2eb6e7d4f4,1,e1692cc2-605b-4535-84dd-28440238746c, +{6,32b13ce3-331a-4ee7-aaf0-6fb281923021,1,e1692cc2-605b-4535-84dd-28440238746c, {3,"КоманднаяПанель2ОчиститьТаблицуДанных", {1,"КоманднаяПанель2ОчиститьТаблицуДанных", {1,1, @@ -564,11 +564,11 @@ {3,1, {-2},"",-1,-1,1,0} },1, -{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,2,71821fb3-8d47-4db4-83c4-833d459e7042, +{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,2,8deff7fa-a745-4cc6-921e-a6d1e3d351ed, {8,"Разделитель",0,1, {1,1, {"ru","Действие9"} -},0,c57d1982-5648-4cf0-a874-e4b7f130b2f9,88,1e2,2,0,1,0,0,0,0},4083e81f-f20e-4b73-974a-ef2eb6e7d4f4, +},0,c57d1982-5648-4cf0-a874-e4b7f130b2f9,88,1e2,2,0,1,0,0,0,0},32b13ce3-331a-4ee7-aaf0-6fb281923021, {8,"ОчиститьТаблицуДанных",0,1, {1,1, {"ru","Очистить"} @@ -5408,9 +5408,7 @@ XFhJtSKWz30vMgcItzCmDw==},0} {1,0} },8,2,1,0,1,1, {5,d0a52278-ca43-4762-b8e3-8d872ef8fe2d,182,1,2, -{6,0dc07ea8-280f-4427-8c6c-bc3e9db854b1,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, -{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0}, -{6,e93e581f-f08f-4356-99ef-57b71c14881d,1,e1692cc2-605b-4535-84dd-28440238746c, +{6,6e1c997e-0519-43e7-a4a6-259c8b4f2c86,1,e1692cc2-605b-4535-84dd-28440238746c, {3,"КоманднаяПанельКомпоновщикОтборПоказатьРезультатаОтбора", {1,"КоманднаяПанельКомпоновщикОтборПоказатьРезультатаОтбора", {1,1, @@ -5433,12 +5431,14 @@ XFhJtSKWz30vMgcItzCmDw==},0} {1,1, {"ru","Показать выбранные записи"} } -},1, -{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,2,0dc07ea8-280f-4427-8c6c-bc3e9db854b1, +}, +{6,78e3cd83-31b2-403b-b240-4f63498a7383,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, +{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},1, +{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,2,78e3cd83-31b2-403b-b240-4f63498a7383, {8,"Разделитель1",0,1, {1,1, {"ru","Действие4"} -},0,d0a52278-ca43-4762-b8e3-8d872ef8fe2d,8,1e2,2,0,1,0,0,0,0},e93e581f-f08f-4356-99ef-57b71c14881d, +},0,d0a52278-ca43-4762-b8e3-8d872ef8fe2d,8,1e2,2,0,1,0,0,0,0},6e1c997e-0519-43e7-a4a6-259c8b4f2c86, {8,"ПоказатьРезультатаОтбора",0,3, {1,1, {"ru","Показать выбранные"} @@ -5509,29 +5509,7 @@ XFhJtSKWz30vMgcItzCmDw==},0} {1,0} },8,2,0,0,1,1, {5,8d6538eb-fa47-46f2-82d7-07ab238d41c2,3,1,3, -{6,07b0be5c-bb12-4aa5-9312-7474bcad9e6c,1,e1692cc2-605b-4535-84dd-28440238746c, -{3,"КоманднаяПанельДеревоМетаданныхЗаполнитьТаблицуДанных", -{1,"КоманднаяПанельДеревоМетаданныхЗаполнитьТаблицуДанных", -{1,1, -{"ru","Заполнить таблицу данных"} -}, -{1,1, -{"ru","Заполнить таблицу данных"} -}, -{1,1, -{"ru","Заполнить таблицу данных"} -}, -{3,0, -{0},"",-1,-1,1,0}, -{0,0,0} -} -},1, -{3,1, -{-8},"",-1,-1,1,0} -}, -{6,2f938440-044d-4698-8816-ae0b70179d1e,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, -{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0}, -{6,58ee9673-f308-4834-a0de-b392b343824a,1,e1692cc2-605b-4535-84dd-28440238746c, +{6,2c5f7c1c-4e4d-4e2b-b521-d733a9ecbe85,1,e1692cc2-605b-4535-84dd-28440238746c, {3,"КоманднаяПанель1ПересчетВыгружаемыхПоСсылке", {1,"КоманднаяПанель1ПересчетВыгружаемыхПоСсылке", {1,1, @@ -5564,16 +5542,38 @@ AP+IiGZggA8AD4/4ZmCA//AAj/hmYI///wCP+IiAj///8I/4/4CIiIiIj/j/gGZo ////+P+AZmj////4D4BmaIiIiIgAgGZmZo///wCAZmZmj///8IBmZmaIiIiIgA== } },0} +}, +{6,485d51c6-9259-4f8c-89db-267810557396,1,e1692cc2-605b-4535-84dd-28440238746c, +{3,"КоманднаяПанельДеревоМетаданныхЗаполнитьТаблицуДанных", +{1,"КоманднаяПанельДеревоМетаданныхЗаполнитьТаблицуДанных", +{1,1, +{"ru","Заполнить таблицу данных"} +}, +{1,1, +{"ru","Заполнить таблицу данных"} +}, +{1,1, +{"ru","Заполнить таблицу данных"} +}, +{3,0, +{0},"",-1,-1,1,0}, +{0,0,0} +} },1, -{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,3,58ee9673-f308-4834-a0de-b392b343824a, +{3,1, +{-8},"",-1,-1,1,0} +}, +{6,e4e63923-c115-4c51-ad66-9aaf79575675,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, +{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},1, +{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,3,2c5f7c1c-4e4d-4e2b-b521-d733a9ecbe85, {8,"ПересчетВыгружаемыхПоСсылке",0,2, {1,1, {"ru","Объекты по ссылкам"} -},1,8d6538eb-fa47-46f2-82d7-07ab238d41c2,1,1e2,0,3,1,0,0,0,0},2f938440-044d-4698-8816-ae0b70179d1e, +},1,8d6538eb-fa47-46f2-82d7-07ab238d41c2,1,1e2,0,3,1,0,0,0,0},e4e63923-c115-4c51-ad66-9aaf79575675, {8,"Разделитель",0,1, {1,1, {"ru","Действие"} -},0,8d6538eb-fa47-46f2-82d7-07ab238d41c2,3,1e2,2,0,1,0,0,0,0},07b0be5c-bb12-4aa5-9312-7474bcad9e6c, +},0,8d6538eb-fa47-46f2-82d7-07ab238d41c2,3,1e2,2,0,1,0,0,0,0},485d51c6-9259-4f8c-89db-267810557396, {8,"ЗаполнитьТаблицуДанных",0,1, {1,1, {"#","Заполнить таблицу данных"} @@ -6416,7 +6416,7 @@ YkNzYWPVilk+N11kDRBtUUw/},0} } } } -},746,500,1,0,1,4,4,338}, +},746,500,1,0,1,4,4,351}, { {0},12, {2, diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\244\320\276\321\200\320\274\320\260/module" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\244\320\276\321\200\320\274\320\260/module.bsl" similarity index 100% rename from "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\244\320\276\321\200\320\274\320\260/module" rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/Form/\320\244\320\276\321\200\320\274\320\260/module.bsl" diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/ObjectModule.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/ObjectModule.bsl" similarity index 94% rename from "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/ObjectModule.txt" rename to "src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/ObjectModule.bsl" index f385e6c4..6bdffa73 100644 --- "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/ObjectModule.txt" +++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/ObjectModule.bsl" @@ -18,8 +18,11 @@ Перем ОбработанныхНаборовЗаписей Экспорт; Перем СоставВспомогательнойВыгрузки; +Перем АнглийскоеСоответствие; + + Функция Версия() Экспорт - Возврат "3.0.0.4"; + Возврат "3.0.0.5"; КонецФункции Функция ЗаголовокФормы() Экспорт @@ -393,27 +396,27 @@ ОбъектСсылка = Неопределено; Если ПротоОбъект.Объект<>Неопределено Тогда Возврат ПротоОбъект.Объект; - ИначеЕсли ПротоОбъект.Тип = "Справочник" Тогда + ИначеЕсли ПротоОбъект.Тип = ВернутьЗначениеСоответствия("Справочник") Тогда ОбъектСсылка = СоздатьОбъект_Справочник(ПротоДанные,ПротоОбъект); - ИначеЕсли ПротоОбъект.Тип = "Документ" Тогда + ИначеЕсли ПротоОбъект.Тип = ВернутьЗначениеСоответствия("Документ") Тогда ОбъектСсылка = СоздатьОбъект_Документ_или_БизнесПроцесс_или_Задача(Документы, ПротоДанные,ПротоОбъект); - ИначеЕсли ПротоОбъект.Тип = "РегистрСведений" Тогда + ИначеЕсли ПротоОбъект.Тип = ВернутьЗначениеСоответствия("РегистрСведений") Тогда ОбъектСсылка = СоздатьОбъект_Регистр(РегистрыСведений, ПротоДанные,ПротоОбъект); - ИначеЕсли ПротоОбъект.Тип = "РегистрНакопления" Тогда + ИначеЕсли ПротоОбъект.Тип = ВернутьЗначениеСоответствия("РегистрНакопления") Тогда ОбъектСсылка = СоздатьОбъект_Регистр(РегистрыНакопления, ПротоДанные,ПротоОбъект); - ИначеЕсли ПротоОбъект.Тип = "РегистрБухгалтерии" Тогда + ИначеЕсли ПротоОбъект.Тип = ВернутьЗначениеСоответствия("РегистрБухгалтерии") Тогда ОбъектСсылка = СоздатьОбъект_Регистр(РегистрыБухгалтерии, ПротоДанные,ПротоОбъект); - ИначеЕсли ПротоОбъект.Тип = "ПользовательИБ" Тогда + ИначеЕсли ПротоОбъект.Тип = ВернутьЗначениеСоответствия("ПользовательИБ") Тогда ОбъектСсылка = СоздатьОбъект_ПользовательИБ(ПротоДанные,ПротоОбъект); - ИначеЕсли ПротоОбъект.Тип = "БизнесПроцесс" Тогда + ИначеЕсли ПротоОбъект.Тип = ВернутьЗначениеСоответствия("БизнесПроцесс") Тогда ОбъектСсылка = СоздатьОбъект_Документ_или_БизнесПроцесс_или_Задача(БизнесПроцессы, ПротоДанные,ПротоОбъект); - ИначеЕсли ПротоОбъект.Тип = "Задача" Тогда + ИначеЕсли ПротоОбъект.Тип = ВернутьЗначениеСоответствия("Задача") Тогда ОбъектСсылка = СоздатьОбъект_Документ_или_БизнесПроцесс_или_Задача(Задачи, ПротоДанные,ПротоОбъект); - ИначеЕсли ПротоОбъект.Тип = "ПланОбмена" Тогда + ИначеЕсли ПротоОбъект.Тип = ВернутьЗначениеСоответствия("ПланОбмена") Тогда ОбъектСсылка = СоздатьОбъект_УзелПланаОбмена(ПротоДанные,ПротоОбъект); КонецЕсли; ПротоОбъект.Объект = ОбъектСсылка; @@ -897,7 +900,7 @@ Функция ПолучитьОбъектЕслиВПротоДанныеПереданаСсылка(МенеджерОбъекта, ПротоОбъект) Перем Объект; - стрПолеСсылка = ПротоОбъект.ПоляОбъекта.Найти("Ссылка","Имя"); + стрПолеСсылка = ПротоОбъект.ПоляОбъекта.Найти(ВернутьЗначениеСоответствия("Ссылка"),"Имя"); Если стрПолеСсылка<>Неопределено Тогда ПротоОбъект.Объект = МенеджерОбъекта.ПолучитьСсылку(Новый УникальныйИдентификатор(стрПолеСсылка.Значение)); ПротоОбъект.ПоляОбъекта.Удалить(стрПолеСсылка); @@ -1030,22 +1033,20 @@ Если Не УжеВычислилиЗначение и ЕстьМетаданныеРеквизита Тогда ПолноеИмяТипаРеквизита = МетаданныеТипаРеквизита.ПолноеИмя(); - - Если Найти(ПолноеИмяТипаРеквизита, "Справочник") = 1 Тогда + Если Найти(ПолноеИмяТипаРеквизита, ВернутьЗначениеСоответствия("Справочник")) = 1 Тогда менеджерОбъекта = Справочники[МетаданныеТипаРеквизита.Имя]; - ИначеЕсли Найти(ПолноеИмяТипаРеквизита, "Документ") = 1 Тогда + ИначеЕсли Найти(ПолноеИмяТипаРеквизита, ВернутьЗначениеСоответствия("Документ")) = 1 Тогда менеджерОбъекта = Документы[МетаданныеТипаРеквизита.Имя]; - ИначеЕсли Найти(ПолноеИмяТипаРеквизита, "Перечисление") = 1 Тогда + ИначеЕсли Найти(ПолноеИмяТипаРеквизита, ВернутьЗначениеСоответствия("Перечисление")) = 1 Тогда менеджерОбъекта = Перечисления[МетаданныеТипаРеквизита.Имя]; - ИначеЕсли Найти(ПолноеИмяТипаРеквизита, "ПланСчетов") = 1 Тогда + ИначеЕсли Найти(ПолноеИмяТипаРеквизита, ВернутьЗначениеСоответствия("ПланСчетов")) = 1 Тогда менеджерОбъекта = ПланыСчетов[МетаданныеТипаРеквизита.Имя]; - ИначеЕсли Найти(ПолноеИмяТипаРеквизита, "ПланВидовХарактеристик") = 1 Тогда + ИначеЕсли Найти(ПолноеИмяТипаРеквизита, ВернутьЗначениеСоответствия("ПланВидовХарактеристик")) = 1 Тогда менеджерОбъекта = ПланыВидовХарактеристик[МетаданныеТипаРеквизита.Имя]; КонецЕсли; Если менеджерОбъекта = Неопределено Тогда ВызватьИсключение "Не найден менеджерОбъекта"; КонецЕсли; - Если Режим = "ПРЕДОПРЕДЕЛЕННЫЙ" Тогда //Значение = менеджерОбъекта[стрПоле.Значение]; Если ЗначениеЗаполнено(стрПоле.Значение) Тогда @@ -1161,22 +1162,22 @@ Функция НаборРеквизитовМетаданных(КорневойТип, МетаданныеОбъекта) НаборМдРеквизитов = Новый Структура; - Если КорневойТип = "Справочник" - или КорневойТип = "Документ" - или КорневойТип = "ПланВидовХарактеристик" - или КорневойТип = "БизнесПроцесс" - или КорневойТип = "ПланОбмена" Тогда + Если КорневойТип = ВернутьЗначениеСоответствия("Справочник") + или КорневойТип = ВернутьЗначениеСоответствия("Документ") + или КорневойТип = ВернутьЗначениеСоответствия("ПланВидовХарактеристик") + или КорневойТип = ВернутьЗначениеСоответствия("БизнесПроцесс") + или КорневойТип = ВернутьЗначениеСоответствия("ПланОбмена") Тогда ДобавитьРеквизитыМетаданныхВНаборРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, НаборМдРеквизитов); ДобавитьРеквизитыМетаданныхВНаборРеквизитов(МетаданныеОбъекта.Реквизиты, НаборМдРеквизитов); - ИначеЕсли КорневойТип = "Задача" Тогда + ИначеЕсли КорневойТип = ВернутьЗначениеСоответствия("Задача") Тогда ДобавитьРеквизитыМетаданныхВНаборРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, НаборМдРеквизитов); ДобавитьРеквизитыМетаданныхВНаборРеквизитов(МетаданныеОбъекта.Реквизиты, НаборМдРеквизитов); ДобавитьРеквизитыМетаданныхВНаборРеквизитов(МетаданныеОбъекта.РеквизитыАдресации, НаборМдРеквизитов); - ИначеЕсли КорневойТип = "РегистрСведений" - или КорневойТип = "РегистрНакопления" - или КорневойТип = "РегистрБухгалтерии" Тогда + ИначеЕсли КорневойТип = ВернутьЗначениеСоответствия("РегистрСведений") + или КорневойТип = ВернутьЗначениеСоответствия("РегистрНакопления") + или КорневойТип = ВернутьЗначениеСоответствия("РегистрБухгалтерии") Тогда ДобавитьРеквизитыМетаданныхВНаборРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, НаборМдРеквизитов); ДобавитьРеквизитыМетаданныхВНаборРеквизитов(МетаданныеОбъекта.Измерения, НаборМдРеквизитов, КорневойТип); @@ -1634,7 +1635,7 @@ описаниеЗаписиРегистраСведений1.Вставить("Реквизиты", РеквизитыЗаписи); Если ПустаяСтрока(Строка.__Метаданные) Тогда - описаниеЗаписиРегистраСведений1.Вставить("Ссылка", Строка.Ссылка); + описаниеЗаписиРегистраСведений1.Вставить(ВернутьЗначениеСоответствия("Ссылка"), Строка.Ссылка); Иначе Мета = Неопределено; Выполнить("Мета = "+Строка.__Метаданные); @@ -1654,7 +1655,7 @@ Функция СоздатьОписательЭлементаПоСсылке(Ссылка, МассивИмен, ДанныеОбъекта = Неопределено) Экспорт ОписательЭлемента = СоздатьОписательЭлемента(); - ОписательЭлемента.Ссылка = Ссылка; + ОписательЭлемента[ВернутьЗначениеСоответствия("Ссылка")] = Ссылка; ОписательЭлемента.ИмяПеременной = УникальноеИмяПеременнойПоСсылке(Ссылка, МассивИмен); МетаСсылка = Ссылка.Метаданные(); ОписательЭлемента.Метаданное = МетаСсылка; @@ -1751,7 +1752,7 @@ МассивИмен.Добавить(НРег(ОписательЭлемента.ИмяПеременной)); ОписательЭлемента.Реквизиты = НаборЗаписей; - ОписательЭлемента.Ссылка = Неопределено; + ОписательЭлемента[ВернутьЗначениеСоответствия("Ссылка")] = Неопределено; ОписательЭлемента.Метаданное = Мд; Возврат ОписательЭлемента; КонецФункции @@ -1773,7 +1774,7 @@ Функция СоздатьОписательЭлемента() Экспорт ОписательЭлемента = Новый Структура; - ОписательЭлемента.Вставить("Ссылка"); + ОписательЭлемента.Вставить(ВернутьЗначениеСоответствия("Ссылка")); ОписательЭлемента.Вставить("ИмяПеременной", ""); ОписательЭлемента.Вставить("Значение", Неопределено); ОписательЭлемента.Вставить("Метаданное"); @@ -1816,16 +1817,16 @@ КорневойТипКонфигурации = ПолучитьКорневойТипКонфигурации_ирЛкс(Мд); Представление = ""; - Если КорневойТипКонфигурации = "Справочник" Тогда + Если КорневойТипКонфигурации = ВернутьЗначениеСоответствия("Справочник") Тогда Представление = Ссылка.Наименование; - ИначеЕсли КорневойТипКонфигурации = "Документ" Тогда + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("Документ") Тогда Представление = ""+Ссылка; //ИначеЕсли КорневойТипКонфигурации = "РегистрСведений" Тогда - ИначеЕсли КорневойТипКонфигурации = "БизнесПроцесс" Тогда + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("БизнесПроцесс") Тогда Представление = ""+Ссылка; - ИначеЕсли КорневойТипКонфигурации = "Задача" Тогда + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("Задача") Тогда Представление = ""+Ссылка; - ИначеЕсли КорневойТипКонфигурации = "ПланОбмена" Тогда + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("ПланОбмена") Тогда Представление = ""+Ссылка; Иначе ВызватьИсключение "ПолучитьИдентификаторПредставленияПоСсылке() : Неизвестный КорневойТипКонфигурации <"+КорневойТипКонфигурации+">"; @@ -1910,22 +1911,30 @@ менеджерОбъекта = ПолучитьМенеджерОбъекта_ирЛкс(Мд); КорневойТипКонфигурации = ПолучитьКорневойТипКонфигурации_ирЛкс(Мд); - Если КорневойТипКонфигурации = "Справочник" Тогда + Если КорневойТипКонфигурации = ВернутьЗначениеСоответствия("Справочник") Тогда Если ЗначениеЗаполнено(Ссылка) и Ссылка.ЭтоГруппа Тогда - лПустойОбъект = менеджерОбъекта.СоздатьГруппу(); + Если НЕ ВариантВстроенногоЯзыкаАнглийский Тогда + лПустойОбъект = менеджерОбъекта.СоздатьГруппу(); + Иначе + лПустойОбъект = менеджерОбъекта.CreateFolder(); + КонецЕсли; Иначе - лПустойОбъект = менеджерОбъекта.СоздатьЭлемент(); + Если НЕ ВариантВстроенногоЯзыкаАнглийский Тогда + лПустойОбъект = менеджерОбъекта.СоздатьЭлемент(); + Иначе + лПустойОбъект = менеджерОбъекта.CreateItem(); + КонецЕсли; КонецЕсли; - ИначеЕсли КорневойТипКонфигурации = "Документ" Тогда + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("Документ") Тогда лПустойОбъект = менеджерОбъекта.СоздатьДокумент(); - ИначеЕсли КорневойТипКонфигурации = "БизнесПроцесс" Тогда + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("БизнесПроцесс") Тогда лПустойОбъект = менеджерОбъекта.СоздатьБизнесПроцесс(); - ИначеЕсли КорневойТипКонфигурации = "Задача" Тогда + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("Задача") Тогда лПустойОбъект = менеджерОбъекта.СоздатьЗадачу(); - ИначеЕсли КорневойТипКонфигурации = "РегистрСведений" Тогда - ИначеЕсли КорневойТипКонфигурации = "РегистрНакопления" Тогда - ИначеЕсли КорневойТипКонфигурации = "РегистрБухгалтерии" Тогда - ИначеЕсли КорневойТипКонфигурации = "ПланОбмена" Тогда + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрСведений") Тогда + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрНакопления") Тогда + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрБухгалтерии") Тогда + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("ПланОбмена") Тогда лПустойОбъект = менеджерОбъекта.СоздатьУзел(); Иначе ВызватьИсключение "Неизвестный КорневойТипКонфигурации <"+КорневойТипКонфигурации+">"; @@ -1938,7 +1947,7 @@ Если Не ВыгружатьСсылку И ЗначениеЗаполнено(ОписательОбъекта.ГуидСсылки) Тогда Для каждого РеквизитМд Из Мд.СтандартныеРеквизиты Цикл - Если РеквизитМд.Имя = "Ссылка" Тогда + Если РеквизитМд.Имя = ВернутьЗначениеСоответствия("Ссылка") Тогда НомерСтрокиМакета = Макет.ВысотаТаблицы+1; ДобавилиРеквизит = ОбработатьРеквизитОбъекта(Макет, МассивДанных, Объект, РеквизитМд, ОписательОбъекта.ГуидСсылки, Мд, НомерСтрокиМакета, ШапкаДанных); КонецЕсли; @@ -1951,17 +1960,17 @@ ОбработатьТабличныеЧастиОбъекта(Макет, Мд.ТабличныеЧасти, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект); ОбработатьРежимыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Объект); - ИначеЕсли КорневойТипКонфигурации = "РегистрСведений" и ТипЗнч(ОписательОбъекта.Реквизиты) = Тип("Структура") Тогда + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрСведений") и ТипЗнч(ОписательОбъекта.Реквизиты) = Тип("Структура") Тогда ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.СтандартныеРеквизиты, ВыгружаемыеСтандартныеРеквизиты); ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Измерения, Неопределено); ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Ресурсы, Неопределено); ОбработатьРеквизитыОбъекта(Макет, ОписательОбъекта, ШапкаДанных, МассивДанных, Мд, Неопределено, Мд.Реквизиты, Неопределено); - ИначеЕсли КорневойТипКонфигурации = "РегистрСведений" - Или КорневойТипКонфигурации = "РегистрНакопления" - Или КорневойТипКонфигурации = "РегистрБухгалтерии" Тогда + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрСведений") + Или КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрНакопления") + Или КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрБухгалтерии") Тогда - ЭтоРегистрБухгалтерии = КорневойТипКонфигурации = "РегистрБухгалтерии"; + ЭтоРегистрБухгалтерии = КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрБухгалтерии"); НаборЗаписейРегистра = ОписательОбъекта.Реквизиты; Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл @@ -2041,94 +2050,94 @@ Функция ВыгружаемыеСтандартныеРеквизиты(ОписательОбъекта, КорневойТипКонфигурации) ВыгружаемыеСтандартныеРеквизиты = Новый Массив; - Если КорневойТипКонфигурации = "Справочник" Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Наименование"); - ВыгружаемыеСтандартныеРеквизиты.Добавить("ПометкаУдаления"); + Если КорневойТипКонфигурации = ВернутьЗначениеСоответствия("Справочник") Тогда + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Наименование")); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("ПометкаУдаления")); ВыгружатьКод = Ложь; Если ОписательОбъекта.Свойство("ВыгружатьКод", ВыгружатьКод) и ВыгружатьКод Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Код"); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Код")); КонецЕсли; Если ВыгружатьСсылку Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Ссылка"); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Ссылка")); КонецЕсли; - МетаданныеСправочника = ОписательОбъекта.Ссылка.Метаданные(); + МетаданныеСправочника = ОписательОбъекта[ВернутьЗначениеСоответствия("Ссылка")].Метаданные(); Если МетаданныеСправочника.Владельцы.Количество() > 0 Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Владелец"); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Владелец")); КонецЕсли; Если МетаданныеСправочника.Иерархический Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Родитель"); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Родитель")); КонецЕсли; - ИначеЕсли КорневойТипКонфигурации = "Документ" Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Дата"); - ВыгружаемыеСтандартныеРеквизиты.Добавить("ПометкаУдаления"); - ВыгружаемыеСтандартныеРеквизиты.Добавить("Проведен"); + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("Документ") Тогда + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Дата")); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("ПометкаУдаления")); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Проведен")); ВыгружатьКод = Ложь; Если ОписательОбъекта.Свойство("ВыгружатьКод", ВыгружатьКод) и ВыгружатьКод Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Номер"); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Номер")); КонецЕсли; Если ВыгружатьСсылку Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Ссылка"); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Ссылка")); КонецЕсли; - ИначеЕсли КорневойТипКонфигурации = "БизнесПроцесс" Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Дата"); - ВыгружаемыеСтандартныеРеквизиты.Добавить("ПометкаУдаления"); - ВыгружаемыеСтандартныеРеквизиты.Добавить("Стартован"); - ВыгружаемыеСтандартныеРеквизиты.Добавить("Завершен"); - ВыгружаемыеСтандартныеРеквизиты.Добавить("ВедущаяЗадача"); + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("БизнесПроцесс") Тогда + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Дата")); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("ПометкаУдаления")); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Стартован")); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Завершен")); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("ВедущаяЗадача")); ВыгружатьКод = Ложь; Если ОписательОбъекта.Свойство("ВыгружатьКод", ВыгружатьКод) и ВыгружатьКод Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Номер"); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Номер")); КонецЕсли; Если ВыгружатьСсылку Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Ссылка"); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Ссылка")); КонецЕсли; - ИначеЕсли КорневойТипКонфигурации = "Задача" Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Дата"); - ВыгружаемыеСтандартныеРеквизиты.Добавить("ПометкаУдаления"); - ВыгружаемыеСтандартныеРеквизиты.Добавить("БизнесПроцесс"); - ВыгружаемыеСтандартныеРеквизиты.Добавить("ТочкаМаршрута"); - ВыгружаемыеСтандартныеРеквизиты.Добавить("Наименование"); - ВыгружаемыеСтандартныеРеквизиты.Добавить("Выполнена"); + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("Задача") Тогда + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Дата")); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("ПометкаУдаления")); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("БизнесПроцесс")); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("ТочкаМаршрута")); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Наименование")); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Выполнена")); ВыгружатьКод = Ложь; Если ОписательОбъекта.Свойство("ВыгружатьКод", ВыгружатьКод) и ВыгружатьКод Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Номер"); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Номер")); КонецЕсли; Если ВыгружатьСсылку Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Ссылка"); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Ссылка")); КонецЕсли; - ИначеЕсли КорневойТипКонфигурации = "РегистрСведений" Тогда + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрСведений") Тогда Если Не ОписательОбъекта.Метаданное.ПериодичностьРегистраСведений = Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Период"); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Период")); КонецЕсли; Если ОписательОбъекта.Метаданное.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Регистратор"); - ВыгружаемыеСтандартныеРеквизиты.Добавить("Активность"); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Регистратор")); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Активность")); КонецЕсли; - ИначеЕсли КорневойТипКонфигурации = "РегистрНакопления" или КорневойТипКонфигурации = "РегистрБухгалтерии" Тогда + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрНакопления") или КорневойТипКонфигурации = ВернутьЗначениеСоответствия("РегистрБухгалтерии") Тогда Для Каждого ОписаниеСтандартногоРеквизита Из ОписательОбъекта.Метаданное.СтандартныеРеквизиты Цикл - Если ОписаниеСтандартногоРеквизита.Имя = "НомерСтроки" Тогда + Если ОписаниеСтандартногоРеквизита.Имя = ВернутьЗначениеСоответствия("НомерСтроки") Тогда Продолжить; КонецЕсли; ВыгружаемыеСтандартныеРеквизиты.Добавить(ОписаниеСтандартногоРеквизита.Имя); КонецЦикла; - ИначеЕсли КорневойТипКонфигурации = "ПланОбмена" Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Наименование"); - ВыгружаемыеСтандартныеРеквизиты.Добавить("ПометкаУдаления"); - ВыгружаемыеСтандартныеРеквизиты.Добавить("НомерОтправленного"); - ВыгружаемыеСтандартныеРеквизиты.Добавить("НомерПринятого"); + ИначеЕсли КорневойТипКонфигурации = ВернутьЗначениеСоответствия("ПланОбмена") Тогда + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Наименование")); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("ПометкаУдаления")); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("НомерОтправленного")); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("НомерПринятого")); ВыгружатьКод = Ложь; Если ОписательОбъекта.Свойство("ВыгружатьКод", ВыгружатьКод) и ВыгружатьКод Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Код"); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Код")); КонецЕсли; Если ВыгружатьСсылку Тогда - ВыгружаемыеСтандартныеРеквизиты.Добавить("Ссылка"); + ВыгружаемыеСтандартныеРеквизиты.Добавить(ВернутьЗначениеСоответствия("Ссылка")); КонецЕсли; Иначе @@ -2355,7 +2364,7 @@ Если ТипЗнч(Объект) = Тип("ОбъектМетаданных") Тогда ЕстьРеквизитСсылка = Ложь; Для каждого РеквизитМд Из Объект.СтандартныеРеквизиты Цикл - Если РеквизитМд.Имя = "Ссылка" Тогда + Если РеквизитМд.Имя = ВернутьЗначениеСоответствия("Ссылка") Тогда ЕстьРеквизитСсылка = Истина; КонецЕсли; КонецЦикла; @@ -2479,7 +2488,7 @@ Функция ЭтоОписательОбъектаСсылки(ОписательОбъекта, РезСсылка = Неопределено) - ЭтоСсылочныйОбъект = ОписательОбъекта.Свойство("Ссылка", РезСсылка) И РезСсылка <> Неопределено; + ЭтоСсылочныйОбъект = ОписательОбъекта.Свойство(ВернутьЗначениеСоответствия("Ссылка"), РезСсылка) И РезСсылка <> Неопределено; Возврат ЭтоСсылочныйОбъект; КонецФункции @@ -2571,7 +2580,7 @@ // Функция ЛиСсылкаНаПеречисление_ирЛкс(пЗначение) Экспорт - Возврат (ПолучитьКорневойТипКонфигурации_ирЛкс(пЗначение) = "Перечисление"); + Возврат (ПолучитьКорневойТипКонфигурации_ирЛкс(пЗначение) = ВернутьЗначениеСоответствия("Перечисление")); КонецФункции // ЛксЛиСсылкаНаПеречисление() @@ -2587,14 +2596,15 @@ Функция ЛиКорневойТипОбъектаБД_ирЛкс(КорневойТип) Экспорт Если Ложь - ИЛИ КорневойТип = "БизнесПроцесс" - ИЛИ КорневойТип = "Задача" - ИЛИ КорневойТип = "Документ" - ИЛИ КорневойТип = "ПланВидовРасчета" - ИЛИ КорневойТип = "ПланВидовХарактеристик" - ИЛИ КорневойТип = "ПланОбмена" - ИЛИ КорневойТип = "ПланСчетов" - ИЛИ КорневойТип = "Справочник" + ИЛИ КорневойТип = ВернутьЗначениеСоответствия("БизнесПроцесс") + ИЛИ КорневойТип = ВернутьЗначениеСоответствия("Задача") + ИЛИ КорневойТип = ВернутьЗначениеСоответствия("Документ") + ИЛИ КорневойТип = ВернутьЗначениеСоответствия("ПланВидовРасчета") + ИЛИ КорневойТип = ВернутьЗначениеСоответствия("ПланВидовХарактеристик") + ИЛИ КорневойТип = ВернутьЗначениеСоответствия("ПланОбмена") + ИЛИ КорневойТип = ВернутьЗначениеСоответствия("ПланСчетов") + ИЛИ КорневойТип = ВернутьЗначениеСоответствия("Справочник") + Тогда Возврат Истина; КонецЕсли; @@ -2634,7 +2644,12 @@ Иначе //КорневойТип = ЛксПолучитьКорневойТипКонфигурации(МетаданныеОбъекта, Истина); // Изменил 02.03.2012 Если КорневойТип <> Неопределено Тогда - ИмяТипаМенеджера = КорневойТип + "Менеджер." + МетаданныеОбъекта.Имя; + Если НЕ ВариантВстроенногоЯзыкаАнглийский Тогда + ИмяМенеджер = "Менеджер."; + Иначе + ИмяМенеджер = "Manager."; + КонецЕсли; + ИмяТипаМенеджера = КорневойТип + ИмяМенеджер + МетаданныеОбъекта.Имя; Иначе ИмяТипаМенеджера = "Неопределено"; КонецЕсли; @@ -3139,7 +3154,7 @@ ОписаниеКласса.Класс = "Справочники"; ОписаниеКласса.Выгружаемый = истина; ОписаниеКласса.Менеджер = Справочники; - ОписаниеКласса.ДляЗапроса = "Справочник."; + ОписаниеКласса.ДляЗапроса = ВернутьЗначениеСоответствия("Справочник") + "."; ОписаниеКласса.Свойства.Добавить("Владельцы"); ОписаниеКласса.Свойства.Добавить("ВводитсяНаОсновании"); ОписаниеКласса.ИндексКартинки = 3; @@ -3175,7 +3190,7 @@ ОписаниеКласса.Класс = "Документы"; ОписаниеКласса.Выгружаемый = истина; ОписаниеКласса.Менеджер = Документы; - ОписаниеКласса.ДляЗапроса = "Документ."; + ОписаниеКласса.ДляЗапроса = ВернутьЗначениеСоответствия("Документ") + "."; ОписаниеКласса.Свойства.Добавить("ВводитсяНаОсновании"); ОписаниеКласса.Свойства.Добавить("Движения"); ОписаниеКласса.ИндексКартинки = 7; @@ -4500,8 +4515,8 @@ СоставВыгрузки(); мВыгруженныеОбъекты = Новый ТаблицаЗначений; - мВыгруженныеОбъекты.Колонки.Добавить("Ссылка"); - мВыгруженныеОбъекты.Индексы.Добавить("Ссылка"); + мВыгруженныеОбъекты.Колонки.Добавить(ВернутьЗначениеСоответствия("Ссылка")); + мВыгруженныеОбъекты.Индексы.Добавить(ВернутьЗначениеСоответствия("Ссылка")); Если ОбъектыВыгруженныеСОшибками = Неопределено Тогда @@ -4728,7 +4743,7 @@ Если ЭтоЗапросПоОбъекту Тогда // выгрузка ссылочных объектов - Ссылка = ДанныеОбъекта.Ссылка; + Ссылка = ДанныеОбъекта[ВернутьЗначениеСоответствия("Ссылка")]; Если СсылкаВыгружена(Ссылка) Тогда @@ -4892,14 +4907,14 @@ Функция СсылкаВыгружена(Ссылка) - Возврат мВыгруженныеОбъекты.Найти(Ссылка, "Ссылка") <> Неопределено; + Возврат мВыгруженныеОбъекты.Найти(Ссылка, ВернутьЗначениеСоответствия("Ссылка")) <> Неопределено; КонецФункции Процедура ДобавитьСсылкуКВыгруженным(Ссылка) СтрокаДобавления = мВыгруженныеОбъекты.Добавить(); - СтрокаДобавления.ссылка = Ссылка; + СтрокаДобавления[ВернутьЗначениеСоответствия("Ссылка")] = Ссылка; КонецПроцедуры @@ -5337,7 +5352,63 @@ КонецФункции +//Заполнение соответствий в английском языке. +Процедура ЗаполнитьСоответствие() + АнглийскоеСоответствие = Новый Соответствие; + АнглийскоеСоответствие.Вставить("Справочник", "Catalog"); + АнглийскоеСоответствие.Вставить("Документ", "Document"); + АнглийскоеСоответствие.Вставить("БизнесПроцесс", "BusinessProcess"); + АнглийскоеСоответствие.Вставить("Задача", "Task"); + АнглийскоеСоответствие.Вставить("ПланВидовРасчета", "ChartOfCalculationTypes"); + АнглийскоеСоответствие.Вставить("ПланВидовХарактеристик", "ChartOfCharacteristicTypes"); + АнглийскоеСоответствие.Вставить("ПланОбмена", "ExchangePlan"); + АнглийскоеСоответствие.Вставить("ПланСчетов", "ChartOfAccounts"); + АнглийскоеСоответствие.Вставить("РегистрСведений", "InformationRegister"); + АнглийскоеСоответствие.Вставить("РегистрНакопления", "AccumulationRegister"); + АнглийскоеСоответствие.Вставить("РегистрБухгалтерии", "AccountingRegister"); + АнглийскоеСоответствие.Вставить("Перечисление", "Enum"); + АнглийскоеСоответствие.Вставить("Наименование", "Description"); + АнглийскоеСоответствие.Вставить("Код", "Code"); + АнглийскоеСоответствие.Вставить("Родитель", "Parent"); + АнглийскоеСоответствие.Вставить("ЭтоГруппа", "IsFolder"); + АнглийскоеСоответствие.Вставить("ПометкаУдаления", "DeletionMark"); + АнглийскоеСоответствие.Вставить("Ссылка", "Ref"); + АнглийскоеСоответствие.Вставить("Предопределенный", "Predefined"); + АнглийскоеСоответствие.Вставить("ИмяПредопределенныхДанных","PredefinedDataName"); + АнглийскоеСоответствие.Вставить("Владелец", "Owner"); + АнглийскоеСоответствие.Вставить("Дата", "Date"); + АнглийскоеСоответствие.Вставить("Проведен", "Posted"); + АнглийскоеСоответствие.Вставить("Номер", "Number"); + АнглийскоеСоответствие.Вставить("Стартован", "Started"); + АнглийскоеСоответствие.Вставить("Завершен", "Completed"); + АнглийскоеСоответствие.Вставить("ВедущаяЗадача", "HeadTask"); + АнглийскоеСоответствие.Вставить("ТочкаМаршрута", "RoutePoint"); + АнглийскоеСоответствие.Вставить("Выполнена", "Executed"); + АнглийскоеСоответствие.Вставить("Период", "Period"); + АнглийскоеСоответствие.Вставить("Регистратор", "Recorder"); + АнглийскоеСоответствие.Вставить("Активность", "Active"); + АнглийскоеСоответствие.Вставить("НомерСтроки", "LineNumber"); + АнглийскоеСоответствие.Вставить("НомерОтправленного", "SentNo"); + АнглийскоеСоответствие.Вставить("НомерПринятого", "ReceivedNo"); + АнглийскоеСоответствие.Вставить("ПользовательИБ", "InfoBaseUser"); + +КонецПроцедуры + +//Функция возвращает полученное значение из списка соответствия в зависимости от языка +Функция ВернутьЗначениеСоответствия(ИскомоеЗначение) + ЗначениеСоответствия = ИскомоеЗначение; + Если ВариантВстроенногоЯзыкаАнглийский Тогда + ЭлементСоответствия = АнглийскоеСоответствие.Получить(ИскомоеЗначение); + Если НЕ ЭлементСоответствия = Неопределено Тогда + ЗначениеСоответствия = ЭлементСоответствия + КонецЕсли; + КонецЕсли; + Возврат ЗначениеСоответствия; +КонецФункции + + мНаличиеВыгрузкиПодчиненныхОбъектов = Ложь; мТипРезультатЗапроса = Тип("РезультатЗапроса"); мСоответствиеКолонокДвижений = Новый Соответствие; +ЗаполнитьСоответствие(); \ No newline at end of file diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/maps.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/maps.txt" index 0cfbc9b0..23ce08e8 100644 --- "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/maps.txt" +++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/maps.txt" @@ -1,4 +1,4 @@ -Form\УправляемаяФорма\Форма.txt-->103ebd31-7643-4b1a-ba8b-4c789efcb71f.0 (2 373, 2 857) +Form\УправляемаяФорма\Форма.bsl-->103ebd31-7643-4b1a-ba8b-4c789efcb71f.0 (2 439, 2 923) Макеты\СозданиеДвухЗаписейВРегистреСведений.mxl-->a5b4bbdd-19ca-489b-9dce-60e08daa143f.0 Макеты\СозданиеДвухЗаписейРегистраБухгалтерии.mxl-->178f7433-f515-4d45-befa-5af52252dd0a.0 Макеты\СозданиеДвухЗаписейРегистраНакопления.mxl-->6da54382-70f9-4d82-aa91-d001b86297ee.0 diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/renames.txt" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/renames.txt" index 2564466f..ec6ddb4a 100644 --- "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/renames.txt" +++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/renames.txt" @@ -11,7 +11,7 @@ 4b38e3ee-f722-47b8-9c4c-1c4aa073ba10-->und\4b38e3ee-f722-47b8-9c4c-1c4aa073ba10 4b38e3ee-f722-47b8-9c4c-1c4aa073ba10.0-->und\4b38e3ee-f722-47b8-9c4c-1c4aa073ba10.0 54f1dec0-8f13-4065-9f45-0e74788142d2.0\info-->und\54f1dec0-8f13-4065-9f45-0e74788142d2.0\info -54f1dec0-8f13-4065-9f45-0e74788142d2.0\text-->ObjectModule.txt +54f1dec0-8f13-4065-9f45-0e74788142d2.0\text-->ObjectModule.bsl 5e00fac5-7796-4854-8e6b-c5933432d814-->und\5e00fac5-7796-4854-8e6b-c5933432d814 5e00fac5-7796-4854-8e6b-c5933432d814.0-->und\5e00fac5-7796-4854-8e6b-c5933432d814.0 624cf4b8-3591-4ce1-9579-6ac683689eb1-->und\624cf4b8-3591-4ce1-9579-6ac683689eb1 diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/103ebd31-7643-4b1a-ba8b-4c789efcb71f.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/103ebd31-7643-4b1a-ba8b-4c789efcb71f.0" index c40e089d..17804df9 100644 --- "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/103ebd31-7643-4b1a-ba8b-4c789efcb71f.0" +++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/103ebd31-7643-4b1a-ba8b-4c789efcb71f.0" @@ -112,7 +112,8 @@ {0, {"B",1},0} },4,"ГруппаМетаданные", -{1,1, +{1,2, +{"en","Metadata"}, {"ru","Метаданные"} }, {1,1, @@ -145,7 +146,7 @@ {12,1,0,2,1, {0}, {1,0}, -{"Pattern"},""},5,77ffcc29-7f2d-4223-b22f-19666e7250ba, +{"Pattern"},""},6,77ffcc29-7f2d-4223-b22f-19666e7250ba, {30, {86,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, @@ -445,6 +446,69 @@ {1,1},0,1},1, {"Pattern"}, {"Pattern"},"","", +{0},0},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{30, +{237,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},3,"ЯзыкПрограммированияАнглийский",1,0, +{1,2, +{"en","Script variant English"}, +{"ru","Язык программирования английский"} +}, +{1,0}, +{2, +{1}, +{0,b860830e-962e-4a6d-8a79-81183973884c} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{3,0, +{0},"",-1,-1,1,0}, +{3,0, +{0},"",-1,-1,1,0}, +{3,4, +{0} +}, +{6,3,0,1}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{6,3,0,1}, +{0,0,0},1, +{7,0, +{3,4, +{0} +}, +{3,4, +{0} +} +}, +{0},1, +{17, +{238,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},8,"ЯзыкПрограммированияАнглийскийContextMenu", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{6,3,0,1}, +{0,0,0},1, +{1,1},0,1},1, +{"Pattern"}, +{"Pattern"},"","", {0},0},1},cd5394d0-7dda-4b56-8927-93ccbe967a01, {17, {78,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, @@ -984,7 +1048,8 @@ hTRe/ovuO95tKLz8/wMIMJTrkeBH9AAAAABJRU5ErkJggg==} {0, {"B",1},0} },4,"ГруппаТаблицаДанных", -{1,1, +{1,2, +{"en","Table of data"}, {"ru","Таблица данных"} }, {1,1, @@ -1593,7 +1658,8 @@ hTRe/ovuO95tKLz8/wMIMJTrkeBH9AAAAABJRU5ErkJggg==} {0, {"B",1},0} },4,"ГруппаПользователиИБ", -{1,1, +{1,2, +{"en","Users of database"}, {"ru","Пользователи ИБ"} }, {1,1, @@ -2955,13 +3021,13 @@ gtGM0J7RgtCx0L7RgDwvbGVmdD4NCgkJCQkJPGNvbXBhcmlzb25UeXBlPkVxdWFs PC9jb21wYXJpc29uVHlwZT4NCgkJCQkJPHJpZ2h0IHhzaTp0eXBlPSJ4czpib29s ZWFuIj50cnVlPC9yaWdodD4NCgkJCQk8L2l0ZW0+DQoJCQk8L2ZpbHRlcj4NCgkJ CTxhcHBlYXJhbmNlPg0KCQkJCTxkY3Njb3I6aXRlbSB4c2k6dHlwZT0iU2V0dGlu -Z3NQYXJhbWV0ZXJWYWx1ZSI+DQoJCQkJCTxkY3Njb3I6cGFyYW1ldGVyPkZvbnQ8 -L2Rjc2NvcjpwYXJhbWV0ZXI+DQoJCQkJCTxkY3Njb3I6dmFsdWUgeHNpOnR5cGU9 -InY4dWk6Rm9udCIgcmVmPSJzeXM6RGVmYXVsdEdVSUZvbnQiIGJvbGQ9InRydWUi -IGl0YWxpYz0iZmFsc2UiIHVuZGVybGluZT0iZmFsc2UiIHN0cmlrZW91dD0iZmFs -c2UiIGtpbmQ9IldpbmRvd3NGb250Ii8+DQoJCQkJPC9kY3Njb3I6aXRlbT4NCgkJ -CTwvYXBwZWFyYW5jZT4NCgkJPC9pdGVtPg0KCTwvY29uZGl0aW9uYWxBcHBlYXJh -bmNlPg0KPC9TZXR0aW5ncz4=} +Z3NQYXJhbWV0ZXJWYWx1ZSI+DQoJCQkJCTxkY3Njb3I6cGFyYW1ldGVyPtCo0YDQ +uNGE0YI8L2Rjc2NvcjpwYXJhbWV0ZXI+DQoJCQkJCTxkY3Njb3I6dmFsdWUgeHNp +OnR5cGU9InY4dWk6Rm9udCIgcmVmPSJzeXM6RGVmYXVsdEdVSUZvbnQiIGJvbGQ9 +InRydWUiIGl0YWxpYz0iZmFsc2UiIHVuZGVybGluZT0iZmFsc2UiIHN0cmlrZW91 +dD0iZmFsc2UiIGtpbmQ9IldpbmRvd3NGb250Ii8+DQoJCQkJPC9kY3Njb3I6aXRl +bT4NCgkJCTwvYXBwZWFyYW5jZT4NCgkJPC9pdGVtPg0KCTwvY29uZGl0aW9uYWxB +cHBlYXJhbmNlPg0KPC9TZXR0aW5ncz4=} }, {0,0}, {0,6, diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/178f7433-f515-4d45-befa-5af52252dd0a.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/178f7433-f515-4d45-befa-5af52252dd0a.0" index cb2bd41b..7b7712a2 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/178f7433-f515-4d45-befa-5af52252dd0a.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/178f7433-f515-4d45-befa-5af52252dd0a.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/39a44593-4b6d-4b66-8cda-2f0e9ea7d454.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/39a44593-4b6d-4b66-8cda-2f0e9ea7d454.0" index c501ffa1..a2d85079 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/39a44593-4b6d-4b66-8cda-2f0e9ea7d454.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/39a44593-4b6d-4b66-8cda-2f0e9ea7d454.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/3bcacc26-7049-41bb-94bc-b45f76986467.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/3bcacc26-7049-41bb-94bc-b45f76986467.0" index 07cf3c80..e3b1961a 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/3bcacc26-7049-41bb-94bc-b45f76986467.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/3bcacc26-7049-41bb-94bc-b45f76986467.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/4b38e3ee-f722-47b8-9c4c-1c4aa073ba10.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/4b38e3ee-f722-47b8-9c4c-1c4aa073ba10.0" index c09e526e..7103e2a1 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/4b38e3ee-f722-47b8-9c4c-1c4aa073ba10.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/4b38e3ee-f722-47b8-9c4c-1c4aa073ba10.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/5e00fac5-7796-4854-8e6b-c5933432d814.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/5e00fac5-7796-4854-8e6b-c5933432d814.0" index d85607b7..65cd33fe 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/5e00fac5-7796-4854-8e6b-c5933432d814.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/5e00fac5-7796-4854-8e6b-c5933432d814.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/624cf4b8-3591-4ce1-9579-6ac683689eb1.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/624cf4b8-3591-4ce1-9579-6ac683689eb1.0" index b2e4486c..d336ef73 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/624cf4b8-3591-4ce1-9579-6ac683689eb1.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/624cf4b8-3591-4ce1-9579-6ac683689eb1.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/6da54382-70f9-4d82-aa91-d001b86297ee.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/6da54382-70f9-4d82-aa91-d001b86297ee.0" index eeb0ec4e..2acccf5a 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/6da54382-70f9-4d82-aa91-d001b86297ee.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/6da54382-70f9-4d82-aa91-d001b86297ee.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/799b41e4-6664-42d1-ba19-2dd1a0822bf6.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/799b41e4-6664-42d1-ba19-2dd1a0822bf6.0" index 09ea6a68..3175e699 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/799b41e4-6664-42d1-ba19-2dd1a0822bf6.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/799b41e4-6664-42d1-ba19-2dd1a0822bf6.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/7b3de063-6588-445c-a318-e989e219f24c.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/7b3de063-6588-445c-a318-e989e219f24c.0" index fdf2c306..25474cbe 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/7b3de063-6588-445c-a318-e989e219f24c.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/7b3de063-6588-445c-a318-e989e219f24c.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7.0" index 8c4b0b35..b55cf66f 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/96508b55-1be0-4dbb-9a9d-a96d9a404282.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/96508b55-1be0-4dbb-9a9d-a96d9a404282.0" index 56c62ef4..d144b13f 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/96508b55-1be0-4dbb-9a9d-a96d9a404282.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/96508b55-1be0-4dbb-9a9d-a96d9a404282.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/96bd1b96-9768-4a45-a972-1a728188f448.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/96bd1b96-9768-4a45-a972-1a728188f448.0" index 5a1b78c5..96360f4a 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/96bd1b96-9768-4a45-a972-1a728188f448.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/96bd1b96-9768-4a45-a972-1a728188f448.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/9bd9901f-46d8-4c40-88b9-f58ac48f0fd0.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/9bd9901f-46d8-4c40-88b9-f58ac48f0fd0.0" index 0824f6b1..70fd669d 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/9bd9901f-46d8-4c40-88b9-f58ac48f0fd0.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/9bd9901f-46d8-4c40-88b9-f58ac48f0fd0.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/9c8d5c50-f21a-4e92-a2df-2a0b5306e991.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/9c8d5c50-f21a-4e92-a2df-2a0b5306e991.0" index 38d92573..db6727d4 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/9c8d5c50-f21a-4e92-a2df-2a0b5306e991.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/9c8d5c50-f21a-4e92-a2df-2a0b5306e991.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/a5b4bbdd-19ca-489b-9dce-60e08daa143f.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/a5b4bbdd-19ca-489b-9dce-60e08daa143f.0" index d7f77d65..11a79161 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/a5b4bbdd-19ca-489b-9dce-60e08daa143f.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/a5b4bbdd-19ca-489b-9dce-60e08daa143f.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/aeaa86b2-a07f-40ef-afd6-1b116e7a37b6.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/aeaa86b2-a07f-40ef-afd6-1b116e7a37b6.0" index 2f68ff63..693f14f9 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/aeaa86b2-a07f-40ef-afd6-1b116e7a37b6.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/aeaa86b2-a07f-40ef-afd6-1b116e7a37b6.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/copyinfo" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/copyinfo" index bd3acfab..610d59f5 100644 --- "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/copyinfo" +++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/copyinfo" @@ -1,5 +1,5 @@ {4, -{30, +{31, {01b3462f-bb96-43d3-862b-e5cbcf9afd55,01b3462f-bb96-43d3-862b-e5cbcf9afd55,1, {d5b0e5ed-256d-401c-9c36-f630cafd8a62,"Форма"} }, @@ -79,6 +79,9 @@ {2bcef0d1-0981-11d6-b9b8-0050bae0a95d,"ПользователиИБ"}, {5d24a9d1-098e-11d6-b9b8-0050bae0a95d,"ПолноеИмя"} }, +{b860830e-962e-4a6d-8a79-81183973884c,b860830e-962e-4a6d-8a79-81183973884c,1, +{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"ВариантВстроенногоЯзыкаАнглийский"} +}, {bcd9f98c-16d2-4a22-b512-f58f24c2c2e2,bcd9f98c-16d2-4a22-b512-f58f24c2c2e2,1, {ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"ДатаОкончания"} }, @@ -111,7 +114,7 @@ {9d3c86e4-fa06-4c20-bca1-6fe80c64060e,54f1dec0-8f13-4065-9f45-0e74788142d2,0}, {e61ef7b8-f3e1-4f4b-8ac7-676e90524997,6eaeb2c4-c358-4c9b-82bf-b779f300f3e5,0} }, -{32, +{33, { {-2},8c4a53bd-2ffc-4f04-a9c8-f69b557900f6, {-2} @@ -193,6 +196,10 @@ {-1} }, { +{0,b860830e-962e-4a6d-8a79-81183973884c},9d3c86e4-fa06-4c20-bca1-6fe80c64060e, +{-1} +}, +{ {0,bcd9f98c-16d2-4a22-b512-f58f24c2c2e2},9d3c86e4-fa06-4c20-bca1-6fe80c64060e, {-1} }, diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/d0ac533a-c210-47e2-94e1-6d5329bcc033" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/d0ac533a-c210-47e2-94e1-6d5329bcc033" index ab33ed28..4555ac4e 100644 --- "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/d0ac533a-c210-47e2-94e1-6d5329bcc033" +++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/d0ac533a-c210-47e2-94e1-6d5329bcc033" @@ -212,13 +212,14 @@ {1, {1,1, {-3},510405d3-2a0c-4fea-960a-7fee59b32f9b, -{8,21,1183c14f-f814-49c6-9233-a3c26b3f64cf, +{8,23,1183c14f-f814-49c6-9233-a3c26b3f64cf, {"#",9ad557b1-249e-48dc-824b-3e149ecf10a6, {3,0,0} },2723eb98-b4c1-498a-a6f3-70444757902f, {"#",98ea8e5a-b586-442b-b944-6e3447734aa7,0},2bbba66b-fabf-4863-8ba3-54b3c64c896e, {"B",0},2c8143d5-4248-4c43-8bfb-307c0be2e415, -{"B",0},3eaf5a8b-06d6-47b0-ac7d-a9698247f499, +{"B",0},33c74a4d-561f-4bc0-9eaa-8d21c893c0a9, +{"U"},3eaf5a8b-06d6-47b0-ac7d-a9698247f499, {"U"},4690ff70-e3fa-4914-9127-6a9acc5fc949, {"#",87024738-fc2a-4436-ada1-df79d395c424, {0} @@ -232,7 +233,8 @@ },6e3a1131-37a3-4da5-8895-572d9d0c9db6, {"#",ace3fd07-11b2-477e-ab7f-36f0ea37c8dd, {ace3fd07-11b2-477e-ab7f-36f0ea37c8dd,2} -},88149a78-9448-4767-867b-0e650d165d2e, +},7ba608f2-e654-42a3-8885-334fe88ca910, +{"U"},88149a78-9448-4767-867b-0e650d165d2e, {"#",87024738-fc2a-4436-ada1-df79d395c424, {0} },90ae4b5d-e0fd-49ef-a008-d67c1e75038c, @@ -269,7 +271,7 @@ {0,0,125e5b0a-0bc6-45cb-a336-cb6a4d287136},"Имя", {1,"ru","Имя"},""}, {"Pattern", -{"S",10,1} +{"S",100,1} } },0, {0}, @@ -290,7 +292,7 @@ {0,0,8f38c53d-a655-4374-ad31-85648b2548a3},"ПолноеИмя", {1,"ru","Полное имя"},""}, {"Pattern", -{"S",10,1} +{"S",255,1} } },0, {0}, @@ -392,7 +394,7 @@ }, {3daea016-69b7-4ed4-9453-127911372fe6,19,efa2b5fc-de31-4695-a81b-8acc1a24d8f8,f930823a-837f-43ad-9791-02742bdf3c7a,3bcacc26-7049-41bb-94bc-b45f76986467,7b3de063-6588-445c-a318-e989e219f24c,9c8d5c50-f21a-4e92-a2df-2a0b5306e991,aeaa86b2-a07f-40ef-afd6-1b116e7a37b6,9bd9901f-46d8-4c40-88b9-f58ac48f0fd0,5e00fac5-7796-4854-8e6b-c5933432d814,a5b4bbdd-19ca-489b-9dce-60e08daa143f,624cf4b8-3591-4ce1-9579-6ac683689eb1,96bd1b96-9768-4a45-a972-1a728188f448,96508b55-1be0-4dbb-9a9d-a96d9a404282,4b38e3ee-f722-47b8-9c4c-1c4aa073ba10,6da54382-70f9-4d82-aa91-d001b86297ee,f04e1194-a196-4a4b-b797-7ece45ac1872,178f7433-f515-4d45-befa-5af52252dd0a,799b41e4-6664-42d1-ba19-2dd1a0822bf6,39a44593-4b6d-4b66-8cda-2f0e9ea7d454,7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7}, {d5b0e5ed-256d-401c-9c36-f630cafd8a62,2,103ebd31-7643-4b1a-ba8b-4c789efcb71f,01b3462f-bb96-43d3-862b-e5cbcf9afd55}, -{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,15, +{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,16, { {0, {25, @@ -703,6 +705,27 @@ {0,0},0, {0}, {"S",""},0} +},0}, +{ +{0, +{25, +{2, +{0, +{0,0,b860830e-962e-4a6d-8a79-81183973884c},"ВариантВстроенногоЯзыкаАнглийский", +{2,"en","Script Variant English","ru","Вариант встроенного языка английский"},""}, +{"Pattern", +{"B"} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0} },0} } } diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/efa2b5fc-de31-4695-a81b-8acc1a24d8f8.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/efa2b5fc-de31-4695-a81b-8acc1a24d8f8.0" index eb1b4668..56a5b209 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/efa2b5fc-de31-4695-a81b-8acc1a24d8f8.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/efa2b5fc-de31-4695-a81b-8acc1a24d8f8.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/f04e1194-a196-4a4b-b797-7ece45ac1872.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/f04e1194-a196-4a4b-b797-7ece45ac1872.0" index 44b17e36..82d00457 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/f04e1194-a196-4a4b-b797-7ece45ac1872.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/f04e1194-a196-4a4b-b797-7ece45ac1872.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/f930823a-837f-43ad-9791-02742bdf3c7a.0" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/f930823a-837f-43ad-9791-02742bdf3c7a.0" index e09585e6..46e230e9 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/f930823a-837f-43ad-9791-02742bdf3c7a.0" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/f930823a-837f-43ad-9791-02742bdf3c7a.0" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/versions" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/versions" index 4870053b..7edced2e 100644 --- "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/versions" +++ "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/und/versions" @@ -1 +1 @@ -{1,49,"",ac09c074-a41d-4b61-8962-02f9d84cb1d7,"624cf4b8-3591-4ce1-9579-6ac683689eb1.0",3ff1f5c2-c115-4936-868c-edcd9a3dc088,"f930823a-837f-43ad-9791-02742bdf3c7a",d9c5b796-a3d4-4c20-996e-79f90fe02fda,"5e00fac5-7796-4854-8e6b-c5933432d814",18090454-a98c-4274-bf39-683c1d3f47ca,"01b3462f-bb96-43d3-862b-e5cbcf9afd55",b1459b34-9b6b-47f7-b21d-7f06168ff7ef,"39a44593-4b6d-4b66-8cda-2f0e9ea7d454",618976f9-4a8f-480b-9310-a303aab8e2b0,"a5b4bbdd-19ca-489b-9dce-60e08daa143f.0",9fe48387-8081-4e9d-89c6-d1bb1af0e6ac,"96bd1b96-9768-4a45-a972-1a728188f448.0",82ae4a2c-5976-4bdf-8c82-3a89767c0fbc,"f04e1194-a196-4a4b-b797-7ece45ac1872.0",5d6b679b-aa8a-4933-bb82-66adb92b6c55,"copyinfo",271e77c8-e7d2-4c94-bfe4-cbf35d6779cd,"4b38e3ee-f722-47b8-9c4c-1c4aa073ba10",3ce6f81e-5a94-480b-873a-3434fe23f291,"799b41e4-6664-42d1-ba19-2dd1a0822bf6.0",32f4cacb-ba50-4f4a-ae21-0f949298a080,"178f7433-f515-4d45-befa-5af52252dd0a",9cba41ee-3c2f-45b2-a56e-e2903eef5401,"aeaa86b2-a07f-40ef-afd6-1b116e7a37b6.0",8ef67a25-f272-4d6f-9e30-98596e6a7288,"178f7433-f515-4d45-befa-5af52252dd0a.0",d17364ad-ad66-49ce-b9d9-31ccc9b069e2,"d0ac533a-c210-47e2-94e1-6d5329bcc033",3ac2ce19-1b6b-4f81-b743-8f42047e45c5,"01b3462f-bb96-43d3-862b-e5cbcf9afd55.0",812aa4f6-2a66-467c-a8b1-9dc99e88e484,"103ebd31-7643-4b1a-ba8b-4c789efcb71f",45332a4a-c57d-421a-8fd1-5fefaa54623f,"5e00fac5-7796-4854-8e6b-c5933432d814.0",b1bbe111-c194-45ca-b4ab-be0b45c32c72,"96508b55-1be0-4dbb-9a9d-a96d9a404282.0",64ff139c-eaba-43c5-b3f3-94991832dbf2,"9bd9901f-46d8-4c40-88b9-f58ac48f0fd0",808986e0-484d-413a-81ef-82f2db1c9a7d,"9bd9901f-46d8-4c40-88b9-f58ac48f0fd0.0",63f4571f-16ed-408d-a8c7-b4bf0ad09a14,"efa2b5fc-de31-4695-a81b-8acc1a24d8f8.0",4f39e80c-1afa-4ac7-88be-693c5cb913eb,"6da54382-70f9-4d82-aa91-d001b86297ee.0",12a51877-e2e5-46d0-ab6f-1eb2131d5e69,"aeaa86b2-a07f-40ef-afd6-1b116e7a37b6",c744dd72-e854-4ac5-b4ad-077df4881b77,"624cf4b8-3591-4ce1-9579-6ac683689eb1",6945d0db-dfee-43ff-996d-7f911cd80b33,"4b38e3ee-f722-47b8-9c4c-1c4aa073ba10.0",fbeff146-1486-47ad-9abb-2b38f6caff61,"96bd1b96-9768-4a45-a972-1a728188f448",11c1eb14-5254-4703-962b-9c5df8661d5f,"a5b4bbdd-19ca-489b-9dce-60e08daa143f",19851ba1-b130-412b-bd55-d3e77f747c35,"3bcacc26-7049-41bb-94bc-b45f76986467",606d747e-c85b-47e4-b522-f4022ad1ffdc,"f930823a-837f-43ad-9791-02742bdf3c7a.0",b075e461-1d2d-436e-a3db-89601c345085,"root",56db60ef-7837-43eb-867e-5d886b08a2d8,"version",c5dedc7e-ec1f-4efb-b14a-d840fe0cd29d,"799b41e4-6664-42d1-ba19-2dd1a0822bf6",c7222314-fc29-4419-b556-cb9f9022bc66,"versions",37a2334a-7f31-43db-aaae-e342875b15a9,"103ebd31-7643-4b1a-ba8b-4c789efcb71f.0",0888d999-fd3d-43a5-90e5-bda21c314065,"54f1dec0-8f13-4065-9f45-0e74788142d2.0",03590e1d-4342-40b8-8d30-0ddfa99c678f,"6da54382-70f9-4d82-aa91-d001b86297ee",82e74a70-4045-4a06-aa7d-78c365fc3bec,"efa2b5fc-de31-4695-a81b-8acc1a24d8f8",57b3262f-c18d-45ed-acfe-d98d3746d0b4,"7b3de063-6588-445c-a318-e989e219f24c",43f8644e-c3c2-4788-8d66-f5d7e810c0bd,"7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7.0",b1491538-75d0-44cd-9383-d4a6ea7a6fd5,"7b3de063-6588-445c-a318-e989e219f24c.0",567de72c-5c1b-4596-b4df-d9a574cf6565,"3bcacc26-7049-41bb-94bc-b45f76986467.0",8c8a41ac-1acb-4e56-9929-b4d86293074b,"9c8d5c50-f21a-4e92-a2df-2a0b5306e991",71428947-5232-4d94-85cc-1437e4de5a88,"96508b55-1be0-4dbb-9a9d-a96d9a404282",d1c43eab-4a02-47c7-af00-dfff664db03f,"9c8d5c50-f21a-4e92-a2df-2a0b5306e991.0",da0f53c2-1737-44b2-b89c-181c1775afc7,"7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7",e1a61d34-d410-43d5-9aeb-f84f11c24621,"39a44593-4b6d-4b66-8cda-2f0e9ea7d454.0",f91c1ac5-7d68-4533-afcf-60b25c8551ca,"f04e1194-a196-4a4b-b797-7ece45ac1872",e8761804-f48b-45ca-b851-9d70450418cf} \ No newline at end of file +{1,49,"",62571f59-cbaa-4935-917c-1c8d0ea9225a,"624cf4b8-3591-4ce1-9579-6ac683689eb1.0",90929fb9-d117-429f-ad72-c79bdc5ba629,"f930823a-837f-43ad-9791-02742bdf3c7a",e9c2cb9f-2b48-4eb9-aa51-9a719b79227a,"5e00fac5-7796-4854-8e6b-c5933432d814",2fa66924-0e8d-4e41-af2e-d6b769d7f969,"01b3462f-bb96-43d3-862b-e5cbcf9afd55",83eec688-8039-4f5f-8172-6453e26de42a,"39a44593-4b6d-4b66-8cda-2f0e9ea7d454",d5c62718-4052-4017-a3da-33fa92230591,"96bd1b96-9768-4a45-a972-1a728188f448.0",2e039425-fbee-472f-902d-412a9e5db305,"a5b4bbdd-19ca-489b-9dce-60e08daa143f.0",8f109624-88fb-4a58-8503-6997173f5667,"f04e1194-a196-4a4b-b797-7ece45ac1872.0",93a897ae-45d2-4586-b4b8-61805872f4bd,"copyinfo",5edfd4d1-9c2a-45b5-8268-dab3d16724eb,"4b38e3ee-f722-47b8-9c4c-1c4aa073ba10",2aa91801-6c65-4b62-aa74-00007e4fd62a,"799b41e4-6664-42d1-ba19-2dd1a0822bf6.0",3d0d6a50-c75f-4e74-a6ab-c2cdf8c19376,"178f7433-f515-4d45-befa-5af52252dd0a",5bc67487-09a9-47e1-b0ee-582fd6a7513f,"aeaa86b2-a07f-40ef-afd6-1b116e7a37b6.0",8f78c2a5-4a13-4588-9be8-e3406356891c,"178f7433-f515-4d45-befa-5af52252dd0a.0",fc321217-7966-43f9-942d-80ffc6a59966,"01b3462f-bb96-43d3-862b-e5cbcf9afd55.0",fe927392-5c37-4ffc-a448-9bbc83c483ce,"d0ac533a-c210-47e2-94e1-6d5329bcc033",c934cd96-c24e-4d1e-8137-747c6cffd21c,"103ebd31-7643-4b1a-ba8b-4c789efcb71f",03830908-2e5d-4f3a-b813-688b28d491c8,"5e00fac5-7796-4854-8e6b-c5933432d814.0",cde3a190-3959-46be-bba3-f285c4ef58cd,"96508b55-1be0-4dbb-9a9d-a96d9a404282.0",1bae13f8-7cb9-44c0-93bc-a1e6aba3b81d,"9bd9901f-46d8-4c40-88b9-f58ac48f0fd0",666a6a6b-099d-4df2-8587-9e95545f56ef,"9bd9901f-46d8-4c40-88b9-f58ac48f0fd0.0",38c71857-382a-429a-948b-952b05841510,"6da54382-70f9-4d82-aa91-d001b86297ee.0",c27b278c-7983-4de9-af21-e8361f016093,"efa2b5fc-de31-4695-a81b-8acc1a24d8f8.0",5e2b093f-1b91-4e88-9b9a-a649270ebb72,"aeaa86b2-a07f-40ef-afd6-1b116e7a37b6",a30b17f9-a676-4a6d-b8c7-523be88ef17e,"624cf4b8-3591-4ce1-9579-6ac683689eb1",cf0daead-5da7-44ba-97a5-2d99b347ff64,"4b38e3ee-f722-47b8-9c4c-1c4aa073ba10.0",e366f53d-abb8-4867-8e37-e6b5d56d0d4d,"a5b4bbdd-19ca-489b-9dce-60e08daa143f",2fa9b25d-43a1-4f51-b370-d95a04b12c02,"96bd1b96-9768-4a45-a972-1a728188f448",af28a6eb-4390-4e10-bb22-eb53e0f955cc,"3bcacc26-7049-41bb-94bc-b45f76986467",2c454165-08bb-4422-87a5-61eca47b3592,"version",2c4d28a7-7f45-430b-9360-1cc4361518b8,"root",3ab3f3cc-bbeb-4060-9d38-3df1a885dd82,"f930823a-837f-43ad-9791-02742bdf3c7a.0",0dfaa483-075c-4cd2-95fe-508b3d8ab740,"799b41e4-6664-42d1-ba19-2dd1a0822bf6",797f8123-352b-4990-bf01-66bdc101648c,"versions",197b873d-f757-45c6-be28-86813c96ee3c,"103ebd31-7643-4b1a-ba8b-4c789efcb71f.0",e2ad685d-3ea5-4024-a72e-63232129ac51,"54f1dec0-8f13-4065-9f45-0e74788142d2.0",b0a110c4-192a-4c1c-9d97-302ccce4d819,"6da54382-70f9-4d82-aa91-d001b86297ee",1de35b2e-3932-431a-b89e-a51f8ec9b1c4,"efa2b5fc-de31-4695-a81b-8acc1a24d8f8",296bab4b-b5cb-4708-bf12-7e9ec8719560,"7b3de063-6588-445c-a318-e989e219f24c",8491d29d-2018-47de-a968-18c6ddc066f8,"7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7.0",3db117bd-bbed-4c46-bc4f-5bdfd2839b4c,"7b3de063-6588-445c-a318-e989e219f24c.0",6af485f4-4c70-4cc1-a074-527169c686f8,"3bcacc26-7049-41bb-94bc-b45f76986467.0",38e22362-aba0-47a5-9dc2-7c3666dc7bfe,"9c8d5c50-f21a-4e92-a2df-2a0b5306e991",93c90c74-44ca-437e-b56b-ad4c18cdde37,"96508b55-1be0-4dbb-9a9d-a96d9a404282",8400ebbf-0da7-4617-af8a-410bc030cc16,"9c8d5c50-f21a-4e92-a2df-2a0b5306e991.0",76daac7f-a483-4189-975e-a02d00884eeb,"7ce6ce19-d0d0-4f0d-96c4-74d9b6238df7",2292f293-6b14-4588-b753-b2f07d052ef1,"39a44593-4b6d-4b66-8cda-2f0e9ea7d454.0",6285731b-c197-4193-a422-dc6b1c2a6126,"f04e1194-a196-4a4b-b797-7ece45ac1872",015e5479-c58c-4cd6-beaf-c9caba7280d6} \ No newline at end of file diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mxl" index d7f77d65..11a79161 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mxl" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\270.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\270.mxl" index cb2bd41b..7b7712a2 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\270.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\270.mxl" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217.mxl" index eeb0ec4e..2acccf5a 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217.mxl" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.mxl" index 07cf3c80..e3b1961a 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.mxl" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270.mxl" index d85607b7..65cd33fe 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270.mxl" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\274\320\270\320\247\320\260\321\201\321\202\321\217\320\274\320\270.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\274\320\270\320\247\320\260\321\201\321\202\321\217\320\274\320\270.mxl" index 09ea6a68..3175e699 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\274\320\270\320\247\320\260\321\201\321\202\321\217\320\274\320\270.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\274\320\270\320\247\320\260\321\201\321\202\321\217\320\274\320\270.mxl" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\260\320\236\320\261\320\274\320\265\320\275\320\260.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\260\320\236\320\261\320\274\320\265\320\275\320\260.mxl" index c501ffa1..a2d85079 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\260\320\236\320\261\320\274\320\265\320\275\320\260.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\243\320\267\320\273\320\276\320\262\320\237\320\273\320\260\320\275\320\260\320\236\320\261\320\274\320\265\320\275\320\260.mxl" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\265\321\201\320\272\320\276\320\273\321\214\320\272\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\230\320\221.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\265\321\201\320\272\320\276\320\273\321\214\320\272\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\230\320\221.mxl" index 8c4b0b35..b55cf66f 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\265\321\201\320\272\320\276\320\273\321\214\320\272\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\230\320\221.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\235\320\265\321\201\320\272\320\276\320\273\321\214\320\272\320\270\321\205\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\265\320\271\320\230\320\221.mxl" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\241\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\320\274\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\242\320\270\320\277\320\260\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\241\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\320\274\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\242\320\270\320\277\320\260\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265.mxl" index 2f68ff63..693f14f9 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\241\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\320\274\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\242\320\270\320\277\320\260\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\241\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\320\274\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\242\320\270\320\277\320\260\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265.mxl" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl" index b2e4486c..d336ef73 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl" index eb1b4668..56a5b209 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\237\321\200\320\265\320\264\321\201\321\202\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\235\320\265\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\237\321\200\320\265\320\264\321\201\321\202\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\235\320\265\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200.mxl" index e09585e6..46e230e9 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\237\321\200\320\265\320\264\321\201\321\202\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\235\320\265\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\237\321\200\320\265\320\264\321\201\321\202\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\235\320\265\320\230\320\264\320\265\320\275\321\202\320\270\321\204\320\270\320\272\320\260\321\202\320\276\321\200.mxl" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.mxl" index fdf2c306..25474cbe 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262.mxl" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\222\320\223\321\200\321\203\320\277\320\277\320\265.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\222\320\223\321\200\321\203\320\277\320\277\320\265.mxl" index 5a1b78c5..96360f4a 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\222\320\223\321\200\321\203\320\277\320\277\320\265.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\222\320\223\321\200\321\203\320\277\320\277\320\265.mxl" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270.mxl" index 0824f6b1..70fd669d 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270.mxl" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\321\203\321\201\321\202\320\276\320\271\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\321\203\321\201\321\202\320\276\320\271\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260.mxl" index 44b17e36..82d00457 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\321\203\321\201\321\202\320\276\320\271\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\321\203\321\201\321\202\320\276\320\271\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260.mxl" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\321\201\321\213\320\273\320\272\320\260_\320\240\320\265\320\266\320\270\320\274\320\237\320\276\320\270\321\201\320\272\320\260\320\232\320\276\320\264.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\321\201\321\213\320\273\320\272\320\260_\320\240\320\265\320\266\320\270\320\274\320\237\320\276\320\270\321\201\320\272\320\260\320\232\320\276\320\264.mxl" index 38d92573..db6727d4 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\321\201\321\213\320\273\320\272\320\260_\320\240\320\265\320\266\320\270\320\274\320\237\320\276\320\270\321\201\320\272\320\260\320\232\320\276\320\264.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\321\201\321\213\320\273\320\272\320\260_\320\240\320\265\320\266\320\270\320\274\320\237\320\276\320\270\321\201\320\272\320\260\320\232\320\276\320\264.mxl" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mxl" index 56c62ef4..d144b13f 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271.mxl" differ diff --git "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl" "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl" index c09e526e..7103e2a1 100644 Binary files "a/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl" and "b/src/Plugins/\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275\320\234\320\260\320\272\320\265\321\202\320\260\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260.mxl" differ diff --git "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" similarity index 99% rename from "src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" rename to "src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" index bd58efb3..b8115f77 100644 --- "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -1031,16 +1031,18 @@ Для Каждого ЧастьСтроки Из СтрокиСоСсылками Цикл Если ЧастьСтроки.Пометка Тогда - МассивСтроки.Добавить(Новый ФорматированнаяСтрока(ЧастьСтроки.Значение, Новый Шрифт(,,Истина))); + Выполнить("МассивСтроки.Добавить(Новый ФорматированнаяСтрока(ЧастьСтроки.Значение, Новый Шрифт(,,Истина)));"); ИначеЕсли Не ПустаяСтрока(ЧастьСтроки.Представление) Тогда - МассивСтроки.Добавить(Новый ФорматированнаяСтрока(ЧастьСтроки.Значение,,,, ЧастьСтроки.Представление)); + Выполнить("МассивСтроки.Добавить(Новый ФорматированнаяСтрока(ЧастьСтроки.Значение,,,, ЧастьСтроки.Представление));"); Иначе МассивСтроки.Добавить(ЧастьСтроки.Значение); КонецЕсли; КонецЦикла; - Возврат Новый ФорматированнаяСтрока(МассивСтроки); + Рез = Неопределено; + Выполнить("Рез = Новый ФорматированнаяСтрока(МассивСтроки);"); + Возврат Рез; КонецФункции diff --git "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.txt" "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.bsl" similarity index 99% rename from "src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.txt" rename to "src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.bsl" index faa5a281..9fa2ab21 100644 --- "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.txt" +++ "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.bsl" @@ -1009,16 +1009,18 @@ Для Каждого ЧастьСтроки Из СтрокиСоСсылками Цикл Если ЧастьСтроки.Пометка Тогда - МассивСтроки.Добавить(Новый ФорматированнаяСтрока(ЧастьСтроки.Значение, Новый Шрифт(,,Истина))); + Выполнить("МассивСтроки.Добавить(Новый ФорматированнаяСтрока(ЧастьСтроки.Значение, Новый Шрифт(,,Истина)));"); ИначеЕсли Не ПустаяСтрока(ЧастьСтроки.Представление) Тогда - МассивСтроки.Добавить(Новый ФорматированнаяСтрока(ЧастьСтроки.Значение,,,, ЧастьСтроки.Представление)); + Выполнить("МассивСтроки.Добавить(Новый ФорматированнаяСтрока(ЧастьСтроки.Значение,,,, ЧастьСтроки.Представление));"); Иначе МассивСтроки.Добавить(ЧастьСтроки.Значение); КонецЕсли; КонецЦикла; - Возврат Новый ФорматированнаяСтрока(МассивСтроки); + Рез = Неопределено; + Выполнить("Рез = Новый ФорматированнаяСтрока(МассивСтроки);"); + Возврат Рез; КонецФункции diff --git "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/maps.txt" "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/maps.txt" new file mode 100644 index 00000000..a775f08f --- /dev/null +++ "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/maps.txt" @@ -0,0 +1 @@ +Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 1 303) diff --git "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/renames.txt" "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/renames.txt" index b9253ef1..f90a2039 100644 --- "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/renames.txt" +++ "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/renames.txt" @@ -1,10 +1,8 @@ 11c5f751-bfaf-480a-92fe-7f30023f2e9a-->und\11c5f751-bfaf-480a-92fe-7f30023f2e9a 4e8e1a4a-a947-419b-95c8-58a411e3ffa4-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4 -4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->Form\Форма\Форма.txt -4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info-->und\908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info -908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.txt +908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.bsl copyinfo-->und\copyinfo root-->und\root version-->und\version diff --git "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" index 03187a6c..33571be4 100644 --- "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" +++ "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/11c5f751-bfaf-480a-92fe-7f30023f2e9a" @@ -4,9 +4,9 @@ {1, {4,85629dd2-6be4-49c6-9a69-13411102aa57,3fdd55c8-e92e-4f99-8b28-3ba8957b50ab, {0, -{1, +{0, {0,0,908d0aaf-e4ec-4668-8d14-3e8075d222fd},"СтроковыеУтилиты", -{1,"ru","Строковые утилиты"},"",0,0} +{1,"ru","Строковые утилиты"},""} },4e8e1a4a-a947-419b-95c8-58a411e3ffa4,"",00000000-0000-0000-0000-000000000000},4, {2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, {3daea016-69b7-4ed4-9453-127911372fe6,0}, diff --git "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" index 554d4f73..e9f6cd91 100644 --- "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" +++ "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4" @@ -1,15 +1,10 @@ {1, {1, {0, -{12, -{1, +{9, +{0, {0,0,4e8e1a4a-a947-419b-95c8-58a411e3ffa4},"Форма", -{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1, -{2, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} -} -}, +{1,"ru","Форма"},""},0,1}, {0} } },0} \ No newline at end of file diff --git "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" index ab3661d1..4fd57611 100644 --- "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" +++ "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0" @@ -1,9 +1,9 @@ -{3, -{42,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, +{2, +{28,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, {1,0},0,0,1,1,1,0,1,0, -{0,0,0}, +{0}, {0},1, -{21, +{17, {-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -14,40 +14,19 @@ {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{0,0,1},0,1,0,0,0,3,3},0,"","",1, -{21, +{0,0,1},0,1},0,"","",1, +{17, {0},0,0,0,7,"Navigator", {1,0}, {1,0},0,1,0,0,0,2,2, {3,4, {0} }, -{7,3,0,1,100}, -{0,0,0},0,0,1,0,1, -{10, -{0},0,0,0,0,"NavigatorExtendedTooltip", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,0,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,"",0,0,0,0,0,0,3,3,0,0,0}," +{6,3,0,1}, +{0,0,0},0,0,1} +}," // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт @@ -1080,16 +1059,18 @@ Для Каждого ЧастьСтроки Из СтрокиСоСсылками Цикл Если ЧастьСтроки.Пометка Тогда - МассивСтроки.Добавить(Новый ФорматированнаяСтрока(ЧастьСтроки.Значение, Новый Шрифт(,,Истина))); + Выполнить(""МассивСтроки.Добавить(Новый ФорматированнаяСтрока(ЧастьСтроки.Значение, Новый Шрифт(,,Истина)));""); ИначеЕсли Не ПустаяСтрока(ЧастьСтроки.Представление) Тогда - МассивСтроки.Добавить(Новый ФорматированнаяСтрока(ЧастьСтроки.Значение,,,, ЧастьСтроки.Представление)); + Выполнить(""МассивСтроки.Добавить(Новый ФорматированнаяСтрока(ЧастьСтроки.Значение,,,, ЧастьСтроки.Представление));""); Иначе МассивСтроки.Добавить(ЧастьСтроки.Значение); КонецЕсли; КонецЦикла; - Возврат Новый ФорматированнаяСтрока(МассивСтроки); + Рез = Неопределено; + Выполнить(""Рез = Новый ФорматированнаяСтрока(МассивСтроки);""); + Возврат Рез; КонецФункции @@ -1356,4 +1337,5 @@ L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} {0,0}, {0,0}, {0,0}, -{0,0},0,0} \ No newline at end of file +{0,0} +} \ No newline at end of file diff --git "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/versions" "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/versions" index 2fd96752..52319eca 100644 --- "a/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/versions" +++ "b/src/Plugins/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/versions" @@ -1 +1 @@ -{1,9,"",2bb85aa2-b9d6-442a-b041-af4070bcce8e,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",0b6fa390-54a7-4fa6-b65a-5022ed87963a,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",f8cffbbe-4b42-4791-97d4-69cd541cd25a,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",9f9ce21f-a341-4e8a-8a45-8ff147e5e135,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",db32dfb4-fff0-4b09-b130-9492c37d89e0,"copyinfo",8c513a87-62ad-4170-9f0c-30136484c90c,"root",58246038-cadc-4423-9568-798e1b1f1dab,"version",4248fa2d-bfe5-4676-8cf4-5600f33bf57a,"versions",43498145-0ad9-48f5-8c95-2f6f459ce857} \ No newline at end of file +{1,9,"",3ebcaa72-61c4-46de-8266-b33c509cf050,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4",8df57634-d49d-45a7-875a-319f0f968671,"versions",c4ebc6a3-5a5d-4427-9ba3-13c1488d9be6,"4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0",53363859-01be-436b-83db-802203b8954e,"root",cd3cad6d-3c2c-41b2-990c-9921028dd36c,"908d0aaf-e4ec-4668-8d14-3e8075d222fd.0",07a248e5-efdd-400b-902c-81db9729a488,"11c5f751-bfaf-480a-92fe-7f30023f2e9a",c22a57d4-972d-41d2-a07d-9b67fc7fe247,"version",75ada833-6944-48f6-ad28-1eba3858c509,"copyinfo",bd85c7cc-b28b-4937-84b0-c0a761819569} \ No newline at end of file diff --git "a/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..e66f6773 --- /dev/null +++ "b/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,208 @@ + +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +&НаКлиенте +Функция Что(Знач ПроверяемоеЗначениеПараметр, Знач Сообщение = "") Экспорт + ВыполнитьМетодОбъектаНаСервере("Что", 2, ПроверяемоеЗначениеПараметр, Сообщение); + + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция Не_() Экспорт + ВыполнитьМетодОбъектаНаСервере("Не_", 0); + + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция ЭтоНе() Экспорт + Возврат Не_(); +КонецФункции + +&НаКлиенте +Функция Метод(Знач ИмяМетода, Знач ПараметрыМетода = Неопределено) Экспорт + ВыполнитьМетодОбъектаНаСервере("Метод", 2, ИмяМетода, ПараметрыМетода); + + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция ЭтоИстина() Экспорт + ВыполнитьМетодОбъектаНаСервере("ЭтоИстина", 0); + + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция ЕстьИстина() Экспорт + Возврат ЭтоИстина(); +КонецФункции + +&НаКлиенте +Функция ЭтоЛожь() Экспорт + ВыполнитьМетодОбъектаНаСервере("ЭтоЛожь", 0); + + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция ЕстьЛожь() Экспорт + Возврат ЭтоЛожь(); +КонецФункции + +&НаКлиенте +Функция Равно(Знач ОжидаемоеЗначение) Экспорт + ВыполнитьМетодОбъектаНаСервере("Равно", 1, ОжидаемоеЗначение); + + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция Больше(Знач МеньшееЗначение) Экспорт + ВыполнитьМетодОбъектаНаСервере("Больше", 1, МеньшееЗначение); + + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция БольшеИлиРавно(Знач МеньшееИлиРавноеЗначение) Экспорт + ВыполнитьМетодОбъектаНаСервере("БольшеИлиРавно", 1, МеньшееИлиРавноеЗначение); + + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция Минимум(Знач МинимальноеЗначение) Экспорт + Возврат БольшеИлиРавно(МинимальноеЗначение); +КонецФункции + +&НаКлиенте +Функция МеньшеИлиРавно(Знач БольшееИлиРавноеЗначение) Экспорт + ВыполнитьМетодОбъектаНаСервере("МеньшеИлиРавно", 1, БольшееИлиРавноеЗначение); + + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция Максимум(Знач МаксимальноеЗначение) Экспорт + Возврат МеньшеИлиРавно(МаксимальноеЗначение); +КонецФункции + +&НаКлиенте +Функция Меньше(Знач БольшееЗначение) Экспорт + ВыполнитьМетодОбъектаНаСервере("Меньше", 1, БольшееЗначение); + + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция Заполнено() Экспорт + ВыполнитьМетодОбъектаНаСервере("Заполнено", 0); + + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция Существует() Экспорт + ВыполнитьМетодОбъектаНаСервере("Существует", 0); + + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция ЭтоНеопределено() Экспорт + ВыполнитьМетодОбъектаНаСервере("ЭтоНеопределено", 0); + + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция ЕстьНеопределено() Экспорт + Возврат ЭтоНеопределено(); +КонецФункции + +&НаКлиенте +Функция ЭтоNull() Экспорт + ВыполнитьМетодОбъектаНаСервере("ЭтоNull", 0); + + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция ЕстьNull() Экспорт + Возврат ЭтоNull(); +КонецФункции + +&НаКлиенте +Функция ИмеетТип(Знач ТипИлиИмяТипа) Экспорт + ВыполнитьМетодОбъектаНаСервере("ИмеетТип", 1, ТипИлиИмяТипа); + + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция Между(Знач НачальноеЗначение, Знач КонечноеЗначение) Экспорт + ВыполнитьМетодОбъектаНаСервере("Между", 2, НачальноеЗначение, КонечноеЗначение); + + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция Содержит(Знач ИскомоеЗначение) Экспорт + ВыполнитьМетодОбъектаНаСервере("Содержит", 1, ИскомоеЗначение); + + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция ИмеетДлину(Знач ОжидаемаяДлина) Экспорт + ВыполнитьМетодОбъектаНаСервере("ИмеетДлину", 1, ОжидаемаяДлина); + + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция ВыбрасываетИсключение(Знач ФрагментИсключения = "") Экспорт + ВыполнитьМетодОбъектаНаСервере("ВыбрасываетИсключение", 1, ФрагментИсключения); + + Возврат ЭтаФорма; +КонецФункции + +// { Helpers +&НаСервере +Процедура ВыполнитьМетодОбъектаНаСервере(Знач ИмяМетода, Знач КоличествоПараметров, Знач Параметр1 = Неопределено, Знач Параметр2 = Неопределено) + ОбъектНаСервере = ЭтотОбъектНаСервере(); + + СтрокаПараметры = ""; + Если КоличествоПараметров = 1 Тогда + СтрокаПараметры = "Параметр1"; + ИначеЕсли КоличествоПараметров = 2 Тогда + СтрокаПараметры = "Параметр1, Параметр2"; + КонецЕсли; + + Попытка + Выполнить("ОбъектНаСервере." + ИмяМетода + "(" + СтрокаПараметры + ")"); + Исключение + ОписаниеОшибки = ОписаниеОшибки(); + ВызватьИсключение "Вызов метода <" + ИмяМетода +">: " + ОписаниеОшибки; + КонецПопытки; + + ЗначениеВРеквизитФормы(ОбъектНаСервере, "Объект"); +КонецПроцедуры + +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции +// } Helpers diff --git "a/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index a64f6841..00000000 --- "a/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ - // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); КонецФункции // } Plugin interface &НаКлиенте Функция Что(Знач ПроверяемоеЗначениеПараметр, Знач Сообщение = "") Экспорт ВыполнитьМетодОбъектаНаСервере("Что", 2, ПроверяемоеЗначениеПараметр, Сообщение); Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция Не_() Экспорт ВыполнитьМетодОбъектаНаСервере("Не_", 0); Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция ЭтоНе() Экспорт Возврат Не_(); КонецФункции &НаКлиенте Функция Метод(Знач ИмяМетода, Знач ПараметрыМетода = Неопределено) Экспорт ВыполнитьМетодОбъектаНаСервере("Метод", 2, ИмяМетода, ПараметрыМетода); Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция ЭтоИстина() Экспорт ВыполнитьМетодОбъектаНаСервере("ЭтоИстина", 0); Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция ЕстьИстина() Экспорт Возврат ЭтоИстина(); КонецФункции &НаКлиенте Функция ЭтоЛожь() Экспорт ВыполнитьМетодОбъектаНаСервере("ЭтоЛожь", 0); Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция ЕстьЛожь() Экспорт Возврат ЭтоЛожь(); КонецФункции &НаКлиенте Функция Равно(Знач ОжидаемоеЗначение) Экспорт ВыполнитьМетодОбъектаНаСервере("Равно", 1, ОжидаемоеЗначение); Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция Больше(Знач МеньшееЗначение) Экспорт ВыполнитьМетодОбъектаНаСервере("Больше", 1, МеньшееЗначение); Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция БольшеИлиРавно(Знач МеньшееИлиРавноеЗначение) Экспорт ВыполнитьМетодОбъектаНаСервере("БольшеИлиРавно", 1, МеньшееИлиРавноеЗначение); Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция Минимум(Знач МинимальноеЗначение) Экспорт Возврат БольшеИлиРавно(МинимальноеЗначение); КонецФункции &НаКлиенте Функция МеньшеИлиРавно(Знач БольшееИлиРавноеЗначение) Экспорт ВыполнитьМетодОбъектаНаСервере("МеньшеИлиРавно", 1, БольшееИлиРавноеЗначение); Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция Максимум(Знач МаксимальноеЗначение) Экспорт Возврат МеньшеИлиРавно(МаксимальноеЗначение); КонецФункции &НаКлиенте Функция Меньше(Знач БольшееЗначение) Экспорт ВыполнитьМетодОбъектаНаСервере("Меньше", 1, БольшееЗначение); Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция Заполнено() Экспорт ВыполнитьМетодОбъектаНаСервере("Заполнено", 0); Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция Существует() Экспорт ВыполнитьМетодОбъектаНаСервере("Существует", 0); Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция ЭтоНеопределено() Экспорт ВыполнитьМетодОбъектаНаСервере("ЭтоНеопределено", 0); Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция ЕстьНеопределено() Экспорт Возврат ЭтоНеопределено(); КонецФункции &НаКлиенте Функция ЭтоNull() Экспорт ВыполнитьМетодОбъектаНаСервере("ЭтоNull", 0); Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция ЕстьNull() Экспорт Возврат ЭтоNull(); КонецФункции &НаКлиенте Функция ИмеетТип(Знач ТипИлиИмяТипа) Экспорт ВыполнитьМетодОбъектаНаСервере("ИмеетТип", 1, ТипИлиИмяТипа); Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция Между(Знач НачальноеЗначение, Знач КонечноеЗначение) Экспорт ВыполнитьМетодОбъектаНаСервере("Между", 2, НачальноеЗначение, КонечноеЗначение); Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция Содержит(Знач ИскомоеЗначение) Экспорт ВыполнитьМетодОбъектаНаСервере("Содержит", 1, ИскомоеЗначение); Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция ИмеетДлину(Знач ОжидаемаяДлина) Экспорт ВыполнитьМетодОбъектаНаСервере("ИмеетДлину", 1, ОжидаемаяДлина); Возврат ЭтаФорма; КонецФункции &НаКлиенте Функция ВыбрасываетИсключение(Знач ФрагментИсключения = "") Экспорт ВыполнитьМетодОбъектаНаСервере("ВыбрасываетИсключение", 1, ФрагментИсключения); Возврат ЭтаФорма; КонецФункции // { Helpers &НаСервере Процедура ВыполнитьМетодОбъектаНаСервере(Знач ИмяМетода, Знач КоличествоПараметров, Знач Параметр1 = Неопределено, Знач Параметр2 = Неопределено) ОбъектНаСервере = ЭтотОбъектНаСервере(); СтрокаПараметры = ""; Если КоличествоПараметров = 1 Тогда СтрокаПараметры = "Параметр1"; ИначеЕсли КоличествоПараметров = 2 Тогда СтрокаПараметры = "Параметр1, Параметр2"; КонецЕсли; Попытка Выполнить("ОбъектНаСервере." + ИмяМетода + "(" + СтрокаПараметры + ")"); Исключение ОписаниеОшибки = ОписаниеОшибки(); ВызватьИсключение "Вызов метода <" + ИмяМетода +">: " + ОписаниеОшибки; КонецПопытки; ЗначениеВРеквизитФормы(ОбъектНаСервере, "Объект"); КонецПроцедуры &НаСервере Функция ЭтотОбъектНаСервере() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции // } Helpers \ No newline at end of file diff --git "a/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/ObjectModule.txt" "b/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/ObjectModule.bsl" similarity index 100% rename from "src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/ObjectModule.txt" rename to "src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/ObjectModule.bsl" diff --git "a/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/maps.txt" "b/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/maps.txt" index 90373dda..51296dd6 100644 --- "a/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/maps.txt" +++ "b/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/maps.txt" @@ -1 +1 @@ -Form\Форма\Форма.txt-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 237) +Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 237) diff --git "a/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/renames.txt" "b/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/renames.txt" index 31723e1f..f90a2039 100644 --- "a/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/renames.txt" +++ "b/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/renames.txt" @@ -2,7 +2,7 @@ 4e8e1a4a-a947-419b-95c8-58a411e3ffa4-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4 4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info-->und\908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info -908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.txt +908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.bsl copyinfo-->und\copyinfo root-->und\root version-->und\version diff --git "a/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..7a847029 --- /dev/null +++ "b/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,30 @@ + +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции +// } Helpers + + +&НаКлиенте +Процедура ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Ложь, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки = Ложь, Знач ДопСообщениеОшибки = "") Экспорт + ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениямСервер(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки, ДопСообщениеОшибки); +КонецПроцедуры + +&НаСервере +Процедура ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениямСервер(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Ложь, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки = Ложь, Знач ДопСообщениеОшибки = "") Экспорт + ЭтотОбъектНаСервере().ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки, ДопСообщениеОшибки); +КонецПроцедуры diff --git "a/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index 45b386e4..00000000 --- "a/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ - // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); КонецФункции // } Plugin interface // { Helpers &НаСервере Функция ЭтотОбъектНаСервере() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции // } Helpers &НаКлиенте Процедура ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Ложь, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки = Ложь, Знач ДопСообщениеОшибки = "") Экспорт ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениямСервер(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки, ДопСообщениеОшибки); КонецПроцедуры &НаСервере Процедура ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениямСервер(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки = Ложь, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки = Ложь, Знач ДопСообщениеОшибки = "") Экспорт ЭтотОбъектНаСервере().ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(ТабДок1, ТабДок2, УчитыватьТолькоВидимыеКолонкиИлиДопСообщениеОшибки, УчитыватьТолькоВидимыеСтрокиИлиДопСообщениеОшибки, ДопСообщениеОшибки); КонецПроцедуры \ No newline at end of file diff --git "a/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/ObjectModule.txt" "b/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/ObjectModule.bsl" similarity index 100% rename from "src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/ObjectModule.txt" rename to "src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/ObjectModule.bsl" diff --git "a/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/maps.txt" "b/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/maps.txt" index b05fa086..fc5589e5 100644 --- "a/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/maps.txt" +++ "b/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/maps.txt" @@ -1 +1 @@ -Form\Форма\Форма.txt-->d75f146d-5027-4604-80fd-3b704ddd86a8.0 (29, 59) +Form\Форма\Форма.bsl-->d75f146d-5027-4604-80fd-3b704ddd86a8.0 (29, 59) diff --git "a/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/renames.txt" "b/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/renames.txt" index 3c0c8e26..4d07c6f4 100644 --- "a/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/renames.txt" +++ "b/src/Plugins/\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\242\320\260\320\261\320\273\320\270\321\206/renames.txt" @@ -3,7 +3,7 @@ copyinfo-->und\copyinfo d75f146d-5027-4604-80fd-3b704ddd86a8-->und\d75f146d-5027-4604-80fd-3b704ddd86a8 d75f146d-5027-4604-80fd-3b704ddd86a8.0-->und\d75f146d-5027-4604-80fd-3b704ddd86a8.0 dfe532e1-d0ef-4008-afd4-214781ee4960.0\info-->und\dfe532e1-d0ef-4008-afd4-214781ee4960.0\info -dfe532e1-d0ef-4008-afd4-214781ee4960.0\text-->ObjectModule.txt +dfe532e1-d0ef-4008-afd4-214781ee4960.0\text-->ObjectModule.bsl root-->und\root version-->und\version versions-->und\versions diff --git "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..ded11c66 --- /dev/null +++ "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,38 @@ + +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +// { Report generator interface +&НаКлиенте +Функция СоздатьОтчет(КонтекстЯдра, РезультатТестирования) Экспорт + Объект.ТипыУзловДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов").Объект.ТипыУзловДереваТестов; + Объект.СостоянияТестов = КонтекстЯдра.Объект.СостоянияТестов; + ВызватьИсключение "Метод не реализован"; +КонецФункции + +&НаКлиенте +Процедура Показать(Отчет) Экспорт + ВызватьИсключение "Метод не реализован"; +КонецПроцедуры + +&НаКлиенте +Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт + ВызватьИсключение "Метод не реализован"; +КонецПроцедуры +// } Report generator interface + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции +// } Helpers diff --git "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index cd3ec4b6..00000000 --- "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ - // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); КонецФункции // } Plugin interface // { Report generator interface &НаКлиенте Функция СоздатьОтчет(КонтекстЯдра, РезультатТестирования) Экспорт Объект.ТипыУзловДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов").Объект.ТипыУзловДереваТестов; Объект.СостоянияТестов = КонтекстЯдра.Объект.СостоянияТестов; ВызватьИсключение "Метод не реализован"; КонецФункции &НаКлиенте Процедура Показать(Отчет) Экспорт ВызватьИсключение "Метод не реализован"; КонецПроцедуры &НаКлиенте Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт ВызватьИсключение "Метод не реализован"; КонецПроцедуры // } Report generator interface // { Helpers &НаСервере Функция ЭтотОбъектНаСервере() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции // } Helpers \ No newline at end of file diff --git "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/ObjectModule.txt" "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/ObjectModule.bsl" similarity index 100% rename from "src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/ObjectModule.txt" rename to "src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/ObjectModule.bsl" diff --git "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/maps.txt" "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/maps.txt" index 26342bfa..c0220500 100644 --- "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/maps.txt" +++ "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/maps.txt" @@ -1 +1 @@ -Form\Форма\Форма.txt-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 67) +Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 67) diff --git "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/renames.txt" "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/renames.txt" index 31723e1f..f90a2039 100644 --- "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/renames.txt" +++ "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/renames.txt" @@ -2,7 +2,7 @@ 4e8e1a4a-a947-419b-95c8-58a411e3ffa4-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4 4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info-->und\908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info -908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.txt +908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.bsl copyinfo-->und\copyinfo root-->und\root version-->und\version diff --git "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..92f5b726 --- /dev/null +++ "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,51 @@ + +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +// { Loader interface +&НаКлиенте +Функция ВыбратьПутьИнтерактивно(ТекущийПуть = "") Экспорт + Перем ВыбранныйПуть; + + ВызватьИсключение "Метод не реализован"; + + Возврат ВыбранныйПуть; +КонецФункции + +&НаКлиенте +Функция Загрузить(КонтекстЯдра, Путь) Экспорт + Перем ДеревоТестов; + + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); + ИконкиУзловДереваТестов = ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов; + + ВызватьИсключение "Метод не реализован"; + + Возврат ДеревоТестов; +КонецФункции + +&НаКлиенте +Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт + Перем Контекст; + + ВызватьИсключение "Метод не реализован"; + + Возврат Контекст; +КонецФункции +// } Loader interface + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции +// } Helpers diff --git "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index dddb317a..00000000 --- "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ - // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); КонецФункции // } Plugin interface // { Loader interface &НаКлиенте Функция ВыбратьПутьИнтерактивно(ТекущийПуть = "") Экспорт Перем ВыбранныйПуть; ВызватьИсключение "Метод не реализован"; Возврат ВыбранныйПуть; КонецФункции &НаКлиенте Функция Загрузить(КонтекстЯдра, Путь) Экспорт Перем ДеревоТестов; ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); ИконкиУзловДереваТестов = ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов; ВызватьИсключение "Метод не реализован"; Возврат ДеревоТестов; КонецФункции &НаКлиенте Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт Перем Контекст; ВызватьИсключение "Метод не реализован"; Возврат Контекст; КонецФункции // } Loader interface // { Helpers &НаСервере Функция ЭтотОбъектНаСервере() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции // } Helpers \ No newline at end of file diff --git "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260/ObjectModule.txt" "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260/ObjectModule.bsl" similarity index 100% rename from "src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260/ObjectModule.txt" rename to "src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260/ObjectModule.bsl" diff --git "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260/maps.txt" "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260/maps.txt" index 214f49a6..68f4806b 100644 --- "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260/maps.txt" +++ "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260/maps.txt" @@ -1 +1 @@ -Form\Форма\Форма.txt-->d75f146d-5027-4604-80fd-3b704ddd86a8.0 (29, 80) +Form\Форма\Форма.bsl-->d75f146d-5027-4604-80fd-3b704ddd86a8.0 (29, 80) diff --git "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260/renames.txt" "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260/renames.txt" index 3c0c8e26..4d07c6f4 100644 --- "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260/renames.txt" +++ "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\260/renames.txt" @@ -3,7 +3,7 @@ copyinfo-->und\copyinfo d75f146d-5027-4604-80fd-3b704ddd86a8-->und\d75f146d-5027-4604-80fd-3b704ddd86a8 d75f146d-5027-4604-80fd-3b704ddd86a8.0-->und\d75f146d-5027-4604-80fd-3b704ddd86a8.0 dfe532e1-d0ef-4008-afd4-214781ee4960.0\info-->und\dfe532e1-d0ef-4008-afd4-214781ee4960.0\info -dfe532e1-d0ef-4008-afd4-214781ee4960.0\text-->ObjectModule.txt +dfe532e1-d0ef-4008-afd4-214781ee4960.0\text-->ObjectModule.bsl root-->und\root version-->und\version versions-->und\versions diff --git "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..c8ecf289 --- /dev/null +++ "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,19 @@ + +// { Plugin interface +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +// { Helpers +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции +// } Helpers diff --git "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index 9d226060..00000000 --- "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ - // { Plugin interface &НаКлиенте Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); КонецФункции &НаСервере Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); КонецФункции // } Plugin interface // { Helpers &НаСервере Функция ЭтотОбъектНаСервере() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции // } Helpers \ No newline at end of file diff --git "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.txt" "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.bsl" similarity index 100% rename from "src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.txt" rename to "src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.bsl" diff --git "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213/maps.txt" "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213/maps.txt" index 4962a47e..4ba753df 100644 --- "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213/maps.txt" +++ "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213/maps.txt" @@ -1 +1 @@ -Form\Форма\Форма.txt-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 48) +Form\Форма\Форма.bsl-->4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 (29, 48) diff --git "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213/renames.txt" "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213/renames.txt" index 31723e1f..f90a2039 100644 --- "a/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213/renames.txt" +++ "b/src/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\243\321\202\320\270\320\273\320\270\321\202\321\213/renames.txt" @@ -2,7 +2,7 @@ 4e8e1a4a-a947-419b-95c8-58a411e3ffa4-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4 4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0-->und\4e8e1a4a-a947-419b-95c8-58a411e3ffa4.0 908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info-->und\908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\info -908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.txt +908d0aaf-e4ec-4668-8d14-3e8075d222fd.0\text-->ObjectModule.bsl copyinfo-->und\copyinfo root-->und\root version-->und\version diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" similarity index 98% rename from "src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" rename to "src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" index b50c80cc..8d5951d5 100644 --- "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -1,564 +1,564 @@ -&НаКлиенте -Перем КонтекстЯдра; -&НаКлиенте -Перем Ожидаем; - -&НаКлиенте -Перем ЭтоЗначениеЗаполняетсяПередЗапускомТеста; -&НаКлиенте -Перем ЭтоЗначениеЗаполняетсяПослеЗапускаТеста; -&НаКлиенте -Перем ТекстИсключенияПадающегоТеста; - -&НаКлиенте -Процедура Инициализация(КонтекстЯдраПараметр) Экспорт - КонтекстЯдра = КонтекстЯдраПараметр; - Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); -КонецПроцедуры - -&НаКлиенте -Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт - НаборТестов.НачатьГруппу("Выполнение тестов"); - НаборТестов.Добавить("ТестДолжен_ПроверитьВызов_ПередЗапускомТеста"); - НаборТестов.Добавить("ТестДолжен_ПроверитьРезультатТестированияУспешныйМетода"); - НаборТестов.Добавить("ТестДолжен_ПроверитьРезультатТестированияПадающегоМетода"); - НаборТестов.Добавить("ТестДолжен_ПроверитьРезультатТестированияОтсутствующегоМетода"); - НаборТестов.Добавить("ТестДолжен_ПроверитьВызов_ПослеЗапускаТеста"); - НаборТестов.Добавить("ТестДолжен_ПроверитьВызов_ПослеЗапускаТеста_УПадающегоТеста"); - НаборТестов.Добавить("ТестДолжен_ПроверитьРезультатТеста_Когда_ПередЗапускаТеста_СОшибкой"); - НаборТестов.Добавить("ТестДолжен_ПроверитьРезультатТеста_Когда_ПослеЗапускаТеста_СОшибкой"); - - НаборТестов.НачатьГруппу("Фильтрация"); - НаборТестов.Добавить("ТестДолжен_ПроверитьВыборочныйЗапускТестов_ФильтрЭлементов"); - НаборТестов.Добавить("ТестДолжен_ПроверитьВыборочныйЗапускТестов_ФильтрКонтейнеров"); - НаборТестов.Добавить("ТестДолжен_ПроверитьВыборочныйЗапускТестов_СмешанныйФильтр"); - - НаборТестов.НачатьГруппу("Статистика"); - НаборТестов.Добавить("ТестДолжен_ПроверитьВРезультатеТестирования_ЗаполнениеСтатистики"); - - НаборТестов.НачатьГруппу("Тесты с параметрами"); - НаборТестов.Добавить("ТестДолжен_ПроверитьВыполнениеТеста_ОдинПараметр"); - НаборТестов.Добавить("ТестДолжен_ПроверитьВыполнениеТеста_НесколькоПараметров"); - - НаборТестов.НачатьГруппу("Режимы выполнения тестов (случайный и строгий)"); - НаборТестов.Добавить("ТестДолжен_Проверить_ЧтоПоУмолчанию_ТестыВыполняютсяВСлучайномПорядке"); - НаборТестов.Добавить("ТестДолжен_Проверить_ЧтоТестыВыполняютсяСтрогоПоПорядку"); - НаборТестов.Добавить("ТестДолжен_Проверить_ЧтоПадениеОдногоТестаВКонтейнереСоСтрогимПорядком_ПриводитКПропускуОставшихсяШагов"); - НаборТестов.Добавить("ТестДолжен_Проверить_ЧтоПадениеОдногоТестаВКонтейнереСоСтрогимПорядком_ПриводитКПропускуДочернихКонтейнеров"); - НаборТестов.Добавить("ТестДолжен_Проверить_ЧтоПадениеТестовВКонтейнереСоСлучайнымПорядком_НеВлияетНаДругиеТестовыеМетоды"); - - НаборТестов.НачатьГруппу("Передача контекста"); - НаборТестов.Добавить("ТестДолжен_ПроверитьПередачуКонтекстаВЗависимыхТестах"); - НаборТестов.Добавить("ТестДолжен_ПроверитьЧтоСохранятьКонтекстМожноТолькоВРамкахКонтейнераСоСтрогимПорядкомВыполнения"); - НаборТестов.Добавить("ТестДолжен_ПроверитьЧтоПолучатьКонтекстМожноТолькоВРамкахКонтейнераСоСтрогимПорядкомВыполнения"); -КонецПроцедуры - -&НаКлиенте -Процедура ПередЗапускомТеста() Экспорт - ЭтоЗначениеЗаполняетсяПередЗапускомТеста = Истина; - ЭтоЗначениеЗаполняетсяПослеЗапускаТеста = Неопределено; -КонецПроцедуры - -&НаКлиенте -Процедура ПослеЗапускаТеста() Экспорт - ЭтоЗначениеЗаполняетсяПослеЗапускаТеста = Истина; -КонецПроцедуры - -&НаКлиенте -Процедура ПередЗапускомТеста_СОшибкой() Экспорт - ВызватьИсключение "ПередЗапускомТеста_СОшибкой"; -КонецПроцедуры - -&НаКлиенте -Процедура ПослеЗапускаТеста_СОшибкой() Экспорт - ВызватьИсключение "ПослеЗапускаТеста_СОшибкой"; -КонецПроцедуры - - -// { Выполнение тестов -&НаКлиенте -Процедура ТестДолжен_ПроверитьВызов_ПередЗапускомТеста() Экспорт - Ожидаем.Что(ЭтоЗначениеЗаполняетсяПередЗапускомТеста).ЭтоИстина(); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПроверитьРезультатТестированияУспешныйМетода() Экспорт - ДанныеУспешногоТеста = КонтекстЯдра.Плагин("ПостроительДереваТестов").СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - РезультатТестирования = КонтекстЯдра.ВыполнитьТестовыйМетодНаКлиенте(ЭтаФорма, ДанныеУспешногоТеста); - - Ожидаем.Что(РезультатТестирования, "РезультатТестирования").ИмеетТип("Структура"); - Ожидаем.Что(РезультатТестирования.Путь, "РезультатТестирования.Путь").Равно(ДанныеУспешногоТеста.Путь); - Ожидаем.Что(РезультатТестирования.ИмяМетода, "РезультатТестирования.ИмяМетода").Равно(ДанныеУспешногоТеста.ИмяМетода); - Ожидаем.Что(РезультатТестирования.Состояние, "РезультатТестирования.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); - Ожидаем.Что(РезультатТестирования.Сообщение, "РезультатТестирования.Сообщение").Равно(""); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПроверитьРезультатТестированияПадающегоМетода() Экспорт - ТекстИсключенияПадающегоТеста = "КАБУМ!!!"; - ДанныеПадающегоТеста = КонтекстЯдра.Плагин("ПостроительДереваТестов").СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "МетодПадающийПоУтверждению"); - РезультатТестирования = КонтекстЯдра.ВыполнитьТестовыйМетодНаКлиенте(ЭтаФорма, ДанныеПадающегоТеста); - - Ожидаем.Что(РезультатТестирования, "РезультатТестирования").ИмеетТип("Структура"); - Ожидаем.Что(РезультатТестирования.Путь, "РезультатТестирования.Путь").Равно(ДанныеПадающегоТеста.Путь); - Ожидаем.Что(РезультатТестирования.ИмяМетода, "РезультатТестирования.ИмяМетода").Равно(ДанныеПадающегоТеста.ИмяМетода); - Ожидаем.Что(РезультатТестирования.Состояние, "РезультатТестирования.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Сломан); - Ожидаем.Что(РезультатТестирования.Сообщение, "РезультатТестирования.Сообщение").Содержит(ТекстИсключенияПадающегоТеста); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПроверитьРезультатТестированияОтсутствующегоМетода() Экспорт - ДанныеОтсутствующегоТеста = КонтекстЯдра.Плагин("ПостроительДереваТестов").СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "ОтсутствующийМетод"); - РезультатТестирования = КонтекстЯдра.ВыполнитьТестовыйМетодНаКлиенте(ЭтаФорма, ДанныеОтсутствующегоТеста); - - Ожидаем.Что(РезультатТестирования, "РезультатТестирования").ИмеетТип("Структура"); - Ожидаем.Что(РезультатТестирования.Путь, "РезультатТестирования.Путь").Равно(ДанныеОтсутствующегоТеста.Путь); - Ожидаем.Что(РезультатТестирования.ИмяМетода, "РезультатТестирования.ИмяМетода").Равно(ДанныеОтсутствующегоТеста.ИмяМетода); - Ожидаем.Что(РезультатТестирования.Состояние, "РезультатТестирования.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.НеРеализован); - Ожидаем.Что(РезультатТестирования.Сообщение, "РезультатТестирования.Сообщение").Содержит(ДанныеОтсутствующегоТеста.ИмяМетода); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПроверитьВызов_ПослеЗапускаТеста() Экспорт - ДанныеУспешногоТеста = КонтекстЯдра.Плагин("ПостроительДереваТестов").СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - РезультатТестирования = КонтекстЯдра.ВыполнитьТестовыйМетодНаКлиенте(ЭтаФорма, ДанныеУспешногоТеста); - - Ожидаем.Что(ЭтоЗначениеЗаполняетсяПослеЗапускаТеста).ЭтоИстина(); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПроверитьВызов_ПослеЗапускаТеста_УПадающегоТеста() Экспорт - ДанныеПадающегоТеста = КонтекстЯдра.Плагин("ПостроительДереваТестов").СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "МетодПадающийПоУтверждению"); - РезультатТестирования = КонтекстЯдра.ВыполнитьТестовыйМетодНаКлиенте(ЭтаФорма, ДанныеПадающегоТеста); - - Ожидаем.Что(РезультатТестирования.Состояние).Равно(КонтекстЯдра.Объект.СостоянияТестов.Сломан); - Ожидаем.Что(ЭтоЗначениеЗаполняетсяПослеЗапускаТеста).ЭтоИстина(); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПроверитьРезультатТеста_Когда_ПередЗапускаТеста_СОшибкой() Экспорт - ДанныеУспешногоТеста = КонтекстЯдра.Плагин("ПостроительДереваТестов").СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - ДанныеУспешногоТеста.ПередЗапускомТеста = "ПередЗапускомТеста_СОшибкой"; - - РезультатТестирования = КонтекстЯдра.ВыполнитьТестовыйМетодНаКлиенте(ЭтаФорма, ДанныеУспешногоТеста); - - Ожидаем.Что(РезультатТестирования.Состояние).Равно(КонтекстЯдра.Объект.СостоянияТестов.НеизвестнаяОшибка); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПроверитьРезультатТеста_Когда_ПослеЗапускаТеста_СОшибкой() Экспорт - ДанныеУспешногоТеста = КонтекстЯдра.Плагин("ПостроительДереваТестов").СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - ДанныеУспешногоТеста.ПослеЗапускаТеста = "ПослеЗапускаТеста_СОшибкой"; - - РезультатТестирования = КонтекстЯдра.ВыполнитьТестовыйМетодНаКлиенте(ЭтаФорма, ДанныеУспешногоТеста); - - Ожидаем.Что(РезультатТестирования.Состояние).Равно(КонтекстЯдра.Объект.СостоянияТестов.НеизвестнаяОшибка); -КонецПроцедуры -// } Выполнение тестов - -// { Фильтрация -&НаКлиенте -Процедура ТестДолжен_ПроверитьВыборочныйЗапускТестов_ФильтрЭлементов() Экспорт - ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); - Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - Элемент3 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - - Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); - Контейнер.Строки.Добавить(Элемент1); - Контейнер.Строки.Добавить(Элемент2); - Контейнер.Строки.Добавить(Элемент3); - - Фильтр = Новый Массив; - Фильтр.Добавить(Элемент2.Ключ); - Фильтр.Добавить(Элемент3.Ключ); - - Ожидаем.Что(КонтекстЯдра.ПолучитьКоличествоТестовыхМетодов(Контейнер, Фильтр), "Общее количество тестовых методов").Равно(Фильтр.Количество()); - - РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Контейнер, Фильтр); - - Ожидаем.Что(РезультатТестирования.Состояние, "Контейнер").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); - Ожидаем.Что(РезультатТестирования.Строки.Количество(), "Количество тестовых методов").Равно(Фильтр.Количество()); - - РезультатТеста_Элемент1 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТестирования, Элемент1.Ключ); - Ожидаем.Что(РезультатТеста_Элемент1, "РезультатТеста_Элемент1").ЭтоНеопределено(); - - РезультатТеста_Элемент2 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТестирования, Элемент2.Ключ); - Ожидаем.Что(РезультатТеста_Элемент2.Ключ, "Тест2.Ключ").Равно(Элемент2.Ключ); - Ожидаем.Что(РезультатТеста_Элемент2.Состояние, "Тест2 Пройден").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); - - РезультатТеста_Элемент3 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТестирования, Элемент3.Ключ); - Ожидаем.Что(РезультатТеста_Элемент3.Ключ, "Тест3.Ключ").Равно(Элемент3.Ключ); - Ожидаем.Что(РезультатТеста_Элемент3.Состояние, "Тест3 Пройден").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПроверитьВыборочныйЗапускТестов_ФильтрКонтейнеров() Экспорт - ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); - Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - Элемент3 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - - Контейнер1 = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер1"); - Контейнер1.Строки.Добавить(Элемент1); - - Контейнер2 = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер2"); - Контейнер2.Строки.Добавить(Элемент2); - - Контейнер3 = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер3"); - Контейнер3.Строки.Добавить(Элемент3); - - Корень = ПостроительДереваТестов.СоздатьКонтейнер("Корень"); - Корень.Строки.Добавить(Контейнер1); - Корень.Строки.Добавить(Контейнер2); - Корень.Строки.Добавить(Контейнер3); - - Фильтр = Новый Массив; - Фильтр.Добавить(Контейнер2.Ключ); - Фильтр.Добавить(Контейнер3.Ключ); - - Ожидаем.Что(КонтекстЯдра.ПолучитьКоличествоТестовыхМетодов(Корень, Фильтр), "Общее количество тестовых методов").Равно(2); - - РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Корень, Фильтр); - - Ожидаем.Что(РезультатТестирования.Ключ, "Корень.Ключ").Равно(Корень.Ключ); - Ожидаем.Что(РезультатТестирования.Состояние, "Корень.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); - Ожидаем.Что(РезультатТестирования.Строки.Количество(), "Количество дочерних узлов").Равно(Фильтр.Количество()); - - РезультатТеста_Контейнер1 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТестирования, Контейнер1.Ключ); - Ожидаем.Что(РезультатТеста_Контейнер1, "РезультатТеста_Контейнер1").ЭтоНеопределено(); - - РезультатТеста_Контейнер2 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТестирования, Контейнер2.Ключ); - Ожидаем.Что(РезультатТеста_Контейнер2.Ключ, "Контейнер2.Ключ").Равно(Контейнер2.Ключ); - Ожидаем.Что(РезультатТеста_Контейнер2.Состояние, "Контейнер2.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); - Ожидаем.Что(РезультатТеста_Контейнер2.Строки[0].Ключ, "Контейнер2.Элемент2.Ключ").Равно(Элемент2.Ключ); - Ожидаем.Что(РезультатТеста_Контейнер2.Строки[0].Состояние, "Контейнер2.Элемент2.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); - - РезультатТеста_Контейнер3 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТестирования, Контейнер3.Ключ); - Ожидаем.Что(РезультатТеста_Контейнер3.Ключ, "Контейнер3.Ключ").Равно(Контейнер3.Ключ); - Ожидаем.Что(РезультатТеста_Контейнер3.Состояние, "Контейнер2.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); - Ожидаем.Что(РезультатТеста_Контейнер3.Строки[0].Ключ, "Контейнер3.Элемент3.Ключ").Равно(Элемент3.Ключ); - Ожидаем.Что(РезультатТеста_Контейнер3.Строки[0].Состояние, "Контейнер3.Элемент3.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПроверитьВыборочныйЗапускТестов_СмешанныйФильтр() Экспорт - ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); - Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - Элемент3 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - - Контейнер1 = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер1"); - Контейнер1.Строки.Добавить(Элемент1); - Контейнер1.Строки.Добавить(Элемент2); - - Контейнер2 = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер2"); - Контейнер2.Строки.Добавить(Элемент3); - - Корень = ПостроительДереваТестов.СоздатьКонтейнер("Корень"); - Корень.Строки.Добавить(Контейнер1); - Корень.Строки.Добавить(Контейнер2); - - Фильтр = Новый Массив; - Фильтр.Добавить(Элемент2.Ключ); - Фильтр.Добавить(Контейнер2.Ключ); - - Ожидаем.Что(КонтекстЯдра.ПолучитьКоличествоТестовыхМетодов(Корень, Фильтр), "Общее количество тестовых методов").Равно(2); - - РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Корень, Фильтр); - - Ожидаем.Что(РезультатТестирования.Ключ, "Корень.Ключ").Равно(Корень.Ключ); - Ожидаем.Что(РезультатТестирования.Состояние, "Корень.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); - Ожидаем.Что(РезультатТестирования.Строки.Количество(), "Количество дочерних узлов").Равно(2); - - РезультатТеста_Контейнер1 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТестирования, Контейнер1.Ключ); - Ожидаем.Что(РезультатТеста_Контейнер1.Ключ, "Контейнер1.Ключ").Равно(Контейнер1.Ключ); - Ожидаем.Что(РезультатТеста_Контейнер1.Состояние, "Контейнер1.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); - Ожидаем.Что(РезультатТеста_Контейнер1.Строки.Количество(), "Контейнер1 количество дочерних узлов").Равно(1); - РезультатТеста_Элемент1 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТеста_Контейнер1, Элемент1.Ключ); - Ожидаем.Что(РезультатТеста_Элемент1, "РезультатТеста_Элемент1").ЭтоНеопределено(); - РезультатТеста_Элемент2 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТеста_Контейнер1, Элемент2.Ключ); - Ожидаем.Что(РезультатТеста_Элемент2.Ключ, "Контейнер1.Элемент2.Ключ").Равно(Элемент2.Ключ); - Ожидаем.Что(РезультатТеста_Элемент2.Состояние, "Контейнер1.Элемент2.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); - - РезультатТеста_Контейнер2 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТестирования, Контейнер2.Ключ); - Ожидаем.Что(РезультатТеста_Контейнер2.Ключ, "Контейнер2.Ключ").Равно(Контейнер2.Ключ); - Ожидаем.Что(РезультатТеста_Контейнер2.Состояние, "Контейнер2.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); - РезультатТеста_Элемент3 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТеста_Контейнер2, Элемент3.Ключ); - Ожидаем.Что(РезультатТеста_Элемент3.Ключ, "Контейнер2.Элемент3.Ключ").Равно(Элемент3.Ключ); - Ожидаем.Что(РезультатТеста_Элемент3.Состояние, "Контейнер2.Элемент3.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); -КонецПроцедуры -// } Фильтрация - -// { Статистика -&НаКлиенте -Процедура ТестДолжен_ПроверитьВРезультатеТестирования_ЗаполнениеСтатистики() Экспорт - ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); - УспешныйЭлемент = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - ПадающийЭлемент = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "МетодПадающийПоУтверждению"); - ОтсутствующийЭлемент = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "ОтсутствующийМетод"); - - Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); - Контейнер.Строки.Добавить(УспешныйЭлемент); - Контейнер.Строки.Добавить(ПадающийЭлемент); - Контейнер.Строки.Добавить(ОтсутствующийЭлемент); - - Ожидаем.Что(КонтекстЯдра.ПолучитьКоличествоТестовыхМетодов(Контейнер), "Общее количество тестовых методов").Равно(Контейнер.Строки.Количество()); - - РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Контейнер); - - Ожидаем.Что(РезультатТестирования.КоличествоТестов).Равно(Контейнер.Строки.Количество()); - Ожидаем.Что(РезультатТестирования.КоличествоСломанныхТестов).Равно(1); - Ожидаем.Что(РезультатТестирования.КоличествоНеРеализованныхТестов).Равно(1); - Ожидаем.Что(РезультатТестирования.ВремяВыполнения).Существует(); -КонецПроцедуры -// } Статистика - -// { Тесты с параметрами -&НаКлиенте -Процедура ТестДолжен_ПроверитьВыполнениеТеста_ОдинПараметр() Экспорт - ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); - - Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "ТестСложенияСОднимПараметром"); - Элемент1.Параметры.Добавить(Новый Структура("Значение1, Значение2, Результат", 1, 5, 6)); - - Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "ТестСложенияСОднимПараметром"); - Элемент2.Параметры.Добавить(Новый Структура("Значение1, Значение2, Результат", "Раз", "-Два", "Раз-Два")); - - Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); - Контейнер.Строки.Добавить(Элемент1); - Контейнер.Строки.Добавить(Элемент2); - - РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Контейнер); - - Ожидаем.Что(РезультатТестирования.Состояние, "Состояние всех результатов тестирования").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); - Ожидаем.Что(РезультатТестирования.КоличествоТестов).Равно(Контейнер.Строки.Количество()); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПроверитьВыполнениеТеста_НесколькоПараметров() Экспорт - ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); - - Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "ТестСложенияСНесколькимиПараметрами"); - Элемент1.Параметры.Добавить(1); - Элемент1.Параметры.Добавить(5); - Элемент1.Параметры.Добавить(6); - - Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "ТестСложенияСНесколькимиПараметрами"); - Элемент2.Параметры.Добавить("Раз"); - Элемент2.Параметры.Добавить("-Два"); - Элемент2.Параметры.Добавить("Раз-Два"); - - Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); - Контейнер.Строки.Добавить(Элемент1); - Контейнер.Строки.Добавить(Элемент2); - - РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Контейнер); - - Ожидаем.Что(РезультатТестирования.Состояние, "Состояние всех результатов тестирования").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); - Ожидаем.Что(РезультатТестирования.КоличествоТестов).Равно(Контейнер.Строки.Количество()); -КонецПроцедуры -// } Тесты с параметрами - -// { Режимы выполнения тестов (случайный и строгий) -&НаКлиенте -Процедура ТестДолжен_Проверить_ЧтоПоУмолчанию_ТестыВыполняютсяВСлучайномПорядке() Экспорт - ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); - Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - Элемент3 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - - Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); - Контейнер.Строки.Добавить(Элемент1); - Контейнер.Строки.Добавить(Элемент2); - Контейнер.Строки.Добавить(Элемент3); - - МаксимальноеКоличествоПопыток = 100; - Для Сч = 1 По МаксимальноеКоличествоПопыток Цикл - РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Контейнер); - Если РезультатТестирования.Строки[0].Ключ <> Элемент1.Ключ Тогда - Прервать; - КонецЕсли; - КонецЦикла; - Ожидаем.Что(Сч, "Порядок в результатах тестирования должен отличаться от порядка в дереве тестов").Меньше(МаксимальноеКоличествоПопыток); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_Проверить_ЧтоТестыВыполняютсяСтрогоПоПорядку() Экспорт - ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); - Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - Элемент3 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - - Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); - Контейнер.СлучайныйПорядокВыполнения = Ложь; - Контейнер.Строки.Добавить(Элемент1); - Контейнер.Строки.Добавить(Элемент2); - Контейнер.Строки.Добавить(Элемент3); - - РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Контейнер); - - Ожидаем.Что(РезультатТестирования.Строки[0].Ключ, "Элемент1").Равно(Элемент1.Ключ); - Ожидаем.Что(РезультатТестирования.Строки[1].Ключ, "Элемент2").Равно(Элемент2.Ключ); - Ожидаем.Что(РезультатТестирования.Строки[2].Ключ, "Элемент3").Равно(Элемент3.Ключ); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_Проверить_ЧтоПадениеОдногоТестаВКонтейнереСоСтрогимПорядком_ПриводитКПропускуОставшихсяШагов() Экспорт - ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); - Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "МетодПадающийПоУтверждению"); - Элемент3 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - - Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); - Контейнер.СлучайныйПорядокВыполнения = Ложь; - Контейнер.Строки.Добавить(Элемент1); - Контейнер.Строки.Добавить(Элемент2); - Контейнер.Строки.Добавить(Элемент3); - - РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Контейнер); - - Ожидаем.Что(РезультатТестирования.Строки).ИмеетДлину(2); - Ожидаем.Что(РезультатТестирования.Строки[1].Ключ, "Элемент2.Ключ").Равно(Элемент2.Ключ); - Ожидаем.Что(РезультатТестирования.Строки[1].Состояние, "Элемент2.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Сломан); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_Проверить_ЧтоПадениеОдногоТестаВКонтейнереСоСтрогимПорядком_ПриводитКПропускуДочернихКонтейнеров() Экспорт - ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); - Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "МетодПадающийПоУтверждению"); - Элемент3 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - - ДочернийКонтейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); - ДочернийКонтейнер.Строки.Добавить(Элемент3); - - Корень = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); - Корень.СлучайныйПорядокВыполнения = Ложь; - Корень.Строки.Добавить(Элемент1); - Корень.Строки.Добавить(Элемент2); - Корень.Строки.Добавить(ДочернийКонтейнер); - - РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Корень); - - Ожидаем.Что(РезультатТестирования.Строки).ИмеетДлину(2); - Ожидаем.Что(РезультатТестирования.Строки[1].Ключ, "Элемент2.Ключ").Равно(Элемент2.Ключ); - Ожидаем.Что(РезультатТестирования.Строки[1].Состояние, "Элемент2.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Сломан); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_Проверить_ЧтоПадениеТестовВКонтейнереСоСлучайнымПорядком_НеВлияетНаДругиеТестовыеМетоды() Экспорт - ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); - Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "МетодПадающийПоУтверждению"); - Элемент3 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); - - Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); - Контейнер.Строки.Добавить(Элемент1); - Контейнер.Строки.Добавить(Элемент2); - Контейнер.Строки.Добавить(Элемент3); - - РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Контейнер); - - Ожидаем.Что(РезультатТестирования.Строки).ИмеетДлину(3); -КонецПроцедуры -// } Режимы выполнения тестов (случайный и строгий) - -// { Передача контекста -&НаКлиенте -Процедура ТестДолжен_ПроверитьПередачуКонтекстаВЗависимыхТестах() Экспорт - ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); - - Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "ТестСохраняющийКонтекст_ПервоеЗначение"); - Элемент1.Параметры.Добавить(5); - - Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "ТестИспользующийКонтекст_СуммируетПервоеЗначениеВтороеЗначениеИПроверяетРезультат"); - Элемент2.Параметры.Добавить(7); - Элемент2.Параметры.Добавить(12); - - Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); - Контейнер.СлучайныйПорядокВыполнения = Ложь; - Контейнер.Строки.Добавить(Элемент1); - Контейнер.Строки.Добавить(Элемент2); - - РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Контейнер); - - Ожидаем.Что(РезультатТестирования.Состояние, "Состояние всех результатов тестирования").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); - Ожидаем.Что(РезультатТестирования.КоличествоТестов).Равно(Контейнер.Строки.Количество()); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПроверитьЧтоСохранятьКонтекстМожноТолькоВРамкахКонтейнераСоСтрогимПорядкомВыполнения() Экспорт - // Ожидаем, что этот контейнер со случайным порядком выполнения - ОписаниеОшибки = ""; - Попытка - КонтекстЯдра.СохранитьКонтекст(Истина); - Исключение - ОписаниеОшибки = ОписаниеОшибки(); - КонецПопытки; - Ожидаем.Что(ОписаниеОшибки).Заполнено().Содержит(КонтекстЯдра.Объект.ВозможныеИсключения.СохранятьКонтекстТолькоВСтрогомРежиме); -КонецПроцедуры - -&НаКлиенте -Процедура ТестДолжен_ПроверитьЧтоПолучатьКонтекстМожноТолькоВРамкахКонтейнераСоСтрогимПорядкомВыполнения() Экспорт - // Ожидаем, что этот контейнер со случайным порядком выполнения - ОписаниеОшибки = ""; - Попытка - КонтекстЯдра.ПолучитьКонтекст(); - Исключение - ОписаниеОшибки = ОписаниеОшибки(); - КонецПопытки; - Ожидаем.Что(ОписаниеОшибки).Заполнено().Содержит(КонтекстЯдра.Объект.ВозможныеИсключения.ПолучатьКонтекстТолькоВСтрогомРежиме); -КонецПроцедуры -// } Передача контекста - -// Методы нужные для тестов -&НаКлиенте -Функция ЗагрузчикЗаглушка() - Возврат ЭтаФорма; -КонецФункции - -&НаКлиенте -Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт - Возврат ЭтаФорма; -КонецФункции - -&НаКлиенте -Процедура УспешныйМетод() Экспорт -КонецПроцедуры - -&НаКлиенте -Процедура МетодПадающийПоУтверждению() Экспорт - КонтекстЯдра.ВызватьОшибкуПроверки(ТекстИсключенияПадающегоТеста); - //ВызватьИсключение ТекстИсключенияПадающегоТеста; -КонецПроцедуры - -&НаКлиенте -Процедура ТестСложенияСОднимПараметром(Параметры) Экспорт - Ожидаем.Что(Параметры.Значение1 + Параметры.Значение2).Равно(Параметры.Результат); -КонецПроцедуры - -&НаКлиенте -Процедура ТестСложенияСНесколькимиПараметрами(Слагаемое1, Слагаемое2, Результат) Экспорт - Ожидаем.Что(Слагаемое1 + Слагаемое2).Равно(Результат); -КонецПроцедуры - -&НаКлиенте -Процедура ТестСохраняющийКонтекст_ПервоеЗначение(ПервоеЗначение) Экспорт - КонтекстЯдра.СохранитьКонтекст(ПервоеЗначение); -КонецПроцедуры - -&НаКлиенте -Процедура ТестИспользующийКонтекст_СуммируетПервоеЗначениеВтороеЗначениеИПроверяетРезультат(ВтороеЗначение, Результат) Экспорт - ПервоеЗначение = КонтекстЯдра.ПолучитьКонтекст(); - Ожидаем.Что(ПервоеЗначение + ВтороеЗначение).Равно(Результат); -КонецПроцедуры - -// { Helpers -&НаСервере -Функция ПолучитьИспользуемоеИмяФайла() - ОбъектНаСервере = РеквизитФормыВЗначение("Объект"); - - Возврат ОбъектНаСервере.ИспользуемоеИмяФайла; -КонецФункции -// } Helpers +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Ожидаем; + +&НаКлиенте +Перем ЭтоЗначениеЗаполняетсяПередЗапускомТеста; +&НаКлиенте +Перем ЭтоЗначениеЗаполняетсяПослеЗапускаТеста; +&НаКлиенте +Перем ТекстИсключенияПадающегоТеста; + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; + Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт + НаборТестов.НачатьГруппу("Выполнение тестов"); + НаборТестов.Добавить("ТестДолжен_ПроверитьВызов_ПередЗапускомТеста"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРезультатТестированияУспешныйМетода"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРезультатТестированияПадающегоМетода"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРезультатТестированияОтсутствующегоМетода"); + НаборТестов.Добавить("ТестДолжен_ПроверитьВызов_ПослеЗапускаТеста"); + НаборТестов.Добавить("ТестДолжен_ПроверитьВызов_ПослеЗапускаТеста_УПадающегоТеста"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРезультатТеста_Когда_ПередЗапускаТеста_СОшибкой"); + НаборТестов.Добавить("ТестДолжен_ПроверитьРезультатТеста_Когда_ПослеЗапускаТеста_СОшибкой"); + + НаборТестов.НачатьГруппу("Фильтрация"); + НаборТестов.Добавить("ТестДолжен_ПроверитьВыборочныйЗапускТестов_ФильтрЭлементов"); + НаборТестов.Добавить("ТестДолжен_ПроверитьВыборочныйЗапускТестов_ФильтрКонтейнеров"); + НаборТестов.Добавить("ТестДолжен_ПроверитьВыборочныйЗапускТестов_СмешанныйФильтр"); + + НаборТестов.НачатьГруппу("Статистика"); + НаборТестов.Добавить("ТестДолжен_ПроверитьВРезультатеТестирования_ЗаполнениеСтатистики"); + + НаборТестов.НачатьГруппу("Тесты с параметрами"); + НаборТестов.Добавить("ТестДолжен_ПроверитьВыполнениеТеста_ОдинПараметр"); + НаборТестов.Добавить("ТестДолжен_ПроверитьВыполнениеТеста_НесколькоПараметров"); + + НаборТестов.НачатьГруппу("Режимы выполнения тестов (случайный и строгий)"); + НаборТестов.Добавить("ТестДолжен_Проверить_ЧтоПоУмолчанию_ТестыВыполняютсяВСлучайномПорядке"); + НаборТестов.Добавить("ТестДолжен_Проверить_ЧтоТестыВыполняютсяСтрогоПоПорядку"); + НаборТестов.Добавить("ТестДолжен_Проверить_ЧтоПадениеОдногоТестаВКонтейнереСоСтрогимПорядком_ПриводитКПропускуОставшихсяШагов"); + НаборТестов.Добавить("ТестДолжен_Проверить_ЧтоПадениеОдногоТестаВКонтейнереСоСтрогимПорядком_ПриводитКПропускуДочернихКонтейнеров"); + НаборТестов.Добавить("ТестДолжен_Проверить_ЧтоПадениеТестовВКонтейнереСоСлучайнымПорядком_НеВлияетНаДругиеТестовыеМетоды"); + + НаборТестов.НачатьГруппу("Передача контекста"); + НаборТестов.Добавить("ТестДолжен_ПроверитьПередачуКонтекстаВЗависимыхТестах"); + НаборТестов.Добавить("ТестДолжен_ПроверитьЧтоСохранятьКонтекстМожноТолькоВРамкахКонтейнераСоСтрогимПорядкомВыполнения"); + НаборТестов.Добавить("ТестДолжен_ПроверитьЧтоПолучатьКонтекстМожноТолькоВРамкахКонтейнераСоСтрогимПорядкомВыполнения"); +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗапускомТеста() Экспорт + ЭтоЗначениеЗаполняетсяПередЗапускомТеста = Истина; + ЭтоЗначениеЗаполняетсяПослеЗапускаТеста = Неопределено; +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗапускаТеста() Экспорт + ЭтоЗначениеЗаполняетсяПослеЗапускаТеста = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗапускомТеста_СОшибкой() Экспорт + ВызватьИсключение "ПередЗапускомТеста_СОшибкой"; +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗапускаТеста_СОшибкой() Экспорт + ВызватьИсключение "ПослеЗапускаТеста_СОшибкой"; +КонецПроцедуры + + +// { Выполнение тестов +&НаКлиенте +Процедура ТестДолжен_ПроверитьВызов_ПередЗапускомТеста() Экспорт + Ожидаем.Что(ЭтоЗначениеЗаполняетсяПередЗапускомТеста).ЭтоИстина(); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьРезультатТестированияУспешныйМетода() Экспорт + ДанныеУспешногоТеста = КонтекстЯдра.Плагин("ПостроительДереваТестов").СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + РезультатТестирования = КонтекстЯдра.ВыполнитьТестовыйМетодНаКлиенте(ЭтаФорма, ДанныеУспешногоТеста); + + Ожидаем.Что(РезультатТестирования, "РезультатТестирования").ИмеетТип("Структура"); + Ожидаем.Что(РезультатТестирования.Путь, "РезультатТестирования.Путь").Равно(ДанныеУспешногоТеста.Путь); + Ожидаем.Что(РезультатТестирования.ИмяМетода, "РезультатТестирования.ИмяМетода").Равно(ДанныеУспешногоТеста.ИмяМетода); + Ожидаем.Что(РезультатТестирования.Состояние, "РезультатТестирования.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); + Ожидаем.Что(РезультатТестирования.Сообщение, "РезультатТестирования.Сообщение").Равно(""); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьРезультатТестированияПадающегоМетода() Экспорт + ТекстИсключенияПадающегоТеста = "КАБУМ!!!"; + ДанныеПадающегоТеста = КонтекстЯдра.Плагин("ПостроительДереваТестов").СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "МетодПадающийПоУтверждению"); + РезультатТестирования = КонтекстЯдра.ВыполнитьТестовыйМетодНаКлиенте(ЭтаФорма, ДанныеПадающегоТеста); + + Ожидаем.Что(РезультатТестирования, "РезультатТестирования").ИмеетТип("Структура"); + Ожидаем.Что(РезультатТестирования.Путь, "РезультатТестирования.Путь").Равно(ДанныеПадающегоТеста.Путь); + Ожидаем.Что(РезультатТестирования.ИмяМетода, "РезультатТестирования.ИмяМетода").Равно(ДанныеПадающегоТеста.ИмяМетода); + Ожидаем.Что(РезультатТестирования.Состояние, "РезультатТестирования.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Сломан); + Ожидаем.Что(РезультатТестирования.Сообщение, "РезультатТестирования.Сообщение").Содержит(ТекстИсключенияПадающегоТеста); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьРезультатТестированияОтсутствующегоМетода() Экспорт + ДанныеОтсутствующегоТеста = КонтекстЯдра.Плагин("ПостроительДереваТестов").СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "ОтсутствующийМетод"); + РезультатТестирования = КонтекстЯдра.ВыполнитьТестовыйМетодНаКлиенте(ЭтаФорма, ДанныеОтсутствующегоТеста); + + Ожидаем.Что(РезультатТестирования, "РезультатТестирования").ИмеетТип("Структура"); + Ожидаем.Что(РезультатТестирования.Путь, "РезультатТестирования.Путь").Равно(ДанныеОтсутствующегоТеста.Путь); + Ожидаем.Что(РезультатТестирования.ИмяМетода, "РезультатТестирования.ИмяМетода").Равно(ДанныеОтсутствующегоТеста.ИмяМетода); + Ожидаем.Что(РезультатТестирования.Состояние, "РезультатТестирования.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.НеРеализован); + Ожидаем.Что(РезультатТестирования.Сообщение, "РезультатТестирования.Сообщение").Содержит(ДанныеОтсутствующегоТеста.ИмяМетода); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьВызов_ПослеЗапускаТеста() Экспорт + ДанныеУспешногоТеста = КонтекстЯдра.Плагин("ПостроительДереваТестов").СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + РезультатТестирования = КонтекстЯдра.ВыполнитьТестовыйМетодНаКлиенте(ЭтаФорма, ДанныеУспешногоТеста); + + Ожидаем.Что(ЭтоЗначениеЗаполняетсяПослеЗапускаТеста).ЭтоИстина(); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьВызов_ПослеЗапускаТеста_УПадающегоТеста() Экспорт + ДанныеПадающегоТеста = КонтекстЯдра.Плагин("ПостроительДереваТестов").СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "МетодПадающийПоУтверждению"); + РезультатТестирования = КонтекстЯдра.ВыполнитьТестовыйМетодНаКлиенте(ЭтаФорма, ДанныеПадающегоТеста); + + Ожидаем.Что(РезультатТестирования.Состояние).Равно(КонтекстЯдра.Объект.СостоянияТестов.Сломан); + Ожидаем.Что(ЭтоЗначениеЗаполняетсяПослеЗапускаТеста).ЭтоИстина(); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьРезультатТеста_Когда_ПередЗапускаТеста_СОшибкой() Экспорт + ДанныеУспешногоТеста = КонтекстЯдра.Плагин("ПостроительДереваТестов").СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + ДанныеУспешногоТеста.ПередЗапускомТеста = "ПередЗапускомТеста_СОшибкой"; + + РезультатТестирования = КонтекстЯдра.ВыполнитьТестовыйМетодНаКлиенте(ЭтаФорма, ДанныеУспешногоТеста); + + Ожидаем.Что(РезультатТестирования.Состояние).Равно(КонтекстЯдра.Объект.СостоянияТестов.НеизвестнаяОшибка); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьРезультатТеста_Когда_ПослеЗапускаТеста_СОшибкой() Экспорт + ДанныеУспешногоТеста = КонтекстЯдра.Плагин("ПостроительДереваТестов").СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + ДанныеУспешногоТеста.ПослеЗапускаТеста = "ПослеЗапускаТеста_СОшибкой"; + + РезультатТестирования = КонтекстЯдра.ВыполнитьТестовыйМетодНаКлиенте(ЭтаФорма, ДанныеУспешногоТеста); + + Ожидаем.Что(РезультатТестирования.Состояние).Равно(КонтекстЯдра.Объект.СостоянияТестов.НеизвестнаяОшибка); +КонецПроцедуры +// } Выполнение тестов + +// { Фильтрация +&НаКлиенте +Процедура ТестДолжен_ПроверитьВыборочныйЗапускТестов_ФильтрЭлементов() Экспорт + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); + Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + Элемент3 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + + Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); + Контейнер.Строки.Добавить(Элемент1); + Контейнер.Строки.Добавить(Элемент2); + Контейнер.Строки.Добавить(Элемент3); + + Фильтр = Новый Массив; + Фильтр.Добавить(Элемент2.Ключ); + Фильтр.Добавить(Элемент3.Ключ); + + Ожидаем.Что(КонтекстЯдра.ПолучитьКоличествоТестовыхМетодов(Контейнер, Фильтр), "Общее количество тестовых методов").Равно(Фильтр.Количество()); + + РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Контейнер, Фильтр); + + Ожидаем.Что(РезультатТестирования.Состояние, "Контейнер").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); + Ожидаем.Что(РезультатТестирования.Строки.Количество(), "Количество тестовых методов").Равно(Фильтр.Количество()); + + РезультатТеста_Элемент1 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТестирования, Элемент1.Ключ); + Ожидаем.Что(РезультатТеста_Элемент1, "РезультатТеста_Элемент1").ЭтоНеопределено(); + + РезультатТеста_Элемент2 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТестирования, Элемент2.Ключ); + Ожидаем.Что(РезультатТеста_Элемент2.Ключ, "Тест2.Ключ").Равно(Элемент2.Ключ); + Ожидаем.Что(РезультатТеста_Элемент2.Состояние, "Тест2 Пройден").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); + + РезультатТеста_Элемент3 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТестирования, Элемент3.Ключ); + Ожидаем.Что(РезультатТеста_Элемент3.Ключ, "Тест3.Ключ").Равно(Элемент3.Ключ); + Ожидаем.Что(РезультатТеста_Элемент3.Состояние, "Тест3 Пройден").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьВыборочныйЗапускТестов_ФильтрКонтейнеров() Экспорт + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); + Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + Элемент3 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + + Контейнер1 = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер1"); + Контейнер1.Строки.Добавить(Элемент1); + + Контейнер2 = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер2"); + Контейнер2.Строки.Добавить(Элемент2); + + Контейнер3 = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер3"); + Контейнер3.Строки.Добавить(Элемент3); + + Корень = ПостроительДереваТестов.СоздатьКонтейнер("Корень"); + Корень.Строки.Добавить(Контейнер1); + Корень.Строки.Добавить(Контейнер2); + Корень.Строки.Добавить(Контейнер3); + + Фильтр = Новый Массив; + Фильтр.Добавить(Контейнер2.Ключ); + Фильтр.Добавить(Контейнер3.Ключ); + + Ожидаем.Что(КонтекстЯдра.ПолучитьКоличествоТестовыхМетодов(Корень, Фильтр), "Общее количество тестовых методов").Равно(2); + + РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Корень, Фильтр); + + Ожидаем.Что(РезультатТестирования.Ключ, "Корень.Ключ").Равно(Корень.Ключ); + Ожидаем.Что(РезультатТестирования.Состояние, "Корень.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); + Ожидаем.Что(РезультатТестирования.Строки.Количество(), "Количество дочерних узлов").Равно(Фильтр.Количество()); + + РезультатТеста_Контейнер1 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТестирования, Контейнер1.Ключ); + Ожидаем.Что(РезультатТеста_Контейнер1, "РезультатТеста_Контейнер1").ЭтоНеопределено(); + + РезультатТеста_Контейнер2 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТестирования, Контейнер2.Ключ); + Ожидаем.Что(РезультатТеста_Контейнер2.Ключ, "Контейнер2.Ключ").Равно(Контейнер2.Ключ); + Ожидаем.Что(РезультатТеста_Контейнер2.Состояние, "Контейнер2.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); + Ожидаем.Что(РезультатТеста_Контейнер2.Строки[0].Ключ, "Контейнер2.Элемент2.Ключ").Равно(Элемент2.Ключ); + Ожидаем.Что(РезультатТеста_Контейнер2.Строки[0].Состояние, "Контейнер2.Элемент2.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); + + РезультатТеста_Контейнер3 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТестирования, Контейнер3.Ключ); + Ожидаем.Что(РезультатТеста_Контейнер3.Ключ, "Контейнер3.Ключ").Равно(Контейнер3.Ключ); + Ожидаем.Что(РезультатТеста_Контейнер3.Состояние, "Контейнер2.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); + Ожидаем.Что(РезультатТеста_Контейнер3.Строки[0].Ключ, "Контейнер3.Элемент3.Ключ").Равно(Элемент3.Ключ); + Ожидаем.Что(РезультатТеста_Контейнер3.Строки[0].Состояние, "Контейнер3.Элемент3.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьВыборочныйЗапускТестов_СмешанныйФильтр() Экспорт + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); + Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + Элемент3 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + + Контейнер1 = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер1"); + Контейнер1.Строки.Добавить(Элемент1); + Контейнер1.Строки.Добавить(Элемент2); + + Контейнер2 = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер2"); + Контейнер2.Строки.Добавить(Элемент3); + + Корень = ПостроительДереваТестов.СоздатьКонтейнер("Корень"); + Корень.Строки.Добавить(Контейнер1); + Корень.Строки.Добавить(Контейнер2); + + Фильтр = Новый Массив; + Фильтр.Добавить(Элемент2.Ключ); + Фильтр.Добавить(Контейнер2.Ключ); + + Ожидаем.Что(КонтекстЯдра.ПолучитьКоличествоТестовыхМетодов(Корень, Фильтр), "Общее количество тестовых методов").Равно(2); + + РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Корень, Фильтр); + + Ожидаем.Что(РезультатТестирования.Ключ, "Корень.Ключ").Равно(Корень.Ключ); + Ожидаем.Что(РезультатТестирования.Состояние, "Корень.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); + Ожидаем.Что(РезультатТестирования.Строки.Количество(), "Количество дочерних узлов").Равно(2); + + РезультатТеста_Контейнер1 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТестирования, Контейнер1.Ключ); + Ожидаем.Что(РезультатТеста_Контейнер1.Ключ, "Контейнер1.Ключ").Равно(Контейнер1.Ключ); + Ожидаем.Что(РезультатТеста_Контейнер1.Состояние, "Контейнер1.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); + Ожидаем.Что(РезультатТеста_Контейнер1.Строки.Количество(), "Контейнер1 количество дочерних узлов").Равно(1); + РезультатТеста_Элемент1 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТеста_Контейнер1, Элемент1.Ключ); + Ожидаем.Что(РезультатТеста_Элемент1, "РезультатТеста_Элемент1").ЭтоНеопределено(); + РезультатТеста_Элемент2 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТеста_Контейнер1, Элемент2.Ключ); + Ожидаем.Что(РезультатТеста_Элемент2.Ключ, "Контейнер1.Элемент2.Ключ").Равно(Элемент2.Ключ); + Ожидаем.Что(РезультатТеста_Элемент2.Состояние, "Контейнер1.Элемент2.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); + + РезультатТеста_Контейнер2 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТестирования, Контейнер2.Ключ); + Ожидаем.Что(РезультатТеста_Контейнер2.Ключ, "Контейнер2.Ключ").Равно(Контейнер2.Ключ); + Ожидаем.Что(РезультатТеста_Контейнер2.Состояние, "Контейнер2.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); + РезультатТеста_Элемент3 = КонтекстЯдра.НайтиРезультатТестированияПоИдентификатору(РезультатТеста_Контейнер2, Элемент3.Ключ); + Ожидаем.Что(РезультатТеста_Элемент3.Ключ, "Контейнер2.Элемент3.Ключ").Равно(Элемент3.Ключ); + Ожидаем.Что(РезультатТеста_Элемент3.Состояние, "Контейнер2.Элемент3.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); +КонецПроцедуры +// } Фильтрация + +// { Статистика +&НаКлиенте +Процедура ТестДолжен_ПроверитьВРезультатеТестирования_ЗаполнениеСтатистики() Экспорт + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); + УспешныйЭлемент = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + ПадающийЭлемент = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "МетодПадающийПоУтверждению"); + ОтсутствующийЭлемент = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "ОтсутствующийМетод"); + + Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); + Контейнер.Строки.Добавить(УспешныйЭлемент); + Контейнер.Строки.Добавить(ПадающийЭлемент); + Контейнер.Строки.Добавить(ОтсутствующийЭлемент); + + Ожидаем.Что(КонтекстЯдра.ПолучитьКоличествоТестовыхМетодов(Контейнер), "Общее количество тестовых методов").Равно(Контейнер.Строки.Количество()); + + РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Контейнер); + + Ожидаем.Что(РезультатТестирования.КоличествоТестов).Равно(Контейнер.Строки.Количество()); + Ожидаем.Что(РезультатТестирования.КоличествоСломанныхТестов).Равно(1); + Ожидаем.Что(РезультатТестирования.КоличествоНеРеализованныхТестов).Равно(1); + Ожидаем.Что(РезультатТестирования.ВремяВыполнения).Существует(); +КонецПроцедуры +// } Статистика + +// { Тесты с параметрами +&НаКлиенте +Процедура ТестДолжен_ПроверитьВыполнениеТеста_ОдинПараметр() Экспорт + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); + + Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "ТестСложенияСОднимПараметром"); + Элемент1.Параметры.Добавить(Новый Структура("Значение1, Значение2, Результат", 1, 5, 6)); + + Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "ТестСложенияСОднимПараметром"); + Элемент2.Параметры.Добавить(Новый Структура("Значение1, Значение2, Результат", "Раз", "-Два", "Раз-Два")); + + Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); + Контейнер.Строки.Добавить(Элемент1); + Контейнер.Строки.Добавить(Элемент2); + + РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Контейнер); + + Ожидаем.Что(РезультатТестирования.Состояние, "Состояние всех результатов тестирования").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); + Ожидаем.Что(РезультатТестирования.КоличествоТестов).Равно(Контейнер.Строки.Количество()); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьВыполнениеТеста_НесколькоПараметров() Экспорт + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); + + Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "ТестСложенияСНесколькимиПараметрами"); + Элемент1.Параметры.Добавить(1); + Элемент1.Параметры.Добавить(5); + Элемент1.Параметры.Добавить(6); + + Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "ТестСложенияСНесколькимиПараметрами"); + Элемент2.Параметры.Добавить("Раз"); + Элемент2.Параметры.Добавить("-Два"); + Элемент2.Параметры.Добавить("Раз-Два"); + + Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); + Контейнер.Строки.Добавить(Элемент1); + Контейнер.Строки.Добавить(Элемент2); + + РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Контейнер); + + Ожидаем.Что(РезультатТестирования.Состояние, "Состояние всех результатов тестирования").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); + Ожидаем.Что(РезультатТестирования.КоличествоТестов).Равно(Контейнер.Строки.Количество()); +КонецПроцедуры +// } Тесты с параметрами + +// { Режимы выполнения тестов (случайный и строгий) +&НаКлиенте +Процедура ТестДолжен_Проверить_ЧтоПоУмолчанию_ТестыВыполняютсяВСлучайномПорядке() Экспорт + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); + Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + Элемент3 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + + Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); + Контейнер.Строки.Добавить(Элемент1); + Контейнер.Строки.Добавить(Элемент2); + Контейнер.Строки.Добавить(Элемент3); + + МаксимальноеКоличествоПопыток = 100; + Для Сч = 1 По МаксимальноеКоличествоПопыток Цикл + РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Контейнер); + Если РезультатТестирования.Строки[0].Ключ <> Элемент1.Ключ Тогда + Прервать; + КонецЕсли; + КонецЦикла; + Ожидаем.Что(Сч, "Порядок в результатах тестирования должен отличаться от порядка в дереве тестов").Меньше(МаксимальноеКоличествоПопыток); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_Проверить_ЧтоТестыВыполняютсяСтрогоПоПорядку() Экспорт + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); + Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + Элемент3 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + + Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); + Контейнер.СлучайныйПорядокВыполнения = Ложь; + Контейнер.Строки.Добавить(Элемент1); + Контейнер.Строки.Добавить(Элемент2); + Контейнер.Строки.Добавить(Элемент3); + + РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Контейнер); + + Ожидаем.Что(РезультатТестирования.Строки[0].Ключ, "Элемент1").Равно(Элемент1.Ключ); + Ожидаем.Что(РезультатТестирования.Строки[1].Ключ, "Элемент2").Равно(Элемент2.Ключ); + Ожидаем.Что(РезультатТестирования.Строки[2].Ключ, "Элемент3").Равно(Элемент3.Ключ); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_Проверить_ЧтоПадениеОдногоТестаВКонтейнереСоСтрогимПорядком_ПриводитКПропускуОставшихсяШагов() Экспорт + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); + Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "МетодПадающийПоУтверждению"); + Элемент3 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + + Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); + Контейнер.СлучайныйПорядокВыполнения = Ложь; + Контейнер.Строки.Добавить(Элемент1); + Контейнер.Строки.Добавить(Элемент2); + Контейнер.Строки.Добавить(Элемент3); + + РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Контейнер); + + Ожидаем.Что(РезультатТестирования.Строки).ИмеетДлину(2); + Ожидаем.Что(РезультатТестирования.Строки[1].Ключ, "Элемент2.Ключ").Равно(Элемент2.Ключ); + Ожидаем.Что(РезультатТестирования.Строки[1].Состояние, "Элемент2.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Сломан); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_Проверить_ЧтоПадениеОдногоТестаВКонтейнереСоСтрогимПорядком_ПриводитКПропускуДочернихКонтейнеров() Экспорт + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); + Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "МетодПадающийПоУтверждению"); + Элемент3 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + + ДочернийКонтейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); + ДочернийКонтейнер.Строки.Добавить(Элемент3); + + Корень = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); + Корень.СлучайныйПорядокВыполнения = Ложь; + Корень.Строки.Добавить(Элемент1); + Корень.Строки.Добавить(Элемент2); + Корень.Строки.Добавить(ДочернийКонтейнер); + + РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Корень); + + Ожидаем.Что(РезультатТестирования.Строки).ИмеетДлину(2); + Ожидаем.Что(РезультатТестирования.Строки[1].Ключ, "Элемент2.Ключ").Равно(Элемент2.Ключ); + Ожидаем.Что(РезультатТестирования.Строки[1].Состояние, "Элемент2.Состояние").Равно(КонтекстЯдра.Объект.СостоянияТестов.Сломан); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_Проверить_ЧтоПадениеТестовВКонтейнереСоСлучайнымПорядком_НеВлияетНаДругиеТестовыеМетоды() Экспорт + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); + Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "МетодПадающийПоУтверждению"); + Элемент3 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "УспешныйМетод"); + + Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); + Контейнер.Строки.Добавить(Элемент1); + Контейнер.Строки.Добавить(Элемент2); + Контейнер.Строки.Добавить(Элемент3); + + РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Контейнер); + + Ожидаем.Что(РезультатТестирования.Строки).ИмеетДлину(3); +КонецПроцедуры +// } Режимы выполнения тестов (случайный и строгий) + +// { Передача контекста +&НаКлиенте +Процедура ТестДолжен_ПроверитьПередачуКонтекстаВЗависимыхТестах() Экспорт + ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); + + Элемент1 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "ТестСохраняющийКонтекст_ПервоеЗначение"); + Элемент1.Параметры.Добавить(5); + + Элемент2 = ПостроительДереваТестов.СоздатьЭлемент(ПолучитьИспользуемоеИмяФайла(), "ТестИспользующийКонтекст_СуммируетПервоеЗначениеВтороеЗначениеИПроверяетРезультат"); + Элемент2.Параметры.Добавить(7); + Элемент2.Параметры.Добавить(12); + + Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); + Контейнер.СлучайныйПорядокВыполнения = Ложь; + Контейнер.Строки.Добавить(Элемент1); + Контейнер.Строки.Добавить(Элемент2); + + РезультатТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикЗаглушка(), Контейнер); + + Ожидаем.Что(РезультатТестирования.Состояние, "Состояние всех результатов тестирования").Равно(КонтекстЯдра.Объект.СостоянияТестов.Пройден); + Ожидаем.Что(РезультатТестирования.КоличествоТестов).Равно(Контейнер.Строки.Количество()); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьЧтоСохранятьКонтекстМожноТолькоВРамкахКонтейнераСоСтрогимПорядкомВыполнения() Экспорт + // Ожидаем, что этот контейнер со случайным порядком выполнения + ОписаниеОшибки = ""; + Попытка + КонтекстЯдра.СохранитьКонтекст(Истина); + Исключение + ОписаниеОшибки = ОписаниеОшибки(); + КонецПопытки; + Ожидаем.Что(ОписаниеОшибки).Заполнено().Содержит(КонтекстЯдра.Объект.ВозможныеИсключения.СохранятьКонтекстТолькоВСтрогомРежиме); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ПроверитьЧтоПолучатьКонтекстМожноТолькоВРамкахКонтейнераСоСтрогимПорядкомВыполнения() Экспорт + // Ожидаем, что этот контейнер со случайным порядком выполнения + ОписаниеОшибки = ""; + Попытка + КонтекстЯдра.ПолучитьКонтекст(); + Исключение + ОписаниеОшибки = ОписаниеОшибки(); + КонецПопытки; + Ожидаем.Что(ОписаниеОшибки).Заполнено().Содержит(КонтекстЯдра.Объект.ВозможныеИсключения.ПолучатьКонтекстТолькоВСтрогомРежиме); +КонецПроцедуры +// } Передача контекста + +// Методы нужные для тестов +&НаКлиенте +Функция ЗагрузчикЗаглушка() + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) Экспорт + Возврат ЭтаФорма; +КонецФункции + +&НаКлиенте +Процедура УспешныйМетод() Экспорт +КонецПроцедуры + +&НаКлиенте +Процедура МетодПадающийПоУтверждению() Экспорт + КонтекстЯдра.ВызватьОшибкуПроверки(ТекстИсключенияПадающегоТеста); + //ВызватьИсключение ТекстИсключенияПадающегоТеста; +КонецПроцедуры + +&НаКлиенте +Процедура ТестСложенияСОднимПараметром(Параметры) Экспорт + Ожидаем.Что(Параметры.Значение1 + Параметры.Значение2).Равно(Параметры.Результат); +КонецПроцедуры + +&НаКлиенте +Процедура ТестСложенияСНесколькимиПараметрами(Слагаемое1, Слагаемое2, Результат) Экспорт + Ожидаем.Что(Слагаемое1 + Слагаемое2).Равно(Результат); +КонецПроцедуры + +&НаКлиенте +Процедура ТестСохраняющийКонтекст_ПервоеЗначение(ПервоеЗначение) Экспорт + КонтекстЯдра.СохранитьКонтекст(ПервоеЗначение); +КонецПроцедуры + +&НаКлиенте +Процедура ТестИспользующийКонтекст_СуммируетПервоеЗначениеВтороеЗначениеИПроверяетРезультат(ВтороеЗначение, Результат) Экспорт + ПервоеЗначение = КонтекстЯдра.ПолучитьКонтекст(); + Ожидаем.Что(ПервоеЗначение + ВтороеЗначение).Равно(Результат); +КонецПроцедуры + +// { Helpers +&НаСервере +Функция ПолучитьИспользуемоеИмяФайла() + ОбъектНаСервере = РеквизитФормыВЗначение("Объект"); + + Возврат ОбъектНаСервере.ИспользуемоеИмяФайла; +КонецФункции +// } Helpers diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262/ObjectModule.txt" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262/ObjectModule.bsl" similarity index 100% rename from "src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262/ObjectModule.txt" rename to "src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262/ObjectModule.bsl" diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262/maps.txt" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262/maps.txt" new file mode 100644 index 00000000..8457fa4c --- /dev/null +++ "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262/maps.txt" @@ -0,0 +1 @@ +Form\Форма\Форма.bsl-->e5fbc1d4-eed7-46d9-a13c-452a58fe1608.0 (29, 593) diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262/renames.txt" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262/renames.txt" index ffe7d44e..76239310 100644 --- "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262/renames.txt" +++ "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262/renames.txt" @@ -1,10 +1,8 @@ a31e3430-60a3-4301-a1fd-1f37bd23d7a2.0\info-->und\a31e3430-60a3-4301-a1fd-1f37bd23d7a2.0\info -a31e3430-60a3-4301-a1fd-1f37bd23d7a2.0\text-->ObjectModule.txt +a31e3430-60a3-4301-a1fd-1f37bd23d7a2.0\text-->ObjectModule.bsl b414f1d2-8dfc-4870-bc3d-6ba92ce89edc-->und\b414f1d2-8dfc-4870-bc3d-6ba92ce89edc copyinfo-->und\copyinfo e5fbc1d4-eed7-46d9-a13c-452a58fe1608-->und\e5fbc1d4-eed7-46d9-a13c-452a58fe1608 -e5fbc1d4-eed7-46d9-a13c-452a58fe1608.0-->C:\Projects\GitHub\xUnitFor1C\src\Tests\Core\Тесты_ВыполнениеТестов\Form\Форма\Форма.txt -e5fbc1d4-eed7-46d9-a13c-452a58fe1608.0-->und\e5fbc1d4-eed7-46d9-a13c-452a58fe1608.0 e5fbc1d4-eed7-46d9-a13c-452a58fe1608.0-->und\e5fbc1d4-eed7-46d9-a13c-452a58fe1608.0 root-->und\root version-->und\version diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/ObjectModule.txt" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/ObjectModule.bsl" similarity index 85% rename from "src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/ObjectModule.txt" rename to "src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/ObjectModule.bsl" index 55184723..e87e4380 100644 --- "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/ObjectModule.txt" +++ "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/ObjectModule.bsl" @@ -6,6 +6,11 @@ Перем ФайлЛогаUI; Перем ФайлСОтчетомОТестировании; +// Переменная с путем к обработке в файловой системы +// Используется в случаях, когда обработка запущена из встроенного в конфигурацию браузера тестов, +// т.к. в этом случае в свойстве ИспользуемоеИмяФайла содержится адрес временного хранилища, а не непосредственный путь +Перем ПутьКФайлуПолный Экспорт; + Процедура Инициализация(КонтекстЯдраПараметр) Экспорт КонтекстЯдра = КонтекстЯдраПараметр; Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); @@ -14,6 +19,15 @@ Функция ПолучитьСписокТестов() Экспорт ВсеТесты = Новый Массив; + + // Для встроенной в состав конфигурации подсистемы xUnitFor1C тесты еще не адаптированы + Попытка // На случай, если контекст не определен на момент получения тестов + Если КонтекстЯдра.ЭтоВстроеннаяОбработка Тогда + Возврат ВсеТесты; + КонецЕсли; + Исключение + КонецПопытки; + // Позитивные ВсеТесты.Добавить("ТестДолжен_ПроверитьЗапускВПакетномРежиме_ТолстыйКлиент"); ВсеТесты.Добавить("ТестДолжен_ПроверитьЗапускВПакетномРежиме_ТонкийКлиент"); @@ -27,6 +41,10 @@ КонецФункции Процедура ПередЗапускомТеста() Экспорт + Если КонтекстЯдра.ЭтоВстроеннаяОбработка Тогда + ВызватьИсключение "[Pending] Тестирование пакетного запуска не реализовано для встроенной в конфигурацию подсистемы"; + КонецЕсли; + ИмяКаталогаВременныхФайлов = ПолучитьИмяВременногоФайла(); СоздатьКаталог(ИмяКаталогаВременныхФайлов); @@ -35,7 +53,11 @@ КонецПроцедуры Процедура ПослеЗапускаТеста() Экспорт - УдалитьФайлы(ИмяКаталогаВременныхФайлов); + Попытка + УдалитьФайлы(ИмяКаталогаВременныхФайлов); + Исключение + // При ошибке удаления временного файла не считаем тест проваленым + КонецПопытки; КонецПроцедуры Процедура ТестДолжен_ПроверитьЗапускВПакетномРежиме_ТолстыйКлиент() Экспорт @@ -49,8 +71,14 @@ КонецПроцедуры Функция ПолучитьФайлСТестами(ОтносительныйПуть) - ФайлЯдра = Новый Файл(КонтекстЯдра.ИспользуемоеИмяФайла); - ФайлСТестами = Новый Файл(ФайлЯдра.Путь + ОтносительныйПуть); + + Если КонтекстЯдра.ЭтоВстроеннаяОбработка Тогда + ФайлЯдра = Новый Файл(ПутьКФайлуПолный); + ФайлСТестами = Новый Файл(ФайлЯдра.Путь + ОтносительныйПуть); + Иначе + ФайлЯдра = Новый Файл(КонтекстЯдра["ИспользуемоеИмяФайла"]); + ФайлСТестами = Новый Файл(ФайлЯдра.Путь + ОтносительныйПуть); + КонецЕсли; Возврат ФайлСТестами; КонецФункции @@ -75,7 +103,7 @@ СтрокаКоманды = СтрокаКоманды + ВсякиеКлючи; СтрокаКоманды = СтрокаКоманды + СтрокаРежимЗапуска; СтрокаКоманды = СтрокаКоманды + СтрокаСоединения; - СтрокаКоманды = СтрокаКоманды + " /Execute " + КонтекстЯдра.ИспользуемоеИмяФайла; + СтрокаКоманды = СтрокаКоманды + " /Execute " + КонтекстЯдра["ИспользуемоеИмяФайла"]; СтрокаКоманды = СтрокаКоманды + СтрокаЛогированияUI; СтрокаКоманды = СтрокаКоманды + СтрокаПараметров; diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/renames.txt" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/renames.txt" index 05014afd..e990286d 100644 --- "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/renames.txt" +++ "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/renames.txt" @@ -1,6 +1,6 @@ 0782d8f3-61cb-4919-b6a8-2392febc953a-->und\0782d8f3-61cb-4919-b6a8-2392febc953a 7ecade93-aad4-4a6e-bf69-9254664a2793.0\info-->und\7ecade93-aad4-4a6e-bf69-9254664a2793.0\info -7ecade93-aad4-4a6e-bf69-9254664a2793.0\text-->ObjectModule.txt +7ecade93-aad4-4a6e-bf69-9254664a2793.0\text-->ObjectModule.bsl copyinfo-->und\copyinfo root-->und\root version-->und\version diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/und/versions" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/und/versions" index 6be3caa2..4d046c33 100644 --- "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/und/versions" +++ "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\277\321\203\321\201\320\272\320\222\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\274\320\240\320\265\320\266\320\270\320\274\320\265/und/versions" @@ -1 +1 @@ -{1,7,"",7de5a137-6c6b-4346-80a4-53917bdf4fcb,"root",6afa99fe-ba97-4549-88a0-25eb1510ea51,"copyinfo",b3fa4c0f-be15-4ff3-baa7-996a52055595,"0782d8f3-61cb-4919-b6a8-2392febc953a",873f8382-f1f8-41de-a15f-bf49a951da0b,"versions",ef7098d1-36e6-4c9c-99d4-ee71b795b77d,"7ecade93-aad4-4a6e-bf69-9254664a2793.0",498e511b-420d-429f-b4c3-0ee82a0a9d71,"version",87b2c642-8586-4c40-a71d-7dd59f351fbe} \ No newline at end of file +{1,7,"",bb4911e9-a04d-44c8-80c6-1bdba815f2ce,"root",b8cb2700-e017-4204-82cf-8efab1ec31c5,"0782d8f3-61cb-4919-b6a8-2392febc953a",91a1227d-b27b-40f0-a20b-eb1ea2edf988,"versions",9ad141c0-311e-472b-bc9b-c789c6d3ab3d,"copyinfo",97643ec1-b58a-4bc6-bfd3-4a3967ef35ee,"7ecade93-aad4-4a6e-bf69-9254664a2793.0",d3b6aca5-d66a-4335-8558-aa198a3d1387,"version",04e19041-babb-4756-b302-bfd4f3c1fe08} \ No newline at end of file diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" similarity index 78% rename from "src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" rename to "src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" index 7b63dbf4..756da626 100644 --- "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -29,8 +29,12 @@ ЗагрузчикТестов = КонтекстЯдра.ЗагрузчикПоУмолчанию(); ВозможныеТипыПлагинов = КонтекстЯдра.Объект.ТипыПлагинов; ОписаниеПлагина = ЗагрузчикТестов.ОписаниеПлагина(ВозможныеТипыПлагинов); + + // Убираем из идентификатора префикс подсистемы + ИдентификаторПлагинаБезПрефикса = КонтекстЯдра.ПолучитьИдентификаторБезПрефиксаПодсистемы(ОписаниеПлагина.Идентификатор, КонтекстЯдра.Объект.ИспользуемыйПрефиксПодсистемы); + Утверждения.ПроверитьРавенство(ОписаниеПлагина.Тип, ВозможныеТипыПлагинов.Загрузчик, "ОписаниеПлагина.Тип, юТест.ТипыПлагинов().Загрузчик"); - Утверждения.ПроверитьРавенство(ОписаниеПлагина.Идентификатор, "ЗагрузчикКаталога", "ОписаниеПлагина.Идентификатор"); + Утверждения.ПроверитьРавенство(ИдентификаторПлагинаБезПрефикса, "ЗагрузчикКаталога", "ОписаниеПлагина.Идентификатор"); Утверждения.ПроверитьРавенство(ОписаниеПлагина.Представление, "Загрузить тесты из каталога файловой системы", "ОписаниеПлагина.Представление"); КонецПроцедуры // } Plugin interface @@ -41,8 +45,12 @@ ЗагрузчикТестов = КонтекстЯдра.Плагин("ЗагрузчикФайла"); ВозможныеТипыПлагинов = КонтекстЯдра.Объект.ТипыПлагинов; ОписаниеПлагина = ЗагрузчикТестов.ОписаниеПлагина(ВозможныеТипыПлагинов); + + // Убираем из идентификатора префикс подсистемы + ИдентификаторПлагинаБезПрефикса = КонтекстЯдра.ПолучитьИдентификаторБезПрефиксаПодсистемы(ОписаниеПлагина.Идентификатор, КонтекстЯдра.Объект.ИспользуемыйПрефиксПодсистемы); + Утверждения.ПроверитьРавенство(ОписаниеПлагина.Тип, ВозможныеТипыПлагинов.Загрузчик, "ОписаниеПлагина.Тип, юТест.ТипыПлагинов().Загрузчик"); - Утверждения.ПроверитьРавенство(ОписаниеПлагина.Идентификатор, "ЗагрузчикФайла", "ОписаниеПлагина.Идентификатор"); + Утверждения.ПроверитьРавенство(ИдентификаторПлагинаБезПрефикса, "ЗагрузчикФайла", "ОписаниеПлагина.Идентификатор"); Утверждения.ПроверитьРавенство(ОписаниеПлагина.Представление, "Загрузить тесты из файлов", "ОписаниеПлагина.Представление"); КонецПроцедуры diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/ObjectModule.txt" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/ObjectModule.bsl" similarity index 89% rename from "src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/ObjectModule.txt" rename to "src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/ObjectModule.bsl" index 625368d2..3eab7b07 100644 --- "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/ObjectModule.txt" +++ "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/ObjectModule.bsl" @@ -21,8 +21,12 @@ Процедура ТестДолжен_ПроверитьПолучениеПлагинаПоИдентификатору() Экспорт ЗагрузчикТестов = КонтекстЯдра.Плагин("ЗагрузчикФайла"); ОписаниеПлагина = ЗагрузчикТестов.ОписаниеПлагина(КонтекстЯдра.ТипыПлагинов); + + // Убираем из идентификатора префикс подсистемы + ИдентификаторПлагинаБезПрефикса = КонтекстЯдра.ПолучитьИдентификаторБезПрефиксаПодсистемы(ОписаниеПлагина.Идентификатор); + Утверждения.ПроверитьРавенство(ОписаниеПлагина.Тип, КонтекстЯдра.ТипыПлагинов.Загрузчик, "ОписаниеПлагина.Тип, КонтекстЯдра.ТипыПлагинов.Загрузчик"); - Утверждения.ПроверитьРавенство(ОписаниеПлагина.Идентификатор, "ЗагрузчикФайла", "ОписаниеПлагина.Идентификатор"); + Утверждения.ПроверитьРавенство(ИдентификаторПлагинаБезПрефикса, "ЗагрузчикФайла", "ОписаниеПлагина.Идентификатор"); Утверждения.ПроверитьРавенство(ОписаниеПлагина.Представление, "Загрузить тесты из файлов", "ОписаниеПлагина.Представление"); КонецПроцедуры diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/maps.txt" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/maps.txt" new file mode 100644 index 00000000..99f223b8 --- /dev/null +++ "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/maps.txt" @@ -0,0 +1 @@ +Form\Форма\Форма.bsl-->4d520461-35ba-47cf-9306-350af5d1d5d8.0 (50, 120) diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/renames.txt" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/renames.txt" index 10d67c5a..0608696b 100644 --- "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/renames.txt" +++ "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/renames.txt" @@ -1,11 +1,9 @@ 421a27d5-c2f1-4844-86c0-c04fb5a1001f-->und\421a27d5-c2f1-4844-86c0-c04fb5a1001f 4d520461-35ba-47cf-9306-350af5d1d5d8-->und\4d520461-35ba-47cf-9306-350af5d1d5d8 -4d520461-35ba-47cf-9306-350af5d1d5d8.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Core\Тесты_СистемаПлагинов\Form\Форма\Форма.txt -4d520461-35ba-47cf-9306-350af5d1d5d8.0-->und\4d520461-35ba-47cf-9306-350af5d1d5d8.0 4d520461-35ba-47cf-9306-350af5d1d5d8.0-->und\4d520461-35ba-47cf-9306-350af5d1d5d8.0 copyinfo-->und\copyinfo ee4ff151-9500-4966-9c18-8499b60534d0.0\info-->und\ee4ff151-9500-4966-9c18-8499b60534d0.0\info -ee4ff151-9500-4966-9c18-8499b60534d0.0\text-->ObjectModule.txt +ee4ff151-9500-4966-9c18-8499b60534d0.0\text-->ObjectModule.bsl root-->und\root version-->und\version versions-->und\versions diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/und/421a27d5-c2f1-4844-86c0-c04fb5a1001f" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/und/421a27d5-c2f1-4844-86c0-c04fb5a1001f" index 051766b0..0b6ac8ea 100644 --- "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/und/421a27d5-c2f1-4844-86c0-c04fb5a1001f" +++ "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/und/421a27d5-c2f1-4844-86c0-c04fb5a1001f" @@ -4,9 +4,9 @@ {1, {4,cd570446-fb13-4855-bb0e-5695a8e88940,7153cfd0-e9c6-4a51-b1f3-0db42c9f1c9a, {0, -{0, +{1, {0,0,ee4ff151-9500-4966-9c18-8499b60534d0},"Тесты_СистемаПлагинов", -{1,"ru","Тесты система плагинов"},""} +{1,"ru","Тесты система плагинов"},"",0,0} },4d520461-35ba-47cf-9306-350af5d1d5d8,"",00000000-0000-0000-0000-000000000000},4, {2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, {3daea016-69b7-4ed4-9453-127911372fe6,0}, diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/und/4d520461-35ba-47cf-9306-350af5d1d5d8" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/und/4d520461-35ba-47cf-9306-350af5d1d5d8" index d5d2147d..1185bbd7 100644 --- "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/und/4d520461-35ba-47cf-9306-350af5d1d5d8" +++ "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/und/4d520461-35ba-47cf-9306-350af5d1d5d8" @@ -2,9 +2,9 @@ {1, {0, {12, -{0, +{1, {0,0,4d520461-35ba-47cf-9306-350af5d1d5d8},"Форма", -{1,"ru","Форма"},""},0,1, +{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1, {2, {"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, {"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/und/4d520461-35ba-47cf-9306-350af5d1d5d8.0" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/und/4d520461-35ba-47cf-9306-350af5d1d5d8.0" index 776e467c..44559f98 100644 --- "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/und/4d520461-35ba-47cf-9306-350af5d1d5d8.0" +++ "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/und/4d520461-35ba-47cf-9306-350af5d1d5d8.0" @@ -1,9 +1,9 @@ -{2, -{36,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, +{3, +{42,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, {1,0},0,0,1,1,1,0,1,0, -{0}, +{0,0,0}, {0},1, -{19, +{21, {-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -16,8 +16,8 @@ }, {7,3,0,1,100}, {0,0,0},1, -{0,0,1},0,1,0,0},0,"","",1, -{19, +{0,0,1},0,1,0,0,0,3,3},0,"","",1, +{21, {0},0,0,0,7,"Navigator", {1,0}, {1,0},0,1,0,0,0,2,2, @@ -26,7 +26,7 @@ }, {7,3,0,1,100}, {0,0,0},0,0,1,0,1, -{8, +{10, {0},0,0,0,0,"NavigatorExtendedTooltip", {1,0}, {1,0},1,0,0,2,2, @@ -36,7 +36,7 @@ {7,3,0,1,100}, {0,0,0},1, {5,0,0,3,0, -{0}, +{0,0,0}, {3,4, {0} }, @@ -47,8 +47,7 @@ {0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} },0,1,2, {1, -{1,0},0},0,0} -},1,"",2,0},"&НаКлиенте +{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,"",2,0,0,0,0,0,3,3,0,0,2},"&НаКлиенте Перем КонтекстЯдра; &НаКлиенте Перем Утверждения; @@ -79,8 +78,12 @@ ЗагрузчикТестов = КонтекстЯдра.ЗагрузчикПоУмолчанию(); ВозможныеТипыПлагинов = КонтекстЯдра.Объект.ТипыПлагинов; ОписаниеПлагина = ЗагрузчикТестов.ОписаниеПлагина(ВозможныеТипыПлагинов); + + // Убираем из идентификатора префикс подсистемы + ИдентификаторПлагинаБезПрефикса = КонтекстЯдра.ПолучитьИдентификаторБезПрефиксаПодсистемы(ОписаниеПлагина.Идентификатор, КонтекстЯдра.Объект.ИспользуемыйПрефиксПодсистемы); + Утверждения.ПроверитьРавенство(ОписаниеПлагина.Тип, ВозможныеТипыПлагинов.Загрузчик, ""ОписаниеПлагина.Тип, юТест.ТипыПлагинов().Загрузчик""); - Утверждения.ПроверитьРавенство(ОписаниеПлагина.Идентификатор, ""ЗагрузчикКаталога"", ""ОписаниеПлагина.Идентификатор""); + Утверждения.ПроверитьРавенство(ИдентификаторПлагинаБезПрефикса, ""ЗагрузчикКаталога"", ""ОписаниеПлагина.Идентификатор""); Утверждения.ПроверитьРавенство(ОписаниеПлагина.Представление, ""Загрузить тесты из каталога файловой системы"", ""ОписаниеПлагина.Представление""); КонецПроцедуры // } Plugin interface @@ -91,8 +94,12 @@ ЗагрузчикТестов = КонтекстЯдра.Плагин(""ЗагрузчикФайла""); ВозможныеТипыПлагинов = КонтекстЯдра.Объект.ТипыПлагинов; ОписаниеПлагина = ЗагрузчикТестов.ОписаниеПлагина(ВозможныеТипыПлагинов); + + // Убираем из идентификатора префикс подсистемы + ИдентификаторПлагинаБезПрефикса = КонтекстЯдра.ПолучитьИдентификаторБезПрефиксаПодсистемы(ОписаниеПлагина.Идентификатор, КонтекстЯдра.Объект.ИспользуемыйПрефиксПодсистемы); + Утверждения.ПроверитьРавенство(ОписаниеПлагина.Тип, ВозможныеТипыПлагинов.Загрузчик, ""ОписаниеПлагина.Тип, юТест.ТипыПлагинов().Загрузчик""); - Утверждения.ПроверитьРавенство(ОписаниеПлагина.Идентификатор, ""ЗагрузчикФайла"", ""ОписаниеПлагина.Идентификатор""); + Утверждения.ПроверитьРавенство(ИдентификаторПлагинаБезПрефикса, ""ЗагрузчикФайла"", ""ОписаниеПлагина.Идентификатор""); Утверждения.ПроверитьРавенство(ОписаниеПлагина.Представление, ""Загрузить тесты из файлов"", ""ОписаниеПлагина.Представление""); КонецПроцедуры @@ -147,5 +154,4 @@ L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} {0,0}, {0,0}, {0,0}, -{0,0} -} \ No newline at end of file +{0,0},0,0} \ No newline at end of file diff --git "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/und/versions" "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/und/versions" index 8ed681ab..48388f9a 100644 --- "a/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/und/versions" +++ "b/src/Tests/Core/\320\242\320\265\321\201\321\202\321\213_\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262/und/versions" @@ -1 +1 @@ -{1,9,"",26fa2f71-d060-451c-89f7-d0023148c1ca,"4d520461-35ba-47cf-9306-350af5d1d5d8",52dde3c3-257a-4c77-a993-67d063d0f7ac,"versions",43c84ba7-35cf-4980-8ccf-6b7cd88abb94,"root",70dc190c-94d2-404e-a7f3-910a493c14a6,"421a27d5-c2f1-4844-86c0-c04fb5a1001f",a313d493-2895-43cf-be18-2f3c9de6c607,"version",0e83fddd-86bd-49ec-a46d-15366de48e6e,"4d520461-35ba-47cf-9306-350af5d1d5d8.0",a8271d03-9340-4108-9cc0-4524d1c09157,"ee4ff151-9500-4966-9c18-8499b60534d0.0",b8ce5f40-8ad6-41d4-b7ec-e71630334270,"copyinfo",c55fdf7b-d68a-4452-9220-a011e1f14d92} \ No newline at end of file +{1,9,"",d490f71d-a653-4fc8-99f6-430829750e0a,"421a27d5-c2f1-4844-86c0-c04fb5a1001f",34a9be0f-717c-47a8-829d-64ebc8cf2fbd,"4d520461-35ba-47cf-9306-350af5d1d5d8",a90eb58f-c6a2-48f4-8a7a-820879081b8e,"4d520461-35ba-47cf-9306-350af5d1d5d8.0",21a61edf-ff80-4e03-9a06-acf2ffa131b9,"copyinfo",2a9f5624-70e8-41c4-910a-e86317701d05,"ee4ff151-9500-4966-9c18-8499b60534d0.0",b7e664fc-b597-4d7a-a397-89e2e4e94731,"root",dce9343e-1754-4543-a6c0-25b222412547,"version",70e53f4a-8cd0-4d84-b18f-9f023d71beb1,"versions",de4bd742-056c-490a-92ef-d6fb74d79598} \ No newline at end of file diff --git "a/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..2c684be3 --- /dev/null +++ "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,416 @@ +#Если Не ВебКлиент Тогда + + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Ожидаем; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем ГенераторТестовыхДанных; +&НаКлиенте +Перем ЗапросыИзБД; +&НаКлиенте +Перем УтвержденияПроверкаТаблиц; + +&НаКлиенте +Перем массивТестовыхПриложений; + +&НаКлиенте +Перем ЮнитТестированиеИмя; + +&НаКлиенте + +//Перем юТест; +//Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт +// ЮнитТестированиеИмя = ЮнитТестирование.МетаданныеИмя(); +// +// СисИнфо = Новый СистемнаяИнформация; +// +// юТест = ЮнитТестирование; +// +// ВсеТесты = Новый Массив; +// +// Если СисИнфо.ВерсияПриложения < "8.3.0.0" Тогда +// Возврат ВсеТесты; +// КонецЕсли; +// +// ВсеТесты.Добавить("Тест_ГУИ_83"); +// ВсеТесты.Добавить("Тест_ГУИ_83_ДваПриложения"); +// +// Возврат ВсеТесты; +// +//КонецФункции + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; + + // Служебные переменные + ВстроенаВКонфигурацию = КонтекстЯдра.Объект.ЭтоВстроеннаяОбработка; + ИспользуемыйПрефиксПодсистемы = КонтекстЯдра.Объект.ИспользуемыйПрефиксПодсистемы; + + Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + ГенераторТестовыхДанных = КонтекстЯдра.Плагин("СериализаторMXL"); + ЗапросыИзБД = КонтекстЯдра.Плагин("ЗапросыИзБД"); + УтвержденияПроверкаТаблиц = КонтекстЯдра.Плагин("УтвержденияПроверкаТаблиц"); +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт + НаборТестов.Добавить("Тест_ГУИ_83"); + НаборТестов.Добавить("Тест_ГУИ_83_ДваПриложения"); +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗапускомТеста() Экспорт + ИмяПеременнойПользователь = "Пользователь12"; + ПользовательИмя = "ТестИмя12"; + ОбновитьПовторноИспользуемыеЗначения(); + + КонтекстЯдра.ВывестиСообщение("Перед запуском теста"); + массивТестовыхПриложений = Новый Массив; + + СоздатьТестовыеДанныеСервер(ЮнитТестированиеИмя); +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗапускаТеста() Экспорт + + КонтекстЯдра.ВывестиСообщение("После запуска теста"); + УдалитьТестовыеДанныеСервер(ЮнитТестированиеИмя); + + ЗавершитьВсеСеансыРаботыСТестовымиПриложениями(); +КонецПроцедуры + +&НаСервере +Процедура СоздатьТестовыеДанныеСервер(Знач ЮТестПуть) + + ГенераторТестовыхДанных = ГенераторТестовыхДанных(); + + ИмяМакета = "СозданиеОдногоПользователяИБ"; + //ИмяМакета = "СозданиеОдногоПользователяИБ_УФ"; + + ОсновнойОбъект = Объект(); + МассивИменПользователей = МассивИменПользователейПоУмолчанию(); + Для каждого ИмяПользователя Из МассивИменПользователей Цикл + УдалитьПользователяИБ_ЕслиОнСуществует(ИмяПользователя); + КонецЦикла; + + КоллекцияПараметров = Новый Структура("ИмяПеременнойПользователь, ПользовательИмя", ИмяПеременнойПользователь, ПользовательИмя); + НовыйТабДок = ПолучитьМакетДанныхДоступа(ИмяМакета, КоллекцияПараметров); + + МассивМакетов = Новый Массив; + МассивМакетов.Добавить(НовыйТабДок); + + ТестовыеДанные = ГенераторТестовыхДанных.СоздатьДанныеПоТабличномуДокументу(МассивМакетов); + + ТестовыеДанныеУФ.Очистить(); + + ТестовыеДанныеДляУФ = Новый ТаблицаЗначений; + Колонка = ТестовыеДанныеДляУФ.Колонки.Добавить("Ключ"); + Колонка = ТестовыеДанныеДляУФ.Колонки.Добавить("Значение"); + + Для каждого ключЗначение Из ТестовыеДанные Цикл + СписокВрем = Новый СписокЗначений; + Строка = ТестовыеДанныеДляУФ.Добавить(); + Если ТипЗнч(ключЗначение.Значение) = Тип("ПользовательИнформационнойБазы") Тогда + СписокВрем.Добавить(ключЗначение.Значение.Имя, ключЗначение.Ключ); + Строка.Ключ = "ПользовательИнформационнойБазы"; + Иначе + Строка.Ключ = ключЗначение.Ключ; + СписокВрем.Добавить(ключЗначение.Значение); + КонецЕсли; + Строка.Значение = СписокВрем; + КонецЦикла; + + ЗначениеВДанныеФормы(ТестовыеДанныеДляУФ, ТестовыеДанныеУФ); + +КонецПроцедуры + +&НаСервере +Процедура УдалитьТестовыеДанныеСервер(Знач ЮТестПуть) + + Если ТестовыеДанныеУФ.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + ГенераторТестовыхДанных = ГенераторТестовыхДанных(); + + ТестовыеДанные = Новый Структура; + Для каждого Строка Из ТестовыеДанныеУФ Цикл + Если Строка.Ключ = "ПользовательИнформационнойБазы" Тогда + ЭлементСпискаЗначений = Строка.Значение[0]; + лПользователь = ПользователиИнформационнойБазы.НайтиПоИмени(СокрЛП(ЭлементСпискаЗначений.Значение)); + ТестовыеДанные.Вставить(ЭлементСпискаЗначений.Представление, лПользователь); + Иначе + ТестовыеДанные.Вставить(Строка.Ключ, Строка.Значение[0].Значение); + КонецЕсли; + КонецЦикла; + + ГенераторТестовыхДанных.УдалитьСозданныеДанные(ТестовыеДанные); + + ТестовыеДанныеУФ.Очистить(); +КонецПроцедуры + +&НаСервере +Функция ГенераторТестовыхДанных() + Если ВстроенаВКонфигурацию Тогда + Возврат Обработки[ИспользуемыйПрефиксПодсистемы+"СериализаторMXL"].Создать(); + Иначе + Возврат ВнешниеОбработки.Создать("СериализаторMXL"); + КонецЕсли; +КонецФункции + +Функция МассивИменПользователейПоУмолчанию() + Рез = Новый Массив(); + Рез.Добавить(ПользовательИмя); + Возврат Рез; +КонецФункции + +&НаСервере +Функция Объект() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции + +Функция ПолучитьМакетДанныхДоступа(ИмяМакета, КоллекцияПараметров) Экспорт + + Макет = Объект().ПолучитьМакет(ИмяМакета); + ЗаполнитьЗначенияСвойств(Макет.Параметры, КоллекцияПараметров); + + НовыйТабДок = Новый ТабличныйДокумент; + НовыйТабДок.Вывести(Макет); + + Возврат НовыйТабДок; +КонецФункции + +Процедура УдалитьПользователяИБ_ЕслиОнСуществует(лИмяПользователя) Экспорт + + лПользователь = ПользователиИнформационнойБазы.НайтиПоИмени(лИмяПользователя); + Если лПользователь <> Неопределено Тогда + лПользователь.Удалить(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Тест_ГУИ_83() Экспорт + имяПользователя = ПользовательИмя; + Пароль = ""; + Порт = 1577; + ТаймаутОжиданияПриложенияВСекундах = 60; + + тестовоеПриложение = ЗапуститьТестовоеПриложение(имяПользователя, Пароль, Порт, ТаймаутОжиданияПриложенияВСекундах); + + ТестовыйСценарий_25_09_2013(тестовоеПриложение); + +КонецПроцедуры + +&НаКлиенте +Процедура Тест_ГУИ_83_ДваПриложения() Экспорт + имяПользователя = ПользовательИмя; + Пароль = ""; + Порт = 1577; + ТаймаутОжиданияПриложенияВСекундах = 20; + + Порт2 = Порт + 1; + + тестовоеПриложение = ЗапуститьТестовоеПриложение(имяПользователя, Пароль, Порт, ТаймаутОжиданияПриложенияВСекундах); + тестовоеПриложение2 = ЗапуститьТестовоеПриложение(имяПользователя, Пароль, Порт2, ТаймаутОжиданияПриложенияВСекундах); + + ТестовыйСценарий_25_09_2013(тестовоеПриложение); + ТестовыйСценарий_25_09_2013(тестовоеПриложение2); + +КонецПроцедуры + +&НаКлиенте +Функция ЗапуститьТестовоеПриложение(ИмяПользователя, Пароль, Порт, ТаймаутОжиданияПриложенияВСекундах) + Перем тестовоеПриложение; + строкаЗапуска = ПолучитьСтрокуЗапуска(ИмяПользователя, Пароль, Порт); + + ЗапуститьПриложение(строкаЗапуска); + тестовоеПриложение = Неопределено; + Попытка + Выполнить("тестовоеПриложение = Новый ТестируемоеПриложение(, XMLСтрока(Порт));"); + Исключение + тестовоеПриложение = Неопределено; + КонецПопытки; + Если тестовоеПриложение = Неопределено Тогда + ВызватьИсключение "Не удалось создать объект ТестируемоеПриложение."+Символы.ПС+ + "Возможно, что 1С:Предприятие 8 не было запущено в режиме Менеджера тестирования (ключ командной строки /TESTMANAGER)"+Символы.ПС+ + "При запуске Предприятия через Конфигуратор можно включить этот режим в параметрах конфигуратора Сервис -> Параметры -> Запуск 1С:Предприятия -> Дополнительные -> Автоматизированное тестирование -> пункт ""Запускать как менеджер тестирования""."; + КонецЕсли; + + Подключен = Ложь; + ВремяОкончанияОжидания = ТекущаяДата() + ТаймаутОжиданияПриложенияВСекундах; //60; + ОписаниеОшибкиСоединения = ""; + Пока Не ТекущаяДата() >= ВремяОкончанияОжидания Цикл + Попытка + тестовоеПриложение.УстановитьСоединение(); + Подключен = Истина; + Прервать; + Исключение + ОписаниеОшибкиСоединения = ОписаниеОшибки(); + КонецПопытки; + КонецЦикла; + + сообщениеОшибки = "Не смогли установить соединение с тестовым приложением для пользователя "+ИмяПользователя+" !" + Символы.ПС + ОписаниеОшибкиСоединения; + Если Не Подключен Тогда + тестовоеПриложение = Неопределено; + ВызватьИсключение сообщениеОшибки; + КонецЕсли; + + массивТестовыхПриложений.Добавить(тестовоеПриложение); + + Возврат тестовоеПриложение; +КонецФункции + +&НаКлиенте +Процедура ЗавершитьВсеСеансыРаботыСТестовымиПриложениями() + Если массивТестовыхПриложений.Количество() <> 0 Тогда + Для Каждого Подопытный Из массивТестовыхПриложений Цикл + Подопытный.РазорватьСоединение(); + КонецЦикла; + + ЗавершитьВсеТестовыеПриложенияПринудительно(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ЗавершитьВсеТестовыеПриложенияПринудительно() + + Утверждения.ПроверитьЗаполненность(массивТестовыхПриложений.Количество(), "массивТестовыхПриложений.Количество()"); + + Если ЭтоLinux = Ложь Тогда + + Scr = Новый COMОбъект("MSScriptControl.ScriptControl"); + Scr.Language = "vbscript"; + Scr.AddCode(" + |Option Explicit + | + |Dim objWMIService, objProcess, colProcess + | + |Set objWMIService = GetObject(""winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"") + | + |Set colProcess = objWMIService.ExecQuery(""Select * from Win32_Process Where (CommandLine Like '%/TESTCLIENT%' And ExecutablePath Like '%1cv8c%')"") + | + |For Each objProcess in colProcess + | objProcess.Terminate() + |Next + |"); + Иначе + СтрокаЗапуска = "kill -9 `ps aux | grep -ie TESTCLIENT | grep -ie 1cv8c | awk '{print $2}'`"; + ЗапуститьПриложение(СтрокаЗапуска); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция ПолучитьСтрокуЗапуска(ИмяПользователя = "", Пароль = "", Порт = "") + //Если Не ЗначениеЗаполнено(ИмяПользователя) Тогда + // ИмяПользователя = "Администратор"; + //КонецЕсли; + + ЭтоLinux = Ложь; + СисИнфо = Новый СистемнаяИнформация; + ВерсияПриложения = СисИнфо.ВерсияПриложения; + + Если Найти(Строка(СисИнфо.ТипПлатформы), "Linux")>0 Тогда + ЭтоLinux = Истина; + КонецЕсли; + + СтрокаЗапуска1с = КаталогПрограммы() + "1cv8c"; + Если ЭтоLinux = Ложь Тогда + СтрокаЗапуска1с = СтрокаЗапуска1с + ".exe"; + КонецЕсли; + + + + Результат = СтрокаЗапуска1с + " ENTERPRISE " + + "/IBConnectionString""" + СтрЗаменить(СтрокаСоединенияИнформационнойБазы(), """", """""") + """" + + " /N""" + ИмяПользователя + """" + ?(ПустаяСтрока(Пароль), ""," /P""" + Пароль + """") + + " /TESTCLIENT -TPort" + XMLСтрока(Порт); + + Возврат Результат; +КонецФункции + +&НаКлиенте +Процедура ТестовыйСценарий_25_09_2013(ТестовоеПриложение) + + ОкноПриложенияОсновноеВыполнитьКоманду(ТестовоеПриложение); + ОкноПриложенияПоказатьГУИДЗакрыть(ТестовоеПриложение); + ОкноПриложенияОсновноеВыполнитьКоманду1(ТестовоеПриложение); + ОкноПриложенияПоказатьГУИДЗакрыть1(ТестовоеПриложение); + ОкноПриложенияОсновноеФормаПростойСправочникАктивизировать(ТестовоеПриложение); + +КонецПроцедуры + +&НаКлиенте +Процедура ОкноПриложенияОсновноеВыполнитьКоманду(ТестовоеПриложение) + + ОкноПриложенияОсновное = Неопределено; + КлиентсткиеОкнаТестируемогоПриложения = ТестовоеПриложение.ПолучитьПодчиненныеОбъекты(); + Для Каждого ТестируемоеОкно Из КлиентсткиеОкнаТестируемогоПриложения Цикл + Если ТестируемоеОкно.Основное Тогда + ОкноПриложенияОсновное = ТестируемоеОкно; + Прервать; + КонецЕсли; + КонецЦикла; + ОкноПриложенияОсновное.ВыполнитьКоманду("e1cib/command/Обработка.xddGuidShow.Команда.Открыть"); + +КонецПроцедуры + +&НаКлиенте +Процедура ОкноПриложенияПоказатьГУИДЗакрыть(ТестовоеПриложение) + + ОкноПриложенияПоказатьГУИД = ТестовоеПриложение.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"), "Показать ГУИД", , 30); + ОкноПриложенияПоказатьГУИД.Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОкноПриложенияОсновноеВыполнитьКоманду1(ТестовоеПриложение) + + + ОкноПриложенияОсновное = Неопределено; + КлиентсткиеОкнаТестируемогоПриложения = ТестовоеПриложение.ПолучитьПодчиненныеОбъекты(); + Для Каждого ТестируемоеОкно Из КлиентсткиеОкнаТестируемогоПриложения Цикл + Если ТестируемоеОкно.Основное Тогда + ОкноПриложенияОсновное = ТестируемоеОкно; + Прервать; + КонецЕсли; + КонецЦикла; + ОкноПриложенияОсновное.ВыполнитьКоманду("e1cib/command/Справочник.ПростойСправочник.Команда.ОткрытьСписок"); + + ОкноПриложенияОсновное.ВыполнитьКоманду("e1cib/command/Обработка.xddGuidShow.Команда.Открыть"); + +КонецПроцедуры + +&НаКлиенте +Процедура ОкноПриложенияПоказатьГУИДЗакрыть1(ТестовоеПриложение) + + ОкноПриложенияПоказатьГУИД = ТестовоеПриложение.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"), "Показать ГУИД", , 30); + ОкноПриложенияПоказатьГУИД.Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОкноПриложенияОсновноеФормаПростойСправочникАктивизировать(ТестовоеПриложение) + + + ОкноПриложенияОсновное = Неопределено; + КлиентсткиеОкнаТестируемогоПриложения = ТестовоеПриложение.ПолучитьПодчиненныеОбъекты(); + Для Каждого ТестируемоеОкно Из КлиентсткиеОкнаТестируемогоПриложения Цикл + Если ТестируемоеОкно.Основное Тогда + ОкноПриложенияОсновное = ТестируемоеОкно; + Прервать; + КонецЕсли; + КонецЦикла; + ОкноПриложенияОсновноеФормаПростойСправочник = ОкноПриложенияОсновное.НайтиОбъект(Тип("ТестируемаяФорма"), "Простой справочник"); + ОкноПриложенияОсновноеФормаПростойСправочник.Активизировать(); + +КонецПроцедуры + +#КонецЕсли diff --git "a/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/maps.txt" "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/maps.txt" new file mode 100644 index 00000000..6abb2256 --- /dev/null +++ "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/maps.txt" @@ -0,0 +1,3 @@ +Form\Форма\Форма.bsl-->8401ee62-68b8-43ea-8738-0c08cbc8c901.0 (50, 466) +Макеты\Макет.txt-->1b3a3d0f-5dc6-47e8-bad6-38c097bc00d4.0 +Макеты\СозданиеОдногоПользователяИБ.mxl-->94428d21-9dd3-40d7-84be-7cee6ba1b8eb.0 diff --git "a/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/renames.txt" "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/renames.txt" new file mode 100644 index 00000000..733c2aa6 --- /dev/null +++ "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/renames.txt" @@ -0,0 +1,11 @@ +1b3a3d0f-5dc6-47e8-bad6-38c097bc00d4-->und\1b3a3d0f-5dc6-47e8-bad6-38c097bc00d4 +1b3a3d0f-5dc6-47e8-bad6-38c097bc00d4.0-->und\1b3a3d0f-5dc6-47e8-bad6-38c097bc00d4.0 +4e93fd08-5eda-44dd-92ef-b84867283b1e-->und\4e93fd08-5eda-44dd-92ef-b84867283b1e +8401ee62-68b8-43ea-8738-0c08cbc8c901-->und\8401ee62-68b8-43ea-8738-0c08cbc8c901 +8401ee62-68b8-43ea-8738-0c08cbc8c901.0-->und\8401ee62-68b8-43ea-8738-0c08cbc8c901.0 +94428d21-9dd3-40d7-84be-7cee6ba1b8eb-->und\94428d21-9dd3-40d7-84be-7cee6ba1b8eb +94428d21-9dd3-40d7-84be-7cee6ba1b8eb.0-->und\94428d21-9dd3-40d7-84be-7cee6ba1b8eb.0 +copyinfo-->und\copyinfo +root-->und\root +version-->und\version +versions-->und\versions diff --git "a/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/1b3a3d0f-5dc6-47e8-bad6-38c097bc00d4" "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/1b3a3d0f-5dc6-47e8-bad6-38c097bc00d4" new file mode 100644 index 00000000..7eda6574 --- /dev/null +++ "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/1b3a3d0f-5dc6-47e8-bad6-38c097bc00d4" @@ -0,0 +1,6 @@ +{1, +{2,4, +{0, +{0,0,1b3a3d0f-5dc6-47e8-bad6-38c097bc00d4},"Макет", +{1,"ru","Макет"},""} +},0} \ No newline at end of file diff --git "a/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/1b3a3d0f-5dc6-47e8-bad6-38c097bc00d4.0" "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/1b3a3d0f-5dc6-47e8-bad6-38c097bc00d4.0" new file mode 100644 index 00000000..9f800b01 --- /dev/null +++ "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/1b3a3d0f-5dc6-47e8-bad6-38c097bc00d4.0" @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + +
+ + +
+
\ No newline at end of file diff --git "a/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/4e93fd08-5eda-44dd-92ef-b84867283b1e" "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/4e93fd08-5eda-44dd-92ef-b84867283b1e" new file mode 100644 index 00000000..eb6ecead --- /dev/null +++ "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/4e93fd08-5eda-44dd-92ef-b84867283b1e" @@ -0,0 +1,17 @@ +{1, +{4e93fd08-5eda-44dd-92ef-b84867283b1e},1, +{c3831ec8-d8d5-4f93-8a22-f9bfae07327f, +{1, +{4,d4e55e33-fb7f-484e-bcf7-2a6d67753130,1112057b-82cb-47fc-b1bf-ac4d51be8b0b, +{0, +{1, +{0,0,84c18118-7744-4171-b86f-e605494b2083},"юнитТест_UI_83", +{1,"ru","Юнит-тест UI 8.3"},"Автор - Артур Аюханов aka artbear 2013",0,0} +},8401ee62-68b8-43ea-8738-0c08cbc8c901,"",00000000-0000-0000-0000-000000000000},4, +{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, +{3daea016-69b7-4ed4-9453-127911372fe6,2,1b3a3d0f-5dc6-47e8-bad6-38c097bc00d4,94428d21-9dd3-40d7-84be-7cee6ba1b8eb}, +{d5b0e5ed-256d-401c-9c36-f630cafd8a62,1,8401ee62-68b8-43ea-8738-0c08cbc8c901}, +{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,0} +} +} +} \ No newline at end of file diff --git "a/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/8401ee62-68b8-43ea-8738-0c08cbc8c901" "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/8401ee62-68b8-43ea-8738-0c08cbc8c901" new file mode 100644 index 00000000..20d6a58d --- /dev/null +++ "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/8401ee62-68b8-43ea-8738-0c08cbc8c901" @@ -0,0 +1,15 @@ +{1, +{1, +{0, +{12, +{1, +{0,0,8401ee62-68b8-43ea-8738-0c08cbc8c901},"Форма", +{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1, +{2, +{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, +{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} +} +}, +{0} +} +},0} \ No newline at end of file diff --git "a/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/8401ee62-68b8-43ea-8738-0c08cbc8c901.0" "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/8401ee62-68b8-43ea-8738-0c08cbc8c901.0" new file mode 100644 index 00000000..983fd337 --- /dev/null +++ "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/8401ee62-68b8-43ea-8738-0c08cbc8c901.0" @@ -0,0 +1,661 @@ +{3, +{42,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, +{1,0},0,0,1,1,1,0,1,0, +{0,0,0}, +{0},1, +{21, +{-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},9,"ФормаКоманднаяПанель", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{0,0,1},0,1,0,0,0,3,3},0,"","",1, +{21, +{0},0,0,0,7,"Navigator", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},0,0,1,0,1, +{10, +{0},0,0,0,0,"NavigatorРасширеннаяПодсказка", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,"",2,0,0,0,0,0,3,3,0,0,2},"#Если Не ВебКлиент Тогда + + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Ожидаем; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем ГенераторТестовыхДанных; +&НаКлиенте +Перем ЗапросыИзБД; +&НаКлиенте +Перем УтвержденияПроверкаТаблиц; + +&НаКлиенте +Перем массивТестовыхПриложений; + +&НаКлиенте +Перем ЮнитТестированиеИмя; + +&НаКлиенте + +//Перем юТест; +//Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт +// ЮнитТестированиеИмя = ЮнитТестирование.МетаданныеИмя(); +// +// СисИнфо = Новый СистемнаяИнформация; +// +// юТест = ЮнитТестирование; +// +// ВсеТесты = Новый Массив; +// +// Если СисИнфо.ВерсияПриложения < ""8.3.0.0"" Тогда +// Возврат ВсеТесты; +// КонецЕсли; +// +// ВсеТесты.Добавить(""Тест_ГУИ_83""); +// ВсеТесты.Добавить(""Тест_ГУИ_83_ДваПриложения""); +// +// Возврат ВсеТесты; +// +//КонецФункции + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; + + // Служебные переменные + ВстроенаВКонфигурацию = КонтекстЯдра.Объект.ЭтоВстроеннаяОбработка; + ИспользуемыйПрефиксПодсистемы = КонтекстЯдра.Объект.ИспользуемыйПрефиксПодсистемы; + + Ожидаем = КонтекстЯдра.Плагин(""УтвержденияBDD""); + Утверждения = КонтекстЯдра.Плагин(""БазовыеУтверждения""); + ГенераторТестовыхДанных = КонтекстЯдра.Плагин(""СериализаторMXL""); + ЗапросыИзБД = КонтекстЯдра.Плагин(""ЗапросыИзБД""); + УтвержденияПроверкаТаблиц = КонтекстЯдра.Плагин(""УтвержденияПроверкаТаблиц""); +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт + НаборТестов.Добавить(""Тест_ГУИ_83""); + НаборТестов.Добавить(""Тест_ГУИ_83_ДваПриложения""); +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗапускомТеста() Экспорт + ИмяПеременнойПользователь = ""Пользователь12""; + ПользовательИмя = ""ТестИмя12""; + ОбновитьПовторноИспользуемыеЗначения(); + + КонтекстЯдра.ВывестиСообщение(""Перед запуском теста""); + массивТестовыхПриложений = Новый Массив; + + СоздатьТестовыеДанныеСервер(ЮнитТестированиеИмя); +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗапускаТеста() Экспорт + + КонтекстЯдра.ВывестиСообщение(""После запуска теста""); + УдалитьТестовыеДанныеСервер(ЮнитТестированиеИмя); + + ЗавершитьВсеСеансыРаботыСТестовымиПриложениями(); +КонецПроцедуры + +&НаСервере +Процедура СоздатьТестовыеДанныеСервер(Знач ЮТестПуть) + + ГенераторТестовыхДанных = ГенераторТестовыхДанных(); + + ИмяМакета = ""СозданиеОдногоПользователяИБ""; + //ИмяМакета = ""СозданиеОдногоПользователяИБ_УФ""; + + ОсновнойОбъект = Объект(); + МассивИменПользователей = МассивИменПользователейПоУмолчанию(); + Для каждого ИмяПользователя Из МассивИменПользователей Цикл + УдалитьПользователяИБ_ЕслиОнСуществует(ИмяПользователя); + КонецЦикла; + + КоллекцияПараметров = Новый Структура(""ИмяПеременнойПользователь, ПользовательИмя"", ИмяПеременнойПользователь, ПользовательИмя); + НовыйТабДок = ПолучитьМакетДанныхДоступа(ИмяМакета, КоллекцияПараметров); + + МассивМакетов = Новый Массив; + МассивМакетов.Добавить(НовыйТабДок); + + ТестовыеДанные = ГенераторТестовыхДанных.СоздатьДанныеПоТабличномуДокументу(МассивМакетов); + + ТестовыеДанныеУФ.Очистить(); + + ТестовыеДанныеДляУФ = Новый ТаблицаЗначений; + Колонка = ТестовыеДанныеДляУФ.Колонки.Добавить(""Ключ""); + Колонка = ТестовыеДанныеДляУФ.Колонки.Добавить(""Значение""); + + Для каждого ключЗначение Из ТестовыеДанные Цикл + СписокВрем = Новый СписокЗначений; + Строка = ТестовыеДанныеДляУФ.Добавить(); + Если ТипЗнч(ключЗначение.Значение) = Тип(""ПользовательИнформационнойБазы"") Тогда + СписокВрем.Добавить(ключЗначение.Значение.Имя, ключЗначение.Ключ); + Строка.Ключ = ""ПользовательИнформационнойБазы""; + Иначе + Строка.Ключ = ключЗначение.Ключ; + СписокВрем.Добавить(ключЗначение.Значение); + КонецЕсли; + Строка.Значение = СписокВрем; + КонецЦикла; + + ЗначениеВДанныеФормы(ТестовыеДанныеДляУФ, ТестовыеДанныеУФ); + +КонецПроцедуры + +&НаСервере +Процедура УдалитьТестовыеДанныеСервер(Знач ЮТестПуть) + + Если ТестовыеДанныеУФ.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + ГенераторТестовыхДанных = ГенераторТестовыхДанных(); + + ТестовыеДанные = Новый Структура; + Для каждого Строка Из ТестовыеДанныеУФ Цикл + Если Строка.Ключ = ""ПользовательИнформационнойБазы"" Тогда + ЭлементСпискаЗначений = Строка.Значение[0]; + лПользователь = ПользователиИнформационнойБазы.НайтиПоИмени(СокрЛП(ЭлементСпискаЗначений.Значение)); + ТестовыеДанные.Вставить(ЭлементСпискаЗначений.Представление, лПользователь); + Иначе + ТестовыеДанные.Вставить(Строка.Ключ, Строка.Значение[0].Значение); + КонецЕсли; + КонецЦикла; + + ГенераторТестовыхДанных.УдалитьСозданныеДанные(ТестовыеДанные); + + ТестовыеДанныеУФ.Очистить(); +КонецПроцедуры + +&НаСервере +Функция ГенераторТестовыхДанных() + Если ВстроенаВКонфигурацию Тогда + Возврат Обработки[ИспользуемыйПрефиксПодсистемы+""СериализаторMXL""].Создать(); + Иначе + Возврат ВнешниеОбработки.Создать(""СериализаторMXL""); + КонецЕсли; +КонецФункции + +Функция МассивИменПользователейПоУмолчанию() + Рез = Новый Массив(); + Рез.Добавить(ПользовательИмя); + Возврат Рез; +КонецФункции + +&НаСервере +Функция Объект() + Возврат РеквизитФормыВЗначение(""Объект""); +КонецФункции + +Функция ПолучитьМакетДанныхДоступа(ИмяМакета, КоллекцияПараметров) Экспорт + + Макет = Объект().ПолучитьМакет(ИмяМакета); + ЗаполнитьЗначенияСвойств(Макет.Параметры, КоллекцияПараметров); + + НовыйТабДок = Новый ТабличныйДокумент; + НовыйТабДок.Вывести(Макет); + + Возврат НовыйТабДок; +КонецФункции + +Процедура УдалитьПользователяИБ_ЕслиОнСуществует(лИмяПользователя) Экспорт + + лПользователь = ПользователиИнформационнойБазы.НайтиПоИмени(лИмяПользователя); + Если лПользователь <> Неопределено Тогда + лПользователь.Удалить(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Тест_ГУИ_83() Экспорт + имяПользователя = ПользовательИмя; + Пароль = """"; + Порт = 1577; + ТаймаутОжиданияПриложенияВСекундах = 60; + + тестовоеПриложение = ЗапуститьТестовоеПриложение(имяПользователя, Пароль, Порт, ТаймаутОжиданияПриложенияВСекундах); + + ТестовыйСценарий_25_09_2013(тестовоеПриложение); + +КонецПроцедуры + +&НаКлиенте +Процедура Тест_ГУИ_83_ДваПриложения() Экспорт + имяПользователя = ПользовательИмя; + Пароль = """"; + Порт = 1577; + ТаймаутОжиданияПриложенияВСекундах = 20; + + Порт2 = Порт + 1; + + тестовоеПриложение = ЗапуститьТестовоеПриложение(имяПользователя, Пароль, Порт, ТаймаутОжиданияПриложенияВСекундах); + тестовоеПриложение2 = ЗапуститьТестовоеПриложение(имяПользователя, Пароль, Порт2, ТаймаутОжиданияПриложенияВСекундах); + + ТестовыйСценарий_25_09_2013(тестовоеПриложение); + ТестовыйСценарий_25_09_2013(тестовоеПриложение2); + +КонецПроцедуры + +&НаКлиенте +Функция ЗапуститьТестовоеПриложение(ИмяПользователя, Пароль, Порт, ТаймаутОжиданияПриложенияВСекундах) + Перем тестовоеПриложение; + строкаЗапуска = ПолучитьСтрокуЗапуска(ИмяПользователя, Пароль, Порт); + + ЗапуститьПриложение(строкаЗапуска); + тестовоеПриложение = Неопределено; + Попытка + Выполнить(""тестовоеПриложение = Новый ТестируемоеПриложение(, XMLСтрока(Порт));""); + Исключение + тестовоеПриложение = Неопределено; + КонецПопытки; + Если тестовоеПриложение = Неопределено Тогда + ВызватьИсключение ""Не удалось создать объект ТестируемоеПриложение.""+Символы.ПС+ + ""Возможно, что 1С:Предприятие 8 не было запущено в режиме Менеджера тестирования (ключ командной строки /TESTMANAGER)""+Символы.ПС+ + ""При запуске Предприятия через Конфигуратор можно включить этот режим в параметрах конфигуратора Сервис -> Параметры -> Запуск 1С:Предприятия -> Дополнительные -> Автоматизированное тестирование -> пункт """"Запускать как менеджер тестирования"""".""; + КонецЕсли; + + Подключен = Ложь; + ВремяОкончанияОжидания = ТекущаяДата() + ТаймаутОжиданияПриложенияВСекундах; //60; + ОписаниеОшибкиСоединения = """"; + Пока Не ТекущаяДата() >= ВремяОкончанияОжидания Цикл + Попытка + тестовоеПриложение.УстановитьСоединение(); + Подключен = Истина; + Прервать; + Исключение + ОписаниеОшибкиСоединения = ОписаниеОшибки(); + КонецПопытки; + КонецЦикла; + + сообщениеОшибки = ""Не смогли установить соединение с тестовым приложением для пользователя ""+ИмяПользователя+"" !"" + Символы.ПС + ОписаниеОшибкиСоединения; + Если Не Подключен Тогда + тестовоеПриложение = Неопределено; + ВызватьИсключение сообщениеОшибки; + КонецЕсли; + + массивТестовыхПриложений.Добавить(тестовоеПриложение); + + Возврат тестовоеПриложение; +КонецФункции + +&НаКлиенте +Процедура ЗавершитьВсеСеансыРаботыСТестовымиПриложениями() + Если массивТестовыхПриложений.Количество() <> 0 Тогда + Для Каждого Подопытный Из массивТестовыхПриложений Цикл + Подопытный.РазорватьСоединение(); + КонецЦикла; + + ЗавершитьВсеТестовыеПриложенияПринудительно(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ЗавершитьВсеТестовыеПриложенияПринудительно() + + Утверждения.ПроверитьЗаполненность(массивТестовыхПриложений.Количество(), ""массивТестовыхПриложений.Количество()""); + + Если ЭтоLinux = Ложь Тогда + + Scr = Новый COMОбъект(""MSScriptControl.ScriptControl""); + Scr.Language = ""vbscript""; + Scr.AddCode("" + |Option Explicit + | + |Dim objWMIService, objProcess, colProcess + | + |Set objWMIService = GetObject(""""winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"""") + | + |Set colProcess = objWMIService.ExecQuery(""""Select * from Win32_Process Where (CommandLine Like '%/TESTCLIENT%' And ExecutablePath Like '%1cv8c%')"""") + | + |For Each objProcess in colProcess + | objProcess.Terminate() + |Next + |""); + Иначе + СтрокаЗапуска = ""kill -9 `ps aux | grep -ie TESTCLIENT | grep -ie 1cv8c | awk '{print $2}'`""; + ЗапуститьПриложение(СтрокаЗапуска); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция ПолучитьСтрокуЗапуска(ИмяПользователя = """", Пароль = """", Порт = """") + //Если Не ЗначениеЗаполнено(ИмяПользователя) Тогда + // ИмяПользователя = ""Администратор""; + //КонецЕсли; + + ЭтоLinux = Ложь; + СисИнфо = Новый СистемнаяИнформация; + ВерсияПриложения = СисИнфо.ВерсияПриложения; + + Если Найти(Строка(СисИнфо.ТипПлатформы), ""Linux"")>0 Тогда + ЭтоLinux = Истина; + КонецЕсли; + + СтрокаЗапуска1с = КаталогПрограммы() + ""1cv8c""; + Если ЭтоLinux = Ложь Тогда + СтрокаЗапуска1с = СтрокаЗапуска1с + "".exe""; + КонецЕсли; + + + + Результат = СтрокаЗапуска1с + "" ENTERPRISE "" + + ""/IBConnectionString"""""" + СтрЗаменить(СтрокаСоединенияИнформационнойБазы(), """""""", """""""""""") + """""""" + + "" /N"""""" + ИмяПользователя + """""""" + ?(ПустаяСтрока(Пароль), """","" /P"""""" + Пароль + """""""") + + "" /TESTCLIENT -TPort"" + XMLСтрока(Порт); + + Возврат Результат; +КонецФункции + +&НаКлиенте +Процедура ТестовыйСценарий_25_09_2013(ТестовоеПриложение) + + ОкноПриложенияОсновноеВыполнитьКоманду(ТестовоеПриложение); + ОкноПриложенияПоказатьГУИДЗакрыть(ТестовоеПриложение); + ОкноПриложенияОсновноеВыполнитьКоманду1(ТестовоеПриложение); + ОкноПриложенияПоказатьГУИДЗакрыть1(ТестовоеПриложение); + ОкноПриложенияОсновноеФормаПростойСправочникАктивизировать(ТестовоеПриложение); + +КонецПроцедуры + +&НаКлиенте +Процедура ОкноПриложенияОсновноеВыполнитьКоманду(ТестовоеПриложение) + + ОкноПриложенияОсновное = Неопределено; + КлиентсткиеОкнаТестируемогоПриложения = ТестовоеПриложение.ПолучитьПодчиненныеОбъекты(); + Для Каждого ТестируемоеОкно Из КлиентсткиеОкнаТестируемогоПриложения Цикл + Если ТестируемоеОкно.Основное Тогда + ОкноПриложенияОсновное = ТестируемоеОкно; + Прервать; + КонецЕсли; + КонецЦикла; + ОкноПриложенияОсновное.ВыполнитьКоманду(""e1cib/command/Обработка.xddGuidShow.Команда.Открыть""); + +КонецПроцедуры + +&НаКлиенте +Процедура ОкноПриложенияПоказатьГУИДЗакрыть(ТестовоеПриложение) + + ОкноПриложенияПоказатьГУИД = ТестовоеПриложение.НайтиОбъект(Тип(""ТестируемоеОкноКлиентскогоПриложения""), ""Показать ГУИД"", , 30); + ОкноПриложенияПоказатьГУИД.Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОкноПриложенияОсновноеВыполнитьКоманду1(ТестовоеПриложение) + + + ОкноПриложенияОсновное = Неопределено; + КлиентсткиеОкнаТестируемогоПриложения = ТестовоеПриложение.ПолучитьПодчиненныеОбъекты(); + Для Каждого ТестируемоеОкно Из КлиентсткиеОкнаТестируемогоПриложения Цикл + Если ТестируемоеОкно.Основное Тогда + ОкноПриложенияОсновное = ТестируемоеОкно; + Прервать; + КонецЕсли; + КонецЦикла; + ОкноПриложенияОсновное.ВыполнитьКоманду(""e1cib/command/Справочник.ПростойСправочник.Команда.ОткрытьСписок""); + + ОкноПриложенияОсновное.ВыполнитьКоманду(""e1cib/command/Обработка.xddGuidShow.Команда.Открыть""); + +КонецПроцедуры + +&НаКлиенте +Процедура ОкноПриложенияПоказатьГУИДЗакрыть1(ТестовоеПриложение) + + ОкноПриложенияПоказатьГУИД = ТестовоеПриложение.НайтиОбъект(Тип(""ТестируемоеОкноКлиентскогоПриложения""), ""Показать ГУИД"", , 30); + ОкноПриложенияПоказатьГУИД.Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОкноПриложенияОсновноеФормаПростойСправочникАктивизировать(ТестовоеПриложение) + + + ОкноПриложенияОсновное = Неопределено; + КлиентсткиеОкнаТестируемогоПриложения = ТестовоеПриложение.ПолучитьПодчиненныеОбъекты(); + Для Каждого ТестируемоеОкно Из КлиентсткиеОкнаТестируемогоПриложения Цикл + Если ТестируемоеОкно.Основное Тогда + ОкноПриложенияОсновное = ТестируемоеОкно; + Прервать; + КонецЕсли; + КонецЦикла; + ОкноПриложенияОсновноеФормаПростойСправочник = ОкноПриложенияОсновное.НайтиОбъект(Тип(""ТестируемаяФорма""), ""Простой справочник""); + ОкноПриложенияОсновноеФормаПростойСправочник.Активизировать(); + +КонецПроцедуры + +#КонецЕсли +", +{4,7, +{9, +{1},0,"Объект", +{1,0}, +{"Pattern", +{"#",d4e55e33-fb7f-484e-bcf7-2a6d67753130} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},1,0,0,0, +{0,0}, +{0,0} +}, +{9, +{2},0,"ИмяПеременнойПользователь", +{1,1, +{"ru","Имя переменной пользователь"} +}, +{"Pattern", +{"S"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},0,0,0,0, +{0,0}, +{0,0} +}, +{9, +{3},0,"ПользовательИмя", +{1,1, +{"ru","Пользователь имя"} +}, +{"Pattern", +{"S"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},0,0,0,0, +{0,0}, +{0,0} +}, +{9, +{4},0,"ТестовыеДанныеУФ", +{1,1, +{"ru","Тестовые данные УФ"} +}, +{"Pattern", +{"#",acf6192e-81ca-46ef-93a6-5a6968b78663} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},0,0,0,2, +{5,1,0,"Ключ", +{1,1, +{"ru","Ключ"} +}, +{"Pattern", +{"S"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0},0}, +{5,2,0,"Значение", +{1,1, +{"ru","Значение"} +}, +{"Pattern", +{"#",4772b3b4-f4a3-49c0-a1a5-8cb5961511a3} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0},0}, +{0,0}, +{0,0} +}, +{9, +{5},0,"ЭтоLinux", +{1,1, +{"ru","Это linux"} +}, +{"Pattern", +{"B"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},0,0,0,0, +{0,0}, +{0,0} +}, +{9, +{6},0,"ВстроенаВКонфигурацию", +{1,1, +{"ru","Встроена в конфигурацию"} +}, +{"Pattern", +{"B"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},0,0,0,0, +{0,0}, +{0,0} +}, +{9, +{7},0,"ИспользуемыйПрефиксПодсистемы", +{1,1, +{"ru","Используемый префикс подсистемы"} +}, +{"Pattern", +{"S"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},0,0,0,0, +{0,0}, +{0,0} +},0,0, +{#base64:77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxTZXR0 +aW5ncyB4bWxucz0iaHR0cDovL3Y4LjFjLnJ1LzguMS9kYXRhLWNvbXBvc2l0aW9u +LXN5c3RlbS9zZXR0aW5ncyIgeG1sbnM6ZGNzY29yPSJodHRwOi8vdjguMWMucnUv +OC4xL2RhdGEtY29tcG9zaXRpb24tc3lzdGVtL2NvcmUiIHhtbG5zOnN0eWxlPSJo +dHRwOi8vdjguMWMucnUvOC4xL2RhdGEvdWkvc3R5bGUiIHhtbG5zOnN5cz0iaHR0 +cDovL3Y4LjFjLnJ1LzguMS9kYXRhL3VpL2ZvbnRzL3N5c3RlbSIgeG1sbnM6djg9 +Imh0dHA6Ly92OC4xYy5ydS84LjEvZGF0YS9jb3JlIiB4bWxuczp2OHVpPSJodHRw +Oi8vdjguMWMucnUvOC4xL2RhdGEvdWkiIHhtbG5zOndlYj0iaHR0cDovL3Y4LjFj +LnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93ZWIiIHhtbG5zOndpbj0iaHR0cDovL3Y4 +LjFjLnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93aW5kb3dzIiB4bWxuczp4cz0iaHR0 +cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDov +L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} +}, +{0,0}, +{0,0}, +{0,0}, +{0,0},0,0} \ No newline at end of file diff --git "a/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/94428d21-9dd3-40d7-84be-7cee6ba1b8eb" "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/94428d21-9dd3-40d7-84be-7cee6ba1b8eb" new file mode 100644 index 00000000..846a102f --- /dev/null +++ "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/94428d21-9dd3-40d7-84be-7cee6ba1b8eb" @@ -0,0 +1,6 @@ +{1, +{2,0, +{1, +{0,0,94428d21-9dd3-40d7-84be-7cee6ba1b8eb},"СозданиеОдногоПользователяИБ", +{1,"ru","Создание одного пользователя ИБ"},"",0,0} +},0} \ No newline at end of file diff --git "a/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/94428d21-9dd3-40d7-84be-7cee6ba1b8eb.0" "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/94428d21-9dd3-40d7-84be-7cee6ba1b8eb.0" new file mode 100644 index 00000000..c299327e Binary files /dev/null and "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/94428d21-9dd3-40d7-84be-7cee6ba1b8eb.0" differ diff --git "a/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/copyinfo" "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/copyinfo" new file mode 100644 index 00000000..aa01503e --- /dev/null +++ "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/copyinfo" @@ -0,0 +1,16 @@ +{4, +{2, +{8401ee62-68b8-43ea-8738-0c08cbc8c901,8401ee62-68b8-43ea-8738-0c08cbc8c901,1, +{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"Форма"} +}, +{84c18118-7744-4171-b86f-e605494b2083,84c18118-7744-4171-b86f-e605494b2083,1, +{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"юнитТест_UI_83"} +} +}, +{1, +{d4e55e33-fb7f-484e-bcf7-2a6d67753130,84c18118-7744-4171-b86f-e605494b2083,0} +}, +{0}, +{0,0}, +{0} +} \ No newline at end of file diff --git "a/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/root" "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/root" new file mode 100644 index 00000000..0c48dcf2 --- /dev/null +++ "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/root" @@ -0,0 +1 @@ +{2,4e93fd08-5eda-44dd-92ef-b84867283b1e,} \ No newline at end of file diff --git "a/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/version" "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/version" new file mode 100644 index 00000000..c23bfe28 --- /dev/null +++ "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/version" @@ -0,0 +1,3 @@ +{ +{216,0} +} \ No newline at end of file diff --git "a/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/versions" "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/versions" new file mode 100644 index 00000000..e031e562 --- /dev/null +++ "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/und/versions" @@ -0,0 +1 @@ +{1,10,"",fc236657-1410-4c6b-91c8-a2e93215b016,"4e93fd08-5eda-44dd-92ef-b84867283b1e",f203edc3-bc6e-4f3e-9b7e-d9e1fa9afc87,"8401ee62-68b8-43ea-8738-0c08cbc8c901",87e8c7a3-f3d3-4a67-b6e6-d322c23939df,"8401ee62-68b8-43ea-8738-0c08cbc8c901.0",99871846-be00-4d79-b3e8-d7ba5d2a5ff3,"94428d21-9dd3-40d7-84be-7cee6ba1b8eb",43343ed3-9d98-49c2-a18b-0b8b816ee953,"94428d21-9dd3-40d7-84be-7cee6ba1b8eb.0",18fa2bff-aa03-43ad-bdb5-6a5841d1e96e,"copyinfo",fba2b46a-91be-4805-98b9-0dced74c2282,"root",fdc525a7-e4d1-46f8-9e8e-377cd1b7ca74,"version",6ed12471-0a8f-4871-bb6e-1841cb0be8bb,"versions",2ece8525-000e-45d2-8ea3-a75bf3459def} \ No newline at end of file diff --git "a/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/\320\234\320\260\320\272\320\265\321\202\321\213/\320\234\320\260\320\272\320\265\321\202.txt" "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/\320\234\320\260\320\272\320\265\321\202\321\213/\320\234\320\260\320\272\320\265\321\202.txt" new file mode 100644 index 00000000..9f800b01 --- /dev/null +++ "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/\320\234\320\260\320\272\320\265\321\202\321\213/\320\234\320\260\320\272\320\265\321\202.txt" @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + +
+ + +
+
\ No newline at end of file diff --git "a/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221.mxl" "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221.mxl" new file mode 100644 index 00000000..c299327e Binary files /dev/null and "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221.mxl" differ diff --git "a/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221_mxl.txt" "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221_mxl.txt" new file mode 100644 index 00000000..ce32a163 --- /dev/null +++ "b/src/Tests/Gui83/\321\216\320\275\320\270\321\202\320\242\320\265\321\201\321\202_UI_83/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221_mxl.txt" @@ -0,0 +1,9 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +ПользовательИБ ИмяПеременнойПользователь + Имя ПользовательИмя + ОсновнойИнтерфейс + Пароль + РежимЗапуска Управляемое приложение + Роли + Роль Роль1 + Роль ПраваНеобходимыеДляТестирования \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214_\320\242\320\276\321\207\320\272\321\203\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260/ObjectModule.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214_\320\242\320\276\321\207\320\272\321\203\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260/ObjectModule.bsl" similarity index 100% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214_\320\242\320\276\321\207\320\272\321\203\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260/ObjectModule.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214_\320\242\320\276\321\207\320\272\321\203\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260/ObjectModule.bsl" diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214_\320\242\320\276\321\207\320\272\321\203\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260/renames.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214_\320\242\320\276\321\207\320\272\321\203\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260/renames.txt" index bc5e054d..9cbd2136 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214_\320\242\320\276\321\207\320\272\321\203\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260/renames.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214_\320\242\320\276\321\207\320\272\321\203\320\234\320\260\321\200\321\210\321\200\321\203\321\202\320\260/renames.txt" @@ -1,5 +1,5 @@ 7fb0f271-ff7c-46cc-a4c6-061237913139.0\info-->und\7fb0f271-ff7c-46cc-a4c6-061237913139.0\info -7fb0f271-ff7c-46cc-a4c6-061237913139.0\text-->ObjectModule.txt +7fb0f271-ff7c-46cc-a4c6-061237913139.0\text-->ObjectModule.bsl 8509f5aa-e002-42bd-ace1-1478593bba7c-->und\8509f5aa-e002-42bd-ace1-1478593bba7c 8509f5aa-e002-42bd-ace1-1478593bba7c.0-->und\8509f5aa-e002-42bd-ace1-1478593bba7c.0 copyinfo-->und\copyinfo diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\236\321\202\321\207\320\265\321\202\320\235\320\260\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265\320\255\321\202\320\260\320\273\320\276\320\275\321\203/ObjectModule.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\236\321\202\321\207\320\265\321\202\320\235\320\260\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265\320\255\321\202\320\260\320\273\320\276\320\275\321\203/ObjectModule.bsl" similarity index 100% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\236\321\202\321\207\320\265\321\202\320\235\320\260\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265\320\255\321\202\320\260\320\273\320\276\320\275\321\203/ObjectModule.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\236\321\202\321\207\320\265\321\202\320\235\320\260\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265\320\255\321\202\320\260\320\273\320\276\320\275\321\203/ObjectModule.bsl" diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\236\321\202\321\207\320\265\321\202\320\235\320\260\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265\320\255\321\202\320\260\320\273\320\276\320\275\321\203/renames.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\236\321\202\321\207\320\265\321\202\320\235\320\260\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265\320\255\321\202\320\260\320\273\320\276\320\275\321\203/renames.txt" index f7f2e1c3..b60f68ce 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\236\321\202\321\207\320\265\321\202\320\235\320\260\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265\320\255\321\202\320\260\320\273\320\276\320\275\321\203/renames.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202_\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\236\321\202\321\207\320\265\321\202\320\235\320\260\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\320\265\320\255\321\202\320\260\320\273\320\276\320\275\321\203/renames.txt" @@ -5,7 +5,7 @@ 915c368c-cc97-4756-8944-36659b177d1e-->und\915c368c-cc97-4756-8944-36659b177d1e copyinfo-->und\copyinfo f2d2060c-a875-4798-8c3a-7e5b14081428.0\info-->und\f2d2060c-a875-4798-8c3a-7e5b14081428.0\info -f2d2060c-a875-4798-8c3a-7e5b14081428.0\text-->ObjectModule.txt +f2d2060c-a875-4798-8c3a-7e5b14081428.0\text-->ObjectModule.bsl root-->und\root version-->und\version versions-->und\versions diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/ObjectModule.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/ObjectModule.bsl" similarity index 99% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/ObjectModule.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/ObjectModule.bsl" index 55f76d58..a5cb2763 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/ObjectModule.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/ObjectModule.bsl" @@ -46,7 +46,7 @@ УспешныйЭлемент = ПостроительДереваТестов.СоздатьЭлемент(ЭтотОбъект.ИспользуемоеИмяФайла, "УспешныйМетод"); ЭлементПадающийПоУтверждению = ПостроительДереваТестов.СоздатьЭлемент(ЭтотОбъект.ИспользуемоеИмяФайла, "МетодПадающийПоУтверждению"); ЭлементПадающийПоНеизвестнойОшибке = ПостроительДереваТестов.СоздатьЭлемент(ЭтотОбъект.ИспользуемоеИмяФайла, "МетодПадающийПоНеизвестнойОшибке"); - ОтсутствующийЭлемент = ПостроительДереваТестов.СоздатьЭлемент(ЭтотОбъект.ИспользуемоеИмяФайла, "ОтсутствующийМетод"); + ОтсутствующийЭлемент = ПостроительДереваТестов.СоздатьЭлемент(ЭтотОбъект.ИспользуемоеИмяФайла, "ОтсутствующийМетод", "Отсутствующий метод"); Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); Контейнер.Строки.Добавить(УспешныйЭлемент); diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/renames.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/renames.txt" index b8035533..975d0238 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/renames.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/renames.txt" @@ -3,7 +3,7 @@ copyinfo-->und\copyinfo d1b9a471-687e-4a8d-a08e-27df388fd7cd-->und\d1b9a471-687e-4a8d-a08e-27df388fd7cd d1b9a471-687e-4a8d-a08e-27df388fd7cd.0-->und\d1b9a471-687e-4a8d-a08e-27df388fd7cd.0 ea75be97-b437-4750-a79f-478ea2e60f75.0\info-->und\ea75be97-b437-4750-a79f-478ea2e60f75.0\info -ea75be97-b437-4750-a79f-478ea2e60f75.0\text-->ObjectModule.txt +ea75be97-b437-4750-a79f-478ea2e60f75.0\text-->ObjectModule.bsl root-->und\root version-->und\version versions-->und\versions diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/und/d1b9a471-687e-4a8d-a08e-27df388fd7cd.0" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/und/d1b9a471-687e-4a8d-a08e-27df388fd7cd.0" index 3dedf658..48b674c0 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/und/d1b9a471-687e-4a8d-a08e-27df388fd7cd.0" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/und/d1b9a471-687e-4a8d-a08e-27df388fd7cd.0" @@ -9,7 +9,7 @@ - + diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/und/versions" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/und/versions" index 1393f9de..83a424ea 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/und/versions" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/und/versions" @@ -1 +1 @@ -{1,11,"",47c296fa-615a-4aa2-85dc-b37e5129881a,"d1b9a471-687e-4a8d-a08e-27df388fd7cd.0",7a750443-b28c-4d37-8035-7d41c6eab836,"versions",76f01569-f690-4db2-a9db-0556804b77f4,"ea75be97-b437-4750-a79f-478ea2e60f75.0",5392ad51-1958-4506-aef3-6585184e06b0,"root",bf34f7c1-098d-4736-a028-7ff4b89790a2,"d277cc43-f0a9-4723-8f31-1184414687cb",d0fb0ba0-ca22-4fd0-ac62-fbde0d40e179,"aa3398ee-6203-44e1-9810-a0737f241f75",ec3dad7d-5b4b-444c-8012-1eb744b90ce7,"cc3dbe26-3080-4bf0-9ab1-ee85f142f7bc",398e9380-50e9-46e0-8c61-15026bb86cf2,"d1b9a471-687e-4a8d-a08e-27df388fd7cd",fff862e9-1349-4991-94bc-b1ff90d36882,"version",5930e94a-b972-4e9d-99c7-e1cec60de88c,"copyinfo",b69b4d78-1a4f-4b62-8e73-3028aa4dc077} \ No newline at end of file +{1,11,"",1363081a-99a1-4bb1-b1c4-139f1cb59429,"versions",22795326-defc-4270-a74e-c513c9cb3d4b,"d1b9a471-687e-4a8d-a08e-27df388fd7cd.0",d6a7512a-64d2-4765-bf91-6badc09f4ca3,"ea75be97-b437-4750-a79f-478ea2e60f75.0",42d9d79a-594c-4b09-9de4-881d73003c23,"root",8b934366-c546-486e-a509-5e5c1ce07e1f,"aa3398ee-6203-44e1-9810-a0737f241f75",681c3b1a-1ec0-4910-841e-f24e500d8b38,"d277cc43-f0a9-4723-8f31-1184414687cb",d0fb0ba0-ca22-4fd0-ac62-fbde0d40e179,"cc3dbe26-3080-4bf0-9ab1-ee85f142f7bc",398e9380-50e9-46e0-8c61-15026bb86cf2,"d1b9a471-687e-4a8d-a08e-27df388fd7cd",cd9c6ef3-2b67-430f-9eee-e3aff710e867,"version",708f35f4-1359-49dd-8971-aab765d61c34,"copyinfo",edfc2229-406f-4748-a65a-95bd279cb32e} \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275_\320\236\321\202\321\207\320\265\321\202\320\236\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275_\320\236\321\202\321\207\320\265\321\202\320\236\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270.txt" index 3dedf658..48b674c0 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275_\320\236\321\202\321\207\320\265\321\202\320\236\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/\320\234\320\260\320\272\320\265\321\202\321\213/\320\255\321\202\320\260\320\273\320\276\320\275_\320\236\321\202\321\207\320\265\321\202\320\236\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\270.txt" @@ -9,7 +9,7 @@ - + diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/ObjectModule.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/ObjectModule.bsl" similarity index 91% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/ObjectModule.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/ObjectModule.bsl" index c97714a7..15bdcb09 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/ObjectModule.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/ObjectModule.bsl" @@ -25,7 +25,7 @@ ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов"); УспешныйЭлемент = ПостроительДереваТестов.СоздатьЭлемент(ЭтотОбъект.ИспользуемоеИмяФайла, "УспешныйМетод"); ПадающийЭлемент = ПостроительДереваТестов.СоздатьЭлемент(ЭтотОбъект.ИспользуемоеИмяФайла, "ПадающийМетод"); - ОтсутствующийЭлемент = ПостроительДереваТестов.СоздатьЭлемент(ЭтотОбъект.ИспользуемоеИмяФайла, "ОтсутствующийМетод"); + ОтсутствующийЭлемент = ПостроительДереваТестов.СоздатьЭлемент(ЭтотОбъект.ИспользуемоеИмяФайла, "ОтсутствующийМетод", "Отсутствующий метод"); Контейнер = ПостроительДереваТестов.СоздатьКонтейнер("Контейнер"); Контейнер.Строки.Добавить(УспешныйЭлемент); @@ -48,8 +48,8 @@ // Тесты Ожидаем.Что(Отчет.НайтиТекст(УспешныйЭлемент.ИмяМетода), "УспешныйЭлемент").Не_().Существует(); Ожидаем.Что(Отчет.НайтиТекст(ПадающийЭлемент.ИмяМетода), "ПадающийЭлемент").Существует(); - Ожидаем.Что(Отчет.НайтиТекст(ОтсутствующийЭлемент.ИмяМетода), "ОтсутствующийЭлемент").Существует(); - //Ожидаем.Что(Отчет.НайтиТекст(ОтсутствующийЭлемент.ИмяМетода), "ОтсутствующийЭлемент").Не_().Существует(); + Ожидаем.Что(Отчет.НайтиТекст(ОтсутствующийЭлемент.ИмяМетода+", путь"), "ОтсутствующийЭлемент").Не_().Существует(); + Ожидаем.Что(Отчет.НайтиТекст(ОтсутствующийЭлемент.Представление), "Отсутствующий элемент").Существует(); КонецПроцедуры // Методы нужные для тестов diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/renames.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/renames.txt" index 86a3b021..d5dd87ab 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/renames.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/renames.txt" @@ -1,7 +1,7 @@ aa3398ee-6203-44e1-9810-a0737f241f75-->und\aa3398ee-6203-44e1-9810-a0737f241f75 copyinfo-->und\copyinfo ea75be97-b437-4750-a79f-478ea2e60f75.0\info-->und\ea75be97-b437-4750-a79f-478ea2e60f75.0\info -ea75be97-b437-4750-a79f-478ea2e60f75.0\text-->ObjectModule.txt +ea75be97-b437-4750-a79f-478ea2e60f75.0\text-->ObjectModule.bsl root-->und\root version-->und\version versions-->und\versions diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/und/versions" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/und/versions" index 8f9cc14a..da4c0018 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/und/versions" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260MXL/und/versions" @@ -1 +1 @@ -{1,8,"",bba77ce2-d9af-443c-bdb0-c1f56f8d7dbc,"versions",2686611b-a2e8-4023-95e3-dafa2e3393bf,"ea75be97-b437-4750-a79f-478ea2e60f75.0",a47d2c35-d98c-47a7-86d8-37d5b639c920,"root",b78ffa50-5004-414a-8102-a8552f70e735,"aa3398ee-6203-44e1-9810-a0737f241f75",6fbfcef9-df7a-443f-be77-a4d193aee075,"cc3dbe26-3080-4bf0-9ab1-ee85f142f7bc",398e9380-50e9-46e0-8c61-15026bb86cf2,"version",9f291d6f-b7a9-4b02-90b2-33bb2c01df8a,"copyinfo",1e85fddb-16d6-4ba8-bc59-60f6da3f3f78} \ No newline at end of file +{1,8,"",8c0cace3-afdf-42a0-927a-48bb86f3c731,"versions",43a44752-6c20-4934-95b0-570345cfa4b7,"ea75be97-b437-4750-a79f-478ea2e60f75.0",c1be0768-c841-44f0-b8c4-89117840a25e,"root",e8b0addf-573f-49ee-a3b1-a2f7ab6cb08b,"aa3398ee-6203-44e1-9810-a0737f241f75",e7f4e76a-121e-4726-91ad-8a52d247b422,"cc3dbe26-3080-4bf0-9ab1-ee85f142f7bc",398e9380-50e9-46e0-8c61-15026bb86cf2,"version",ff8431ac-f215-49ee-bbcb-3c8f4f6a30ba,"copyinfo",69f0ade6-dd2c-4718-aa2b-f63c24ccae69} \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" similarity index 99% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" index 679c8264..95ebafba 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -41,7 +41,7 @@ Ожидаем.Что(ДеревоТестов.Имя).Равно(ИмяПодсистемы); Ожидаем.Что(ДеревоТестов.Тип).Равно(ТипыУзловДереваТестов.Контейнер); - Ожидаем.Что(ДеревоТестов.Строки).ИмеетДлину(3); + Ожидаем.Что(ДеревоТестов.Строки).ИмеетДлину(4); КонецПроцедуры &НаКлиенте @@ -51,7 +51,7 @@ РезультатыТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикИзПодсистемКонфигурации, ДеревоТестов); - Ожидаем.Что(РезультатыТестирования.КоличествоТестов, "КоличествоТестов").Равно(18); + Ожидаем.Что(РезультатыТестирования.КоличествоТестов, "КоличествоТестов").Равно(20); Ожидаем.Что(РезультатыТестирования.КоличествоСломанныхТестов, "КоличествоСломанныхТестов").Равно(0); Ожидаем.Что(РезультатыТестирования.КоличествоНеРеализованныхТестов, "КоличествоНеРеализованныхТестов").Равно(0); КонецПроцедуры diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.bsl" similarity index 99% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.bsl" index 4d85c539..f2b441c8 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.bsl" @@ -34,7 +34,7 @@ Ожидаем.Что(ДеревоТестов.Имя).Равно(ИмяПодсистемы); Ожидаем.Что(ДеревоТестов.Тип).Равно(ТипыУзловДереваТестов.Контейнер); - Ожидаем.Что(ДеревоТестов.Строки).ИмеетДлину(3); + Ожидаем.Что(ДеревоТестов.Строки).ИмеетДлину(4); КонецПроцедуры Процедура ТестДолжен_ВыполнитьТесты_Подсистемы_Тестовая() Экспорт @@ -43,7 +43,7 @@ РезультатыТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикИзПодсистемКонфигурации, ДеревоТестов); - Ожидаем.Что(РезультатыТестирования.КоличествоТестов, "КоличествоТестов").Равно(9); + Ожидаем.Что(РезультатыТестирования.КоличествоТестов, "КоличествоТестов").Равно(11); Ожидаем.Что(РезультатыТестирования.КоличествоСломанныхТестов, "КоличествоСломанныхТестов").Равно(0); Ожидаем.Что(РезультатыТестирования.КоличествоНеРеализованныхТестов, "КоличествоНеРеализованныхТестов").Равно(0); КонецПроцедуры diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/maps.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/maps.txt" new file mode 100644 index 00000000..79a47c28 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/maps.txt" @@ -0,0 +1 @@ +Form\Форма\Форма.bsl-->6722f33c-a0c0-4fd3-a14e-3cb09ea508e0.0 (50, 185) diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/renames.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/renames.txt" index 3f678554..ad97d8fa 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/renames.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/renames.txt" @@ -1,8 +1,6 @@ 3ff08944-a004-49a6-bc1f-2c332c3d8712.0\info-->und\3ff08944-a004-49a6-bc1f-2c332c3d8712.0\info -3ff08944-a004-49a6-bc1f-2c332c3d8712.0\text-->ObjectModule.txt +3ff08944-a004-49a6-bc1f-2c332c3d8712.0\text-->ObjectModule.bsl 6722f33c-a0c0-4fd3-a14e-3cb09ea508e0-->und\6722f33c-a0c0-4fd3-a14e-3cb09ea508e0 -6722f33c-a0c0-4fd3-a14e-3cb09ea508e0.0-->C:\Projects\GitHub\xUnitFor1C\src\Tests\Plugins\Тесты_ЗагрузчикИзПодсистемКонфигурации\Form\Форма\Форма.txt -6722f33c-a0c0-4fd3-a14e-3cb09ea508e0.0-->und\6722f33c-a0c0-4fd3-a14e-3cb09ea508e0.0 6722f33c-a0c0-4fd3-a14e-3cb09ea508e0.0-->und\6722f33c-a0c0-4fd3-a14e-3cb09ea508e0.0 90851520-10fe-4eef-9409-585f8222427b-->und\90851520-10fe-4eef-9409-585f8222427b copyinfo-->und\copyinfo diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/6722f33c-a0c0-4fd3-a14e-3cb09ea508e0" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/6722f33c-a0c0-4fd3-a14e-3cb09ea508e0" index 06d36831..d5bc8cd5 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/6722f33c-a0c0-4fd3-a14e-3cb09ea508e0" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/6722f33c-a0c0-4fd3-a14e-3cb09ea508e0" @@ -1,10 +1,15 @@ {1, {1, {0, -{9, -{0, +{12, +{1, {0,0,6722f33c-a0c0-4fd3-a14e-3cb09ea508e0},"Форма", -{1,"ru","Форма"},""},0,1}, +{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1, +{2, +{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, +{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} +} +}, {0} } },0} \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/6722f33c-a0c0-4fd3-a14e-3cb09ea508e0.0" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/6722f33c-a0c0-4fd3-a14e-3cb09ea508e0.0" index ee35a00c..c19af64a 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/6722f33c-a0c0-4fd3-a14e-3cb09ea508e0.0" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/6722f33c-a0c0-4fd3-a14e-3cb09ea508e0.0" @@ -1,9 +1,9 @@ -{2, -{28,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, +{3, +{42,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, {1,0},0,0,1,1,1,0,1,0, -{0}, +{0,0,0}, {0},1, -{17, +{21, {-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -14,19 +14,40 @@ {3,4, {0} }, -{6,3,0,1}, +{7,3,0,1,100}, {0,0,0},1, -{0,0,1},0,1},0,"","",1, -{17, +{0,0,1},0,1,0,0,0,3,3},0,"","",1, +{21, {0},0,0,0,7,"Navigator", {1,0}, {1,0},0,1,0,0,0,2,2, {3,4, {0} }, -{6,3,0,1}, -{0,0,0},0,0,1} -},"&НаКлиенте +{7,3,0,1,100}, +{0,0,0},0,0,1,0,1, +{10, +{0},0,0,0,0,"NavigatorExtendedTooltip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,"",2,0,0,0,0,0,3,3,0,0,2},"&НаКлиенте Перем КонтекстЯдра; &НаКлиенте Перем Ожидаем; @@ -69,7 +90,7 @@ Ожидаем.Что(ДеревоТестов.Имя).Равно(ИмяПодсистемы); Ожидаем.Что(ДеревоТестов.Тип).Равно(ТипыУзловДереваТестов.Контейнер); - Ожидаем.Что(ДеревоТестов.Строки).ИмеетДлину(3); + Ожидаем.Что(ДеревоТестов.Строки).ИмеетДлину(4); КонецПроцедуры &НаКлиенте @@ -79,7 +100,7 @@ РезультатыТестирования = КонтекстЯдра.ВыполнитьТесты(ЗагрузчикИзПодсистемКонфигурации, ДеревоТестов); - Ожидаем.Что(РезультатыТестирования.КоличествоТестов, ""КоличествоТестов"").Равно(18); + Ожидаем.Что(РезультатыТестирования.КоличествоТестов, ""КоличествоТестов"").Равно(20); Ожидаем.Что(РезультатыТестирования.КоличествоСломанныхТестов, ""КоличествоСломанныхТестов"").Равно(0); Ожидаем.Что(РезультатыТестирования.КоличествоНеРеализованныхТестов, ""КоличествоНеРеализованныхТестов"").Равно(0); КонецПроцедуры @@ -198,5 +219,4 @@ L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} {0,0}, {0,0}, {0,0}, -{0,0} -} \ No newline at end of file +{0,0},0,0} \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/90851520-10fe-4eef-9409-585f8222427b" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/90851520-10fe-4eef-9409-585f8222427b" index fbb0bf84..4eff4a4a 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/90851520-10fe-4eef-9409-585f8222427b" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/90851520-10fe-4eef-9409-585f8222427b" @@ -4,9 +4,9 @@ {1, {4,7784af5c-5725-445b-85cc-f9c2719ae216,0d8ed39a-8b21-4059-992c-4765be14b5ab, {0, -{0, +{1, {0,0,3ff08944-a004-49a6-bc1f-2c332c3d8712},"Тесты_ЗагрузчикИзПодсистемКонфигурации", -{1,"ru","Тесты загрузчик из подсистем конфигурации"},""} +{1,"ru","Тесты загрузчик из подсистем конфигурации"},"",0,0} },6722f33c-a0c0-4fd3-a14e-3cb09ea508e0,"",00000000-0000-0000-0000-000000000000},4, {2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, {3daea016-69b7-4ed4-9453-127911372fe6,0}, diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/versions" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/versions" index 027723b5..e453d5b0 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/versions" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\230\320\267\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/versions" @@ -1 +1 @@ -{1,9,"",5d2cc332-c4e8-43b6-99f4-69aae06e3592,"versions",2947b7a7-911c-4d2c-a182-3d8e11205bff,"root",599b9b09-5e27-41cc-a39d-99a4c8172191,"6722f33c-a0c0-4fd3-a14e-3cb09ea508e0.0",bca19527-bf4d-4843-a5ba-29d5ac679268,"3ff08944-a004-49a6-bc1f-2c332c3d8712.0",bbe44565-cd64-4e04-a66a-96e1fa0a7475,"6722f33c-a0c0-4fd3-a14e-3cb09ea508e0",4dc03a00-e5e4-4ae3-b48c-9b2db59485cf,"version",433c8417-a1da-4870-aea8-f28691fbc111,"90851520-10fe-4eef-9409-585f8222427b",460dd851-cd4e-42a5-9c11-4617bd586d70,"copyinfo",d08f7c6a-008d-47c5-bc23-5413ee24741e} \ No newline at end of file +{1,9,"",17cd3dd9-c2c5-463b-84a2-76fbf571a419,"3ff08944-a004-49a6-bc1f-2c332c3d8712.0",fefd406b-a0af-49c7-a93f-f885e2794e63,"6722f33c-a0c0-4fd3-a14e-3cb09ea508e0",62943d39-1983-40ac-9356-dc434086b346,"6722f33c-a0c0-4fd3-a14e-3cb09ea508e0.0",d0bd2907-6a18-4d7c-a076-49331995a249,"90851520-10fe-4eef-9409-585f8222427b",89859fe7-a58e-49ac-bda4-19330e9d2e82,"copyinfo",bac1d790-322f-4c12-b3b9-c3ba7c6f3023,"root",ed2316a9-ec5c-4eb8-a7c1-69044b49a96f,"version",c1e6d37f-9ef9-4d9d-b8ee-03ef8932c928,"versions",0f817b82-c216-44f6-8a05-215c079f5524} \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/ObjectModule.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/ObjectModule.bsl" similarity index 100% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/ObjectModule.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/ObjectModule.bsl" diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/maps.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/maps.txt" new file mode 100644 index 00000000..c560e6ba --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/maps.txt" @@ -0,0 +1 @@ +Макеты\ТестовыйНаборДляЗагрузчикаФС.txt-->aa665d3a-fc64-4191-a6c3-74c56963f0b8.0 diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/renames.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/renames.txt" index 2213782e..55be6836 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/renames.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260/renames.txt" @@ -1,8 +1,7 @@ 68b835e4-e814-43b4-8a63-236ef399bcee-->und\68b835e4-e814-43b4-8a63-236ef399bcee 9d8959d3-fadc-451f-b28a-b1a2e1a6ad96.0\info-->und\9d8959d3-fadc-451f-b28a-b1a2e1a6ad96.0\info -9d8959d3-fadc-451f-b28a-b1a2e1a6ad96.0\text-->ObjectModule.txt +9d8959d3-fadc-451f-b28a-b1a2e1a6ad96.0\text-->ObjectModule.bsl aa665d3a-fc64-4191-a6c3-74c56963f0b8-->und\aa665d3a-fc64-4191-a6c3-74c56963f0b8 -aa665d3a-fc64-4191-a6c3-74c56963f0b8.0-->Макеты\ТестовыйНаборДляЗагрузчикаФС.txt aa665d3a-fc64-4191-a6c3-74c56963f0b8.0-->und\aa665d3a-fc64-4191-a6c3-74c56963f0b8.0 copyinfo-->und\copyinfo root-->und\root diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" similarity index 96% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" index 417eb2ed..c7f65e85 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -6,6 +6,8 @@ Перем ВременныеФайлы; &НаКлиенте Перем Ожидаем; +&НаКлиенте +Перем ПутьКФайлуПолный Экспорт; &НаКлиенте Процедура Инициализация(КонтекстЯдраПараметр) Экспорт @@ -206,8 +208,15 @@ // { Проверка загрузки тестовых обработок с новым API &НаКлиенте Процедура ТестДолжен_Загрузить_ОбработкуСНовымAPI() Экспорт - ФайлКонтекстаЯдра = Новый Файл(КонтекстЯдра.ИспользуемоеИмяФайла); - ФайлОбработкиСНовымAPI = Новый Файл(ФайлКонтекстаЯдра.Путь + "\Tests\Plugins\Тесты_ЗагрузчикФайла_НовыйAPIОбъявленияТестов.epf"); + + Если ЗначениеЗаполнено(ПутьКФайлуПолный) Тогда + ФайлКонтекстаЯдра = Новый Файл(ПутьКФайлуПолный); + ФайлОбработкиСНовымAPI = Новый Файл(ФайлКонтекстаЯдра.Путь + "\Тесты_ЗагрузчикФайла_НовыйAPIОбъявленияТестов.epf"); + Иначе + ФайлКонтекстаЯдра = Новый Файл(КонтекстЯдра["ИспользуемоеИмяФайла"]); + ФайлОбработкиСНовымAPI = Новый Файл(ФайлКонтекстаЯдра.Путь + "\Tests\Plugins\Тесты_ЗагрузчикФайла_НовыйAPIОбъявленияТестов.epf"); + КонецЕсли; + ДеревоТестов = ЗагрузчикФайла.Загрузить(КонтекстЯдра, ФайлОбработкиСНовымAPI.ПолноеИмя); ТестыОбработкиСНовымAPI = ДеревоТестов.Строки[0]; diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/ObjectModule.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/ObjectModule.bsl" similarity index 94% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/ObjectModule.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/ObjectModule.bsl" index 584cd643..fe9de935 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/ObjectModule.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/ObjectModule.bsl" @@ -4,6 +4,11 @@ Перем ЗагрузчикФайла; Перем ВременныеФайлы; +// Переменная с путем к обработке в файловой системы +// Используется в случаях, когда обработка запущена из встроенного в конфигурацию браузера тестов, +// т.к. в этом случае в свойстве ИспользуемоеИмяФайла содержится адрес временного хранилища, а не непосредственный путь +Перем ПутьКФайлуПолный Экспорт; + Процедура Инициализация(КонтекстЯдраПараметр) Экспорт КонтекстЯдра = КонтекстЯдраПараметр; Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); @@ -164,8 +169,14 @@ // { Проверка загрузки тестовых обработок с новым API Процедура ТестДолжен_Загрузить_ОбработкуСНовымAPI() Экспорт - ФайлКонтекстаЯдра = Новый Файл(КонтекстЯдра.ИспользуемоеИмяФайла); - ФайлОбработкиСНовымAPI = Новый Файл(ФайлКонтекстаЯдра.Путь + "\Tests\Plugins\Тесты_ЗагрузчикФайла_НовыйAPIОбъявленияТестов.epf"); + + Если ЗначениеЗаполнено(ПутьКФайлуПолный) Тогда + ФайлКонтекстаЯдра = Новый Файл(ПутьКФайлуПолный); + Иначе + ФайлКонтекстаЯдра = Новый Файл(КонтекстЯдра.ИспользуемоеИмяФайла); + КонецЕсли; + ФайлОбработкиСНовымAPI = Новый Файл(ФайлКонтекстаЯдра.Путь + "Тесты_ЗагрузчикФайла_НовыйAPIОбъявленияТестов.epf"); // "\Tests\Plugins\Тесты_ЗагрузчикФайла_НовыйAPIОбъявленияТестов.epf"); + ДеревоТестов = ЗагрузчикФайла.Загрузить(КонтекстЯдра, ФайлОбработкиСНовымAPI.ПолноеИмя); ТестыОбработкиСНовымAPI = ДеревоТестов.Строки[0]; diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/maps.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/maps.txt" new file mode 100644 index 00000000..2f69d607 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/maps.txt" @@ -0,0 +1,3 @@ +Form\Форма\Форма.bsl-->7df6502f-da6a-49fb-9624-65420db40a03.0 (50, 355) +Макеты\ТестовыйНаборДляЗагрузчикаФС.txt-->fd4bd0af-2a9a-4445-8a21-dfb7acb16080.0 +Макеты\ТестовыйНаборСоСтрогимПорядкомВыполнения.txt-->794aea94-ea53-446d-8477-ce17f50c6825.0 diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/renames.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/renames.txt" index 241bc63a..53b448bb 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/renames.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/renames.txt" @@ -1,16 +1,12 @@ 421a27d5-c2f1-4844-86c0-c04fb5a1001f-->und\421a27d5-c2f1-4844-86c0-c04fb5a1001f 794aea94-ea53-446d-8477-ce17f50c6825-->und\794aea94-ea53-446d-8477-ce17f50c6825 -794aea94-ea53-446d-8477-ce17f50c6825.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_ЗагрузчикФайла\Макеты\ТестовыйНаборСоСтрогимПорядкомВыполнения.txt 794aea94-ea53-446d-8477-ce17f50c6825.0-->und\794aea94-ea53-446d-8477-ce17f50c6825.0 7df6502f-da6a-49fb-9624-65420db40a03-->und\7df6502f-da6a-49fb-9624-65420db40a03 -7df6502f-da6a-49fb-9624-65420db40a03.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_ЗагрузчикФайла\Form\Форма\Форма.txt -7df6502f-da6a-49fb-9624-65420db40a03.0-->und\7df6502f-da6a-49fb-9624-65420db40a03.0 7df6502f-da6a-49fb-9624-65420db40a03.0-->und\7df6502f-da6a-49fb-9624-65420db40a03.0 copyinfo-->und\copyinfo ee4ff151-9500-4966-9c18-8499b60534d0.0\info-->und\ee4ff151-9500-4966-9c18-8499b60534d0.0\info -ee4ff151-9500-4966-9c18-8499b60534d0.0\text-->ObjectModule.txt +ee4ff151-9500-4966-9c18-8499b60534d0.0\text-->ObjectModule.bsl fd4bd0af-2a9a-4445-8a21-dfb7acb16080-->und\fd4bd0af-2a9a-4445-8a21-dfb7acb16080 -fd4bd0af-2a9a-4445-8a21-dfb7acb16080.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_ЗагрузчикФайла\Макеты\ТестовыйНаборДляЗагрузчикаФС.txt fd4bd0af-2a9a-4445-8a21-dfb7acb16080.0-->und\fd4bd0af-2a9a-4445-8a21-dfb7acb16080.0 root-->und\root version-->und\version diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/421a27d5-c2f1-4844-86c0-c04fb5a1001f" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/421a27d5-c2f1-4844-86c0-c04fb5a1001f" index 8d24ab8d..cd9e086f 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/421a27d5-c2f1-4844-86c0-c04fb5a1001f" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/421a27d5-c2f1-4844-86c0-c04fb5a1001f" @@ -4,9 +4,9 @@ {1, {4,cd570446-fb13-4855-bb0e-5695a8e88940,7153cfd0-e9c6-4a51-b1f3-0db42c9f1c9a, {0, -{0, +{1, {0,0,ee4ff151-9500-4966-9c18-8499b60534d0},"Тесты_ЗагрузчикФайла", -{1,"ru","Тесты загрузчик файла"},""} +{1,"ru","Тесты загрузчик файла"},"",0,0} },7df6502f-da6a-49fb-9624-65420db40a03,"",00000000-0000-0000-0000-000000000000},4, {2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, {3daea016-69b7-4ed4-9453-127911372fe6,2,fd4bd0af-2a9a-4445-8a21-dfb7acb16080,794aea94-ea53-446d-8477-ce17f50c6825}, diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/7df6502f-da6a-49fb-9624-65420db40a03" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/7df6502f-da6a-49fb-9624-65420db40a03" index 2ff0686d..16337716 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/7df6502f-da6a-49fb-9624-65420db40a03" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/7df6502f-da6a-49fb-9624-65420db40a03" @@ -2,9 +2,9 @@ {1, {0, {12, -{0, +{1, {0,0,7df6502f-da6a-49fb-9624-65420db40a03},"Форма", -{1,"ru","Форма"},""},0,1, +{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1, {2, {"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, {"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/7df6502f-da6a-49fb-9624-65420db40a03.0" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/7df6502f-da6a-49fb-9624-65420db40a03.0" index bc309d2a..4b4eed90 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/7df6502f-da6a-49fb-9624-65420db40a03.0" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/7df6502f-da6a-49fb-9624-65420db40a03.0" @@ -1,9 +1,9 @@ -{2, -{36,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, +{3, +{42,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, {1,0},0,0,1,1,1,0,1,0, -{0}, +{0,0,0}, {0},1, -{19, +{21, {-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -16,8 +16,8 @@ }, {7,3,0,1,100}, {0,0,0},1, -{0,0,1},0,1,0,0},0,"","",1, -{19, +{0,0,1},0,1,0,0,0,3,3},0,"","",1, +{21, {0},0,0,0,7,"Navigator", {1,0}, {1,0},0,1,0,0,0,2,2, @@ -26,7 +26,7 @@ }, {7,3,0,1,100}, {0,0,0},0,0,1,0,1, -{8, +{10, {0},0,0,0,0,"NavigatorExtendedTooltip", {1,0}, {1,0},1,0,0,2,2, @@ -36,7 +36,7 @@ {7,3,0,1,100}, {0,0,0},1, {5,0,0,3,0, -{0}, +{0,0,0}, {3,4, {0} }, @@ -47,8 +47,7 @@ {0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} },0,1,2, {1, -{1,0},0},0,0} -},1,"",2,0},"&НаКлиенте +{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,"",2,0,0,0,0,0,3,3,0,0,2},"&НаКлиенте Перем КонтекстЯдра; &НаКлиенте Перем ЗагрузчикФайла; @@ -56,6 +55,8 @@ Перем ВременныеФайлы; &НаКлиенте Перем Ожидаем; +&НаКлиенте +Перем ПутьКФайлуПолный Экспорт; &НаКлиенте Процедура Инициализация(КонтекстЯдраПараметр) Экспорт @@ -256,8 +257,15 @@ // { Проверка загрузки тестовых обработок с новым API &НаКлиенте Процедура ТестДолжен_Загрузить_ОбработкуСНовымAPI() Экспорт - ФайлКонтекстаЯдра = Новый Файл(КонтекстЯдра.ИспользуемоеИмяФайла); - ФайлОбработкиСНовымAPI = Новый Файл(ФайлКонтекстаЯдра.Путь + ""\Tests\Plugins\Тесты_ЗагрузчикФайла_НовыйAPIОбъявленияТестов.epf""); + + Если ЗначениеЗаполнено(ПутьКФайлуПолный) Тогда + ФайлКонтекстаЯдра = Новый Файл(ПутьКФайлуПолный); + ФайлОбработкиСНовымAPI = Новый Файл(ФайлКонтекстаЯдра.Путь + ""\Тесты_ЗагрузчикФайла_НовыйAPIОбъявленияТестов.epf""); + Иначе + ФайлКонтекстаЯдра = Новый Файл(КонтекстЯдра[""ИспользуемоеИмяФайла""]); + ФайлОбработкиСНовымAPI = Новый Файл(ФайлКонтекстаЯдра.Путь + ""\Tests\Plugins\Тесты_ЗагрузчикФайла_НовыйAPIОбъявленияТестов.epf""); + КонецЕсли; + ДеревоТестов = ЗагрузчикФайла.Загрузить(КонтекстЯдра, ФайлОбработкиСНовымAPI.ПолноеИмя); ТестыОбработкиСНовымAPI = ДеревоТестов.Строки[0]; @@ -381,5 +389,4 @@ L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} {0,0}, {0,0}, {0,0}, -{0,0} -} \ No newline at end of file +{0,0},0,0} \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/versions" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/versions" index 2a23c996..f30642be 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/versions" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260/und/versions" @@ -1 +1 @@ -{1,13,"",2ac0017a-4858-4a00-aebf-4236420eaba5,"794aea94-ea53-446d-8477-ce17f50c6825.0",ba34d1db-8e84-4aca-a7e6-90a05bf803e8,"versions",27b8a56b-40f9-4ef0-906e-f8091c2045ef,"794aea94-ea53-446d-8477-ce17f50c6825",967b5f60-9706-460d-ad5e-6ae2ce8f0f48,"root",945e044b-e043-43b5-a0c6-a7a5c54ae2ba,"421a27d5-c2f1-4844-86c0-c04fb5a1001f",416eb34a-cd2f-4689-a35b-7570de3a1453,"7df6502f-da6a-49fb-9624-65420db40a03",fa682bc6-d32a-46d5-bde7-92c2b3ade1b6,"version",7008de8b-68a5-4388-a2a0-761af815047c,"7df6502f-da6a-49fb-9624-65420db40a03.0",aa2453de-6755-447c-acde-c6480fbf78e5,"fd4bd0af-2a9a-4445-8a21-dfb7acb16080.0",11a9cd85-334b-49a7-b276-e2a44deb8216,"ee4ff151-9500-4966-9c18-8499b60534d0.0",7ce1a6ee-4d04-4d96-859c-de026e75f6ee,"fd4bd0af-2a9a-4445-8a21-dfb7acb16080",8b261f73-f22d-4e2f-ad11-fbc297aed233,"copyinfo",1989114a-504b-4482-9e8e-c7fe467fef76} \ No newline at end of file +{1,13,"",c2025435-8f28-47ac-9bd0-4983ca0d504d,"421a27d5-c2f1-4844-86c0-c04fb5a1001f",cd145580-8a65-427a-b724-1aaad5085823,"794aea94-ea53-446d-8477-ce17f50c6825",967b5f60-9706-460d-ad5e-6ae2ce8f0f48,"794aea94-ea53-446d-8477-ce17f50c6825.0",ba34d1db-8e84-4aca-a7e6-90a05bf803e8,"7df6502f-da6a-49fb-9624-65420db40a03",79cecf5b-fd16-41a9-ab0f-749c37bfff82,"7df6502f-da6a-49fb-9624-65420db40a03.0",fe77c0b6-443f-4717-be20-1efa390debdc,"copyinfo",f7b94ea5-f82a-401f-b849-786dc2822a1c,"ee4ff151-9500-4966-9c18-8499b60534d0.0",cbe3caf5-f3df-4f06-9758-9e384812618a,"fd4bd0af-2a9a-4445-8a21-dfb7acb16080",8b261f73-f22d-4e2f-ad11-fbc297aed233,"fd4bd0af-2a9a-4445-8a21-dfb7acb16080.0",11a9cd85-334b-49a7-b276-e2a44deb8216,"root",53b35b7b-b213-4d32-9809-cccc8582e1ec,"version",55bb2a29-7679-4d03-9004-f03ff21ce1e6,"versions",7e34aed9-26da-4f99-a7cc-78889af5768e} \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260_\320\235\320\276\320\262\321\213\320\271API\320\236\320\261\321\212\321\217\320\262\320\273\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260_\320\235\320\276\320\262\321\213\320\271API\320\236\320\261\321\212\321\217\320\262\320\273\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" similarity index 100% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260_\320\235\320\276\320\262\321\213\320\271API\320\236\320\261\321\212\321\217\320\262\320\273\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260_\320\235\320\276\320\262\321\213\320\271API\320\236\320\261\321\212\321\217\320\262\320\273\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260_\320\235\320\276\320\262\321\213\320\271API\320\236\320\261\321\212\321\217\320\262\320\273\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262/ObjectModule.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260_\320\235\320\276\320\262\321\213\320\271API\320\236\320\261\321\212\321\217\320\262\320\273\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262/ObjectModule.bsl" similarity index 100% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260_\320\235\320\276\320\262\321\213\320\271API\320\236\320\261\321\212\321\217\320\262\320\273\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262/ObjectModule.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260_\320\235\320\276\320\262\321\213\320\271API\320\236\320\261\321\212\321\217\320\262\320\273\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262/ObjectModule.bsl" diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260_\320\235\320\276\320\262\321\213\320\271API\320\236\320\261\321\212\321\217\320\262\320\273\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262/maps.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260_\320\235\320\276\320\262\321\213\320\271API\320\236\320\261\321\212\321\217\320\262\320\273\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262/maps.txt" new file mode 100644 index 00000000..c9ebaf7f --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260_\320\235\320\276\320\262\321\213\320\271API\320\236\320\261\321\212\321\217\320\262\320\273\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262/maps.txt" @@ -0,0 +1 @@ +Form\Форма\Форма.bsl-->3ed246cc-b126-4dd4-b414-004043927717.0 (51, 124) diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260_\320\235\320\276\320\262\321\213\320\271API\320\236\320\261\321\212\321\217\320\262\320\273\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262/renames.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260_\320\235\320\276\320\262\321\213\320\271API\320\236\320\261\321\212\321\217\320\262\320\273\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262/renames.txt" index 1bc2b905..45433117 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260_\320\235\320\276\320\262\321\213\320\271API\320\236\320\261\321\212\321\217\320\262\320\273\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262/renames.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\244\320\260\320\271\320\273\320\260_\320\235\320\276\320\262\321\213\320\271API\320\236\320\261\321\212\321\217\320\262\320\273\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262/renames.txt" @@ -1,9 +1,7 @@ 3ed246cc-b126-4dd4-b414-004043927717-->und\3ed246cc-b126-4dd4-b414-004043927717 -3ed246cc-b126-4dd4-b414-004043927717.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_ЗагрузчикФайла_НовыйAPIОбъявленияТестов\Form\Форма\Форма.txt -3ed246cc-b126-4dd4-b414-004043927717.0-->und\3ed246cc-b126-4dd4-b414-004043927717.0 3ed246cc-b126-4dd4-b414-004043927717.0-->und\3ed246cc-b126-4dd4-b414-004043927717.0 4a17bf09-a240-4cec-b0b0-8d45028bd3c0.0\info-->und\4a17bf09-a240-4cec-b0b0-8d45028bd3c0.0\info -4a17bf09-a240-4cec-b0b0-8d45028bd3c0.0\text-->ObjectModule.txt +4a17bf09-a240-4cec-b0b0-8d45028bd3c0.0\text-->ObjectModule.bsl copyinfo-->und\copyinfo e55ff8fe-4c3c-46ec-af12-821e21292f5e-->und\e55ff8fe-4c3c-46ec-af12-821e21292f5e root-->und\root diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" similarity index 100% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/ObjectModule.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/ObjectModule.bsl" similarity index 100% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/ObjectModule.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/ObjectModule.bsl" diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/maps.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/maps.txt" new file mode 100644 index 00000000..110965ed --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/maps.txt" @@ -0,0 +1 @@ +Form\Форма\Форма.bsl-->a72de6ff-3337-4e2c-a61c-6d0f3ff8b0fe.0 (51, 138) diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/renames.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/renames.txt" index 6f8c8587..ece553fd 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/renames.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\237\320\260\321\200\321\201\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\275\320\276\320\271\320\241\321\202\321\200\320\276\320\272\320\270/renames.txt" @@ -1,8 +1,6 @@ 2258d8fc-7195-4b5f-8a75-d8246742a221.0\info-->und\2258d8fc-7195-4b5f-8a75-d8246742a221.0\info -2258d8fc-7195-4b5f-8a75-d8246742a221.0\text-->ObjectModule.txt +2258d8fc-7195-4b5f-8a75-d8246742a221.0\text-->ObjectModule.bsl a72de6ff-3337-4e2c-a61c-6d0f3ff8b0fe-->und\a72de6ff-3337-4e2c-a61c-6d0f3ff8b0fe -a72de6ff-3337-4e2c-a61c-6d0f3ff8b0fe.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_ПарсерКоманднойСтроки\Form\Форма\Форма.txt -a72de6ff-3337-4e2c-a61c-6d0f3ff8b0fe.0-->und\a72de6ff-3337-4e2c-a61c-6d0f3ff8b0fe.0 a72de6ff-3337-4e2c-a61c-6d0f3ff8b0fe.0-->und\a72de6ff-3337-4e2c-a61c-6d0f3ff8b0fe.0 copyinfo-->und\copyinfo eff959e6-4f20-4a2b-b413-7cbed1281eae-->und\eff959e6-4f20-4a2b-b413-7cbed1281eae diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/ObjectModule.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/ObjectModule.bsl" similarity index 100% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/ObjectModule.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/ObjectModule.bsl" diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/maps.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/maps.txt" new file mode 100644 index 00000000..d5c32cfd --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/maps.txt" @@ -0,0 +1,56 @@ +Макеты\ИзменениеПредопределенногоСправочника.mxl-->bdaf3325-bb9b-4677-ba6e-56a642df2687.0 +Макеты\ИзменениеПредопределенногоСправочникаПоГуид.mxl-->e27b2c46-7b76-4b8d-a3e8-e1b0562943ca.0 +Макеты\НайтиИПерезаполнитьПростойСправочникПоГуидСсылки.mxl-->b0adb70d-1e31-4637-8c1d-7f6f33baaa7b.0 +Макеты\Пример.mxl-->7af53c68-a0ad-4144-85f4-d11d73853384.0 +Макеты\РегистрНакопления_ПоискРегистратора.mxl-->8cda2b2d-c64b-4e21-9de6-dd49a12576e0.0 +Макеты\СозданиеГруппыСправочникаИДочернегоЭлемента.mxl-->9cdde6cb-0ea6-4850-ba3c-c7872ceaf52e.0 +Макеты\СозданиеГруппыСЭлементамиТолькоДляГруппы.mxl-->80a98912-c1e3-43b2-ae00-21118328107f.0 +Макеты\СозданиеДвухЗаписейВРегистреБухгалтерии.mxl-->714a1e77-6f6d-4a2f-9881-9dbb862d24a0.0 +Макеты\СозданиеДвухЗаписейВРегистреНакопления.mxl-->4be1f7e9-0ba6-478f-88e1-190254fe6c6b.0 +Макеты\СозданиеДвухЗаписейВРегистреНакопленияУКоторыхЯвноЗаданВидДвижения.mxl-->53c26b45-95ee-49f0-b946-d7b3e4fb2ff8.0 +Макеты\СозданиеДвухЗаписейВРегистреСведений_ПоискЭлементаПоНаименованию.mxl-->509a10d9-9207-4066-a28d-978c04e34376.0 +Макеты\СозданиеДвухЗаписейВРегистреСведений.mxl-->214520bb-70cc-4e3a-a1be-4c6a0f5d9c73.0 +Макеты\СозданиеДвухЗаписейВРегистреСведенийПодчиненномРегистратору.mxl-->165eaf09-2e00-4e46-be94-35f3b4ede990.0 +Макеты\СозданиеДвухЗаписейВРегистреСведенийЧерезНаборЗаписей.mxl-->8c5a9e9d-a3b1-4e65-ac06-1b4ae36468d1.0 +Макеты\СозданиеДвухНаборовЗаписейВРегистреСведений.mxl-->c698bb5e-86eb-40ec-96d7-b8badc816715.0 +Макеты\СозданиеДвухПростыхСправочников_с_ОдинаковымИменемПеременной.mxl-->fca00537-610e-40cf-aaf4-fb5faab4fda1.0 +Макеты\СозданиеДвухПростыхСправочников.mxl-->d28a1211-a8c4-425c-87f2-c429f96d426f.0 +Макеты\СозданиеДокумента_РежимЗаписи_Проведение.mxl-->2b4cbacc-14fa-4e57-bfab-9e9af6028901.0 +Макеты\СозданиеДокументаНаТекущуюДату.mxl-->91470bcf-5031-4550-8470-113df7855131.0 +Макеты\СозданиеДокументаСДвумяСтрокамиВТабличнойЧасти.mxl-->e893fd06-6ba8-4dd4-93be-d0810d679876.0 +Макеты\СозданиеЕщеНеЗаписанногоОбъектаПростогоСправочника.mxl-->8b1a6140-f7e3-4151-adce-db0a2046364e.0 +Макеты\СозданиеОбъектаСДвумяСтрокамиВТабличнойЧасти.mxl-->f175b23c-5152-4613-96dd-f6623676046d.0 +Макеты\СозданиеОбъектаСЗаполненнымРеквизитомИзПредопределенныхЗначенийСправочника.mxl-->451b28be-4cf6-4356-8c46-ad5cbc0deed0.0 +Макеты\СозданиеОбъектаСЗаполненымРеквизитомТипаПеречисление.mxl-->2bf29867-3e26-4d83-8667-da5f11442794.0 +Макеты\СозданиеОдногоПользователяИБ.mxl-->68803c49-0345-4f51-9184-079744379408.0 +Макеты\СозданиеОдногоСправочникаВладельцаБезПодчиненногоСправочника.mxl-->c0731e2c-fd73-4143-8a60-52e72c809569.0 +Макеты\СозданиеОднойЗаписиВРегистреБухгалтерии.mxl-->7617c188-4e70-484e-816e-20eda5229667.0 +Макеты\СозданиеОднойЗаписиВРегистреНакопления.mxl-->fc5337e1-f68d-4b0c-82d4-2eedfe89178c.0 +Макеты\СозданиеПростогоБизнесПроцесса.mxl-->c7efc6f1-5a5e-4278-9b62-9cf796fb363e.0 +Макеты\СозданиеПростогоСправочника_Параметры.mxl-->4a875fe8-d6dd-4488-ab26-9f1d41d624bb.0 +Макеты\СозданиеПростогоСправочника_ПустыеСтроки.mxl-->dac1badd-b7ee-41a1-ab54-f227e08f2cb8.0 +Макеты\СозданиеПростогоСправочника_РежимВыражение.mxl-->c1e853ea-3959-486e-aff1-5ccaf10f6c48.0 +Макеты\СозданиеПростогоСправочника.mxl-->60c6634b-14aa-466f-a884-82ed4cb98d0f.0 +Макеты\СозданиеПростогоСправочника2.mxl-->a5026b9b-d215-4c30-9de1-c54424949e4a.0 +Макеты\СозданиеПростогоСправочникаПоГуид.mxl-->51a2c526-5e41-417b-a82e-0dd289a7974c.0 +Макеты\СозданиеПростогоСправочникаПоГуидСсылки.mxl-->1d971496-56ca-48b0-a34e-b5359e900090.0 +Макеты\СозданиеСвязанныхСправочников.mxl-->fb359264-55de-49ae-ae08-ff3931a4ec2f.0 +Макеты\СозданиеСправочника2_с_РеквизитомСоставногоТипа_и_ПустойСсылкой.mxl-->96faf09e-5646-4b0f-8601-e72057dbe7f7.0 +Макеты\СозданиеСправочника2_с_РеквизитомСоставногоТипа_и_ПустойСсылкойПеречисление.mxl-->4fd62a2d-c8b6-4576-aa63-50cc023990e1.0 +Макеты\СозданиеСправочника2_с_РеквизитомСоставногоТипа.mxl-->a1a3092f-ed45-44ca-9854-834abd352cd4.0 +Макеты\СозданиеСправочникаПослеДокументаСДвумяСтрокамиВТабличнойЧасти.mxl-->d764edfb-6285-4f77-ba58-4f8321a489a4.0 +Макеты\СозданиеСправочникаСоСсылкойНаСамогоСебя.mxl-->924914a6-730c-45fb-838b-ce5d93b80394.0 +Макеты\СозданиеСправочникаСПомощьюДополнительныхСвойств.mxl-->f7694620-94c9-4acf-9617-83108e92a57e.0 +Макеты\СозданиеСправочникаСПомощьюДополнительныхСвойствПоНаименованию.mxl-->d2e225b3-d6f9-485c-9304-31c9c31fa8f7.0 +Макеты\СозданиеСправочникаСПомощьюОбменДаннымиЗагрузка.mxl-->902d78a5-fdd6-4652-9714-414d8ad6ece3.0 +Макеты\СозданиеСправочникаСПомощьюТЧ_ОбменДаннымиЗагрузка.mxl-->834d10a6-75f9-4eac-ae53-66a3704bddbc.0 +Макеты\СозданиеСправочникаСРеквизитом_ПланСчетов.mxl-->9d5cc378-50c8-49c6-a45d-fceefcc4a5c5.0 +Макеты\СозданиеСправочникаСРеквизитомПустаяСсылка.mxl-->eec85b86-f35e-4612-83c9-7b4ba86f7cb0.0 +Макеты\СозданиеСправочниковОбразующихЦиклическуюЗависимость.mxl-->f7717042-aa60-4d5f-b166-8403fa143e74.0 +Макеты\СозданиеУзлаПланаОбмена.mxl-->1e918707-941f-4288-9af0-070c155a8173.0 +Макеты\СозданиеЭлементаИЗаполнениеРеквизитаПоискомПоГУИДу.mxl-->2e398c8a-da05-4e85-9d97-c9680b935568.0 +Макеты\СозданиеЭлементаИЗаполнениеРеквизитаПоискомПоКоду.mxl-->7a41e200-05d3-4267-a721-5dbe73bf545e.0 +Макеты\СозданиеЭлементаИЗаполнениеРеквизитаПоискомПоНаименованию.mxl-->d7807508-2ab6-4c4d-bc1c-d30f8932565f.0 +Макеты\ТестДолжен_ПолучитьИсключениеНеверныйРежимПоиска.mxl-->8e915235-e32d-4205-bb26-918ba63bb0f5.0 +Макеты\ТестДолжен_ПолучитьИсключениеПриПопыткеСоздатьЭлементИЗаполнитьРеквизитПоНеверномуКоду.mxl-->0afb6777-fe50-4b9c-b180-77d1ee3a3d54.0 +Макеты\ТестДолжен_ПолучитьИсключениеПриПопыткеСоздатьЭлементИЗаполнитьРеквизитПоНеверномуНаименованию.mxl-->f519cbc0-1404-4ef3-9377-16955dc46254.0 diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/renames.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/renames.txt" index 10a71700..657e6c8f 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/renames.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/renames.txt" @@ -1,174 +1,118 @@ 0afb6777-fe50-4b9c-b180-77d1ee3a3d54-->und\0afb6777-fe50-4b9c-b180-77d1ee3a3d54 -0afb6777-fe50-4b9c-b180-77d1ee3a3d54.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\ТестДолжен_ПолучитьИсключениеПриПопыткеСоздатьЭлементИЗаполнитьРеквизитПоНеверномуКоду.mxl 0afb6777-fe50-4b9c-b180-77d1ee3a3d54.0-->und\0afb6777-fe50-4b9c-b180-77d1ee3a3d54.0 165eaf09-2e00-4e46-be94-35f3b4ede990-->und\165eaf09-2e00-4e46-be94-35f3b4ede990 -165eaf09-2e00-4e46-be94-35f3b4ede990.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеДвухЗаписейВРегистреСведенийПодчиненномРегистратору.mxl 165eaf09-2e00-4e46-be94-35f3b4ede990.0-->und\165eaf09-2e00-4e46-be94-35f3b4ede990.0 1d971496-56ca-48b0-a34e-b5359e900090-->und\1d971496-56ca-48b0-a34e-b5359e900090 -1d971496-56ca-48b0-a34e-b5359e900090.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеПростогоСправочникаПоГуидСсылки.mxl 1d971496-56ca-48b0-a34e-b5359e900090.0-->und\1d971496-56ca-48b0-a34e-b5359e900090.0 1e918707-941f-4288-9af0-070c155a8173-->und\1e918707-941f-4288-9af0-070c155a8173 1e918707-941f-4288-9af0-070c155a8173.0-->und\1e918707-941f-4288-9af0-070c155a8173.0 -1e918707-941f-4288-9af0-070c155a8173.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеУзлаПланаОбмена.mxl 214520bb-70cc-4e3a-a1be-4c6a0f5d9c73-->und\214520bb-70cc-4e3a-a1be-4c6a0f5d9c73 -214520bb-70cc-4e3a-a1be-4c6a0f5d9c73.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеДвухЗаписейВРегистреСведений.mxl 214520bb-70cc-4e3a-a1be-4c6a0f5d9c73.0-->und\214520bb-70cc-4e3a-a1be-4c6a0f5d9c73.0 2b4cbacc-14fa-4e57-bfab-9e9af6028901-->und\2b4cbacc-14fa-4e57-bfab-9e9af6028901 -2b4cbacc-14fa-4e57-bfab-9e9af6028901.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеДокумента_РежимЗаписи_Проведение.mxl 2b4cbacc-14fa-4e57-bfab-9e9af6028901.0-->und\2b4cbacc-14fa-4e57-bfab-9e9af6028901.0 2bf29867-3e26-4d83-8667-da5f11442794-->und\2bf29867-3e26-4d83-8667-da5f11442794 -2bf29867-3e26-4d83-8667-da5f11442794.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеОбъектаСЗаполненымРеквизитомТипаПеречисление.mxl 2bf29867-3e26-4d83-8667-da5f11442794.0-->und\2bf29867-3e26-4d83-8667-da5f11442794.0 2e398c8a-da05-4e85-9d97-c9680b935568-->und\2e398c8a-da05-4e85-9d97-c9680b935568 2e398c8a-da05-4e85-9d97-c9680b935568.0-->und\2e398c8a-da05-4e85-9d97-c9680b935568.0 -2e398c8a-da05-4e85-9d97-c9680b935568.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеЭлементаИЗаполнениеРеквизитаПоискомПоГУИДу.mxl 451b28be-4cf6-4356-8c46-ad5cbc0deed0-->und\451b28be-4cf6-4356-8c46-ad5cbc0deed0 -451b28be-4cf6-4356-8c46-ad5cbc0deed0.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеОбъектаСЗаполненнымРеквизитомИзПредопределенныхЗначенийСправочника.mxl 451b28be-4cf6-4356-8c46-ad5cbc0deed0.0-->und\451b28be-4cf6-4356-8c46-ad5cbc0deed0.0 4a875fe8-d6dd-4488-ab26-9f1d41d624bb-->und\4a875fe8-d6dd-4488-ab26-9f1d41d624bb -4a875fe8-d6dd-4488-ab26-9f1d41d624bb.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеПростогоСправочника_Параметры.mxl 4a875fe8-d6dd-4488-ab26-9f1d41d624bb.0-->und\4a875fe8-d6dd-4488-ab26-9f1d41d624bb.0 4b3c529a-00d8-4aee-95a4-f20938cdebdd.0\info-->und\4b3c529a-00d8-4aee-95a4-f20938cdebdd.0\info -4b3c529a-00d8-4aee-95a4-f20938cdebdd.0\text-->ObjectModule.txt +4b3c529a-00d8-4aee-95a4-f20938cdebdd.0\text-->ObjectModule.bsl 4be1f7e9-0ba6-478f-88e1-190254fe6c6b-->und\4be1f7e9-0ba6-478f-88e1-190254fe6c6b -4be1f7e9-0ba6-478f-88e1-190254fe6c6b.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеДвухЗаписейВРегистреНакопления.mxl 4be1f7e9-0ba6-478f-88e1-190254fe6c6b.0-->und\4be1f7e9-0ba6-478f-88e1-190254fe6c6b.0 4fd62a2d-c8b6-4576-aa63-50cc023990e1-->und\4fd62a2d-c8b6-4576-aa63-50cc023990e1 -4fd62a2d-c8b6-4576-aa63-50cc023990e1.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеСправочника2_с_РеквизитомСоставногоТипа_и_ПустойСсылкойПеречисление.mxl 4fd62a2d-c8b6-4576-aa63-50cc023990e1.0-->und\4fd62a2d-c8b6-4576-aa63-50cc023990e1.0 509a10d9-9207-4066-a28d-978c04e34376-->und\509a10d9-9207-4066-a28d-978c04e34376 -509a10d9-9207-4066-a28d-978c04e34376.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеДвухЗаписейВРегистреСведений_ПоискЭлементаПоНаименованию.mxl 509a10d9-9207-4066-a28d-978c04e34376.0-->und\509a10d9-9207-4066-a28d-978c04e34376.0 51a2c526-5e41-417b-a82e-0dd289a7974c-->und\51a2c526-5e41-417b-a82e-0dd289a7974c 51a2c526-5e41-417b-a82e-0dd289a7974c.0-->und\51a2c526-5e41-417b-a82e-0dd289a7974c.0 -51a2c526-5e41-417b-a82e-0dd289a7974c.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеПростогоСправочникаПоГуид.mxl 53c26b45-95ee-49f0-b946-d7b3e4fb2ff8-->und\53c26b45-95ee-49f0-b946-d7b3e4fb2ff8 -53c26b45-95ee-49f0-b946-d7b3e4fb2ff8.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеДвухЗаписейВРегистреНакопленияУКоторыхЯвноЗаданВидДвижения.mxl 53c26b45-95ee-49f0-b946-d7b3e4fb2ff8.0-->und\53c26b45-95ee-49f0-b946-d7b3e4fb2ff8.0 60c6634b-14aa-466f-a884-82ed4cb98d0f-->und\60c6634b-14aa-466f-a884-82ed4cb98d0f -60c6634b-14aa-466f-a884-82ed4cb98d0f.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеПростогоСправочника.mxl 60c6634b-14aa-466f-a884-82ed4cb98d0f.0-->und\60c6634b-14aa-466f-a884-82ed4cb98d0f.0 68803c49-0345-4f51-9184-079744379408-->und\68803c49-0345-4f51-9184-079744379408 -68803c49-0345-4f51-9184-079744379408.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеОдногоПользователяИБ.mxl 68803c49-0345-4f51-9184-079744379408.0-->und\68803c49-0345-4f51-9184-079744379408.0 714a1e77-6f6d-4a2f-9881-9dbb862d24a0-->und\714a1e77-6f6d-4a2f-9881-9dbb862d24a0 714a1e77-6f6d-4a2f-9881-9dbb862d24a0.0-->und\714a1e77-6f6d-4a2f-9881-9dbb862d24a0.0 -714a1e77-6f6d-4a2f-9881-9dbb862d24a0.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеДвухЗаписейВРегистреБухгалтерии.mxl 7617c188-4e70-484e-816e-20eda5229667-->und\7617c188-4e70-484e-816e-20eda5229667 -7617c188-4e70-484e-816e-20eda5229667.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеОднойЗаписиВРегистреБухгалтерии.mxl 7617c188-4e70-484e-816e-20eda5229667.0-->und\7617c188-4e70-484e-816e-20eda5229667.0 7a41e200-05d3-4267-a721-5dbe73bf545e-->und\7a41e200-05d3-4267-a721-5dbe73bf545e -7a41e200-05d3-4267-a721-5dbe73bf545e.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеЭлементаИЗаполнениеРеквизитаПоискомПоКоду.mxl 7a41e200-05d3-4267-a721-5dbe73bf545e.0-->und\7a41e200-05d3-4267-a721-5dbe73bf545e.0 7af53c68-a0ad-4144-85f4-d11d73853384-->und\7af53c68-a0ad-4144-85f4-d11d73853384 -7af53c68-a0ad-4144-85f4-d11d73853384.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\Пример.mxl 7af53c68-a0ad-4144-85f4-d11d73853384.0-->und\7af53c68-a0ad-4144-85f4-d11d73853384.0 80a98912-c1e3-43b2-ae00-21118328107f-->und\80a98912-c1e3-43b2-ae00-21118328107f 80a98912-c1e3-43b2-ae00-21118328107f.0-->und\80a98912-c1e3-43b2-ae00-21118328107f.0 -80a98912-c1e3-43b2-ae00-21118328107f.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеГруппыСЭлементамиТолькоДляГруппы.mxl 834d10a6-75f9-4eac-ae53-66a3704bddbc-->und\834d10a6-75f9-4eac-ae53-66a3704bddbc -834d10a6-75f9-4eac-ae53-66a3704bddbc.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеСправочникаСПомощьюТЧ_ОбменДаннымиЗагрузка.mxl 834d10a6-75f9-4eac-ae53-66a3704bddbc.0-->und\834d10a6-75f9-4eac-ae53-66a3704bddbc.0 8b1a6140-f7e3-4151-adce-db0a2046364e-->und\8b1a6140-f7e3-4151-adce-db0a2046364e -8b1a6140-f7e3-4151-adce-db0a2046364e.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеЕщеНеЗаписанногоОбъектаПростогоСправочника.mxl 8b1a6140-f7e3-4151-adce-db0a2046364e.0-->und\8b1a6140-f7e3-4151-adce-db0a2046364e.0 8c5a9e9d-a3b1-4e65-ac06-1b4ae36468d1-->und\8c5a9e9d-a3b1-4e65-ac06-1b4ae36468d1 -8c5a9e9d-a3b1-4e65-ac06-1b4ae36468d1.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеДвухЗаписейВРегистреСведенийЧерезНаборЗаписей.mxl 8c5a9e9d-a3b1-4e65-ac06-1b4ae36468d1.0-->und\8c5a9e9d-a3b1-4e65-ac06-1b4ae36468d1.0 8cda2b2d-c64b-4e21-9de6-dd49a12576e0-->und\8cda2b2d-c64b-4e21-9de6-dd49a12576e0 8cda2b2d-c64b-4e21-9de6-dd49a12576e0.0-->und\8cda2b2d-c64b-4e21-9de6-dd49a12576e0.0 -8cda2b2d-c64b-4e21-9de6-dd49a12576e0.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\РегистрНакопления_ПоискРегистратора.mxl 8e915235-e32d-4205-bb26-918ba63bb0f5-->und\8e915235-e32d-4205-bb26-918ba63bb0f5 -8e915235-e32d-4205-bb26-918ba63bb0f5.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\ТестДолжен_ПолучитьИсключениеНеверныйРежимПоиска.mxl 8e915235-e32d-4205-bb26-918ba63bb0f5.0-->und\8e915235-e32d-4205-bb26-918ba63bb0f5.0 902d78a5-fdd6-4652-9714-414d8ad6ece3-->und\902d78a5-fdd6-4652-9714-414d8ad6ece3 -902d78a5-fdd6-4652-9714-414d8ad6ece3.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеСправочникаСПомощьюОбменДаннымиЗагрузка.mxl 902d78a5-fdd6-4652-9714-414d8ad6ece3.0-->und\902d78a5-fdd6-4652-9714-414d8ad6ece3.0 91470bcf-5031-4550-8470-113df7855131-->und\91470bcf-5031-4550-8470-113df7855131 -91470bcf-5031-4550-8470-113df7855131.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеДокументаНаТекущуюДату.mxl 91470bcf-5031-4550-8470-113df7855131.0-->und\91470bcf-5031-4550-8470-113df7855131.0 924914a6-730c-45fb-838b-ce5d93b80394-->und\924914a6-730c-45fb-838b-ce5d93b80394 -924914a6-730c-45fb-838b-ce5d93b80394.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеСправочникаСоСсылкойНаСамогоСебя.mxl 924914a6-730c-45fb-838b-ce5d93b80394.0-->und\924914a6-730c-45fb-838b-ce5d93b80394.0 96faf09e-5646-4b0f-8601-e72057dbe7f7-->und\96faf09e-5646-4b0f-8601-e72057dbe7f7 -96faf09e-5646-4b0f-8601-e72057dbe7f7.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеСправочника2_с_РеквизитомСоставногоТипа_и_ПустойСсылкой.mxl 96faf09e-5646-4b0f-8601-e72057dbe7f7.0-->und\96faf09e-5646-4b0f-8601-e72057dbe7f7.0 9cdde6cb-0ea6-4850-ba3c-c7872ceaf52e-->und\9cdde6cb-0ea6-4850-ba3c-c7872ceaf52e -9cdde6cb-0ea6-4850-ba3c-c7872ceaf52e.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеГруппыСправочникаИДочернегоЭлемента.mxl 9cdde6cb-0ea6-4850-ba3c-c7872ceaf52e.0-->und\9cdde6cb-0ea6-4850-ba3c-c7872ceaf52e.0 9d5cc378-50c8-49c6-a45d-fceefcc4a5c5-->und\9d5cc378-50c8-49c6-a45d-fceefcc4a5c5 9d5cc378-50c8-49c6-a45d-fceefcc4a5c5.0-->und\9d5cc378-50c8-49c6-a45d-fceefcc4a5c5.0 -9d5cc378-50c8-49c6-a45d-fceefcc4a5c5.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеСправочникаСРеквизитом_ПланСчетов.mxl a1a3092f-ed45-44ca-9854-834abd352cd4-->und\a1a3092f-ed45-44ca-9854-834abd352cd4 -a1a3092f-ed45-44ca-9854-834abd352cd4.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеСправочника2_с_РеквизитомСоставногоТипа.mxl a1a3092f-ed45-44ca-9854-834abd352cd4.0-->und\a1a3092f-ed45-44ca-9854-834abd352cd4.0 a5026b9b-d215-4c30-9de1-c54424949e4a-->und\a5026b9b-d215-4c30-9de1-c54424949e4a -a5026b9b-d215-4c30-9de1-c54424949e4a.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеПростогоСправочника2.mxl a5026b9b-d215-4c30-9de1-c54424949e4a.0-->und\a5026b9b-d215-4c30-9de1-c54424949e4a.0 b0adb70d-1e31-4637-8c1d-7f6f33baaa7b-->und\b0adb70d-1e31-4637-8c1d-7f6f33baaa7b b0adb70d-1e31-4637-8c1d-7f6f33baaa7b.0-->und\b0adb70d-1e31-4637-8c1d-7f6f33baaa7b.0 -b0adb70d-1e31-4637-8c1d-7f6f33baaa7b.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\НайтиИПерезаполнитьПростойСправочникПоГуидСсылки.mxl bdaf3325-bb9b-4677-ba6e-56a642df2687-->und\bdaf3325-bb9b-4677-ba6e-56a642df2687 -bdaf3325-bb9b-4677-ba6e-56a642df2687.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\ИзменениеПредопределенногоСправочника.mxl bdaf3325-bb9b-4677-ba6e-56a642df2687.0-->und\bdaf3325-bb9b-4677-ba6e-56a642df2687.0 c0731e2c-fd73-4143-8a60-52e72c809569-->und\c0731e2c-fd73-4143-8a60-52e72c809569 -c0731e2c-fd73-4143-8a60-52e72c809569.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеОдногоСправочникаВладельцаБезПодчиненногоСправочника.mxl c0731e2c-fd73-4143-8a60-52e72c809569.0-->und\c0731e2c-fd73-4143-8a60-52e72c809569.0 c1e853ea-3959-486e-aff1-5ccaf10f6c48-->und\c1e853ea-3959-486e-aff1-5ccaf10f6c48 -c1e853ea-3959-486e-aff1-5ccaf10f6c48.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеПростогоСправочника_РежимВыражение.mxl c1e853ea-3959-486e-aff1-5ccaf10f6c48.0-->und\c1e853ea-3959-486e-aff1-5ccaf10f6c48.0 c698bb5e-86eb-40ec-96d7-b8badc816715-->und\c698bb5e-86eb-40ec-96d7-b8badc816715 -c698bb5e-86eb-40ec-96d7-b8badc816715.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеДвухНаборовЗаписейВРегистреСведений.mxl c698bb5e-86eb-40ec-96d7-b8badc816715.0-->und\c698bb5e-86eb-40ec-96d7-b8badc816715.0 c7efc6f1-5a5e-4278-9b62-9cf796fb363e-->und\c7efc6f1-5a5e-4278-9b62-9cf796fb363e -c7efc6f1-5a5e-4278-9b62-9cf796fb363e.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеПростогоБизнесПроцесса.mxl c7efc6f1-5a5e-4278-9b62-9cf796fb363e.0-->und\c7efc6f1-5a5e-4278-9b62-9cf796fb363e.0 copyinfo-->und\copyinfo d28a1211-a8c4-425c-87f2-c429f96d426f-->und\d28a1211-a8c4-425c-87f2-c429f96d426f -d28a1211-a8c4-425c-87f2-c429f96d426f.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеДвухПростыхСправочников.mxl d28a1211-a8c4-425c-87f2-c429f96d426f.0-->und\d28a1211-a8c4-425c-87f2-c429f96d426f.0 d2e225b3-d6f9-485c-9304-31c9c31fa8f7-->und\d2e225b3-d6f9-485c-9304-31c9c31fa8f7 d2e225b3-d6f9-485c-9304-31c9c31fa8f7.0-->und\d2e225b3-d6f9-485c-9304-31c9c31fa8f7.0 -d2e225b3-d6f9-485c-9304-31c9c31fa8f7.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеСправочникаСПомощьюДополнительныхСвойствПоНаименованию.mxl d51f673a-a707-44d6-9610-d58ad958de44-->und\d51f673a-a707-44d6-9610-d58ad958de44 d764edfb-6285-4f77-ba58-4f8321a489a4-->und\d764edfb-6285-4f77-ba58-4f8321a489a4 -d764edfb-6285-4f77-ba58-4f8321a489a4.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеСправочникаПослеДокументаСДвумяСтрокамиВТабличнойЧасти.mxl d764edfb-6285-4f77-ba58-4f8321a489a4.0-->und\d764edfb-6285-4f77-ba58-4f8321a489a4.0 d7807508-2ab6-4c4d-bc1c-d30f8932565f-->und\d7807508-2ab6-4c4d-bc1c-d30f8932565f -d7807508-2ab6-4c4d-bc1c-d30f8932565f.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеЭлементаИЗаполнениеРеквизитаПоискомПоНаименованию.mxl d7807508-2ab6-4c4d-bc1c-d30f8932565f.0-->und\d7807508-2ab6-4c4d-bc1c-d30f8932565f.0 dac1badd-b7ee-41a1-ab54-f227e08f2cb8-->und\dac1badd-b7ee-41a1-ab54-f227e08f2cb8 -dac1badd-b7ee-41a1-ab54-f227e08f2cb8.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеПростогоСправочника_ПустыеСтроки.mxl dac1badd-b7ee-41a1-ab54-f227e08f2cb8.0-->und\dac1badd-b7ee-41a1-ab54-f227e08f2cb8.0 e27b2c46-7b76-4b8d-a3e8-e1b0562943ca-->und\e27b2c46-7b76-4b8d-a3e8-e1b0562943ca e27b2c46-7b76-4b8d-a3e8-e1b0562943ca.0-->und\e27b2c46-7b76-4b8d-a3e8-e1b0562943ca.0 -e27b2c46-7b76-4b8d-a3e8-e1b0562943ca.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\ИзменениеПредопределенногоСправочникаПоГуид.mxl e893fd06-6ba8-4dd4-93be-d0810d679876-->und\e893fd06-6ba8-4dd4-93be-d0810d679876 -e893fd06-6ba8-4dd4-93be-d0810d679876.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеДокументаСДвумяСтрокамиВТабличнойЧасти.mxl e893fd06-6ba8-4dd4-93be-d0810d679876.0-->und\e893fd06-6ba8-4dd4-93be-d0810d679876.0 eec85b86-f35e-4612-83c9-7b4ba86f7cb0-->und\eec85b86-f35e-4612-83c9-7b4ba86f7cb0 -eec85b86-f35e-4612-83c9-7b4ba86f7cb0.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеСправочникаСРеквизитомПустаяСсылка.mxl eec85b86-f35e-4612-83c9-7b4ba86f7cb0.0-->und\eec85b86-f35e-4612-83c9-7b4ba86f7cb0.0 f175b23c-5152-4613-96dd-f6623676046d-->und\f175b23c-5152-4613-96dd-f6623676046d f175b23c-5152-4613-96dd-f6623676046d.0-->und\f175b23c-5152-4613-96dd-f6623676046d.0 -f175b23c-5152-4613-96dd-f6623676046d.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеОбъектаСДвумяСтрокамиВТабличнойЧасти.mxl f519cbc0-1404-4ef3-9377-16955dc46254-->und\f519cbc0-1404-4ef3-9377-16955dc46254 -f519cbc0-1404-4ef3-9377-16955dc46254.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\ТестДолжен_ПолучитьИсключениеПриПопыткеСоздатьЭлементИЗаполнитьРеквизитПоНеверномуНаименованию.mxl f519cbc0-1404-4ef3-9377-16955dc46254.0-->und\f519cbc0-1404-4ef3-9377-16955dc46254.0 f7694620-94c9-4acf-9617-83108e92a57e-->und\f7694620-94c9-4acf-9617-83108e92a57e -f7694620-94c9-4acf-9617-83108e92a57e.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеСправочникаСПомощьюДополнительныхСвойств.mxl f7694620-94c9-4acf-9617-83108e92a57e.0-->und\f7694620-94c9-4acf-9617-83108e92a57e.0 f7717042-aa60-4d5f-b166-8403fa143e74-->und\f7717042-aa60-4d5f-b166-8403fa143e74 -f7717042-aa60-4d5f-b166-8403fa143e74.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеСправочниковОбразующихЦиклическуюЗависимость.mxl f7717042-aa60-4d5f-b166-8403fa143e74.0-->und\f7717042-aa60-4d5f-b166-8403fa143e74.0 fb359264-55de-49ae-ae08-ff3931a4ec2f-->und\fb359264-55de-49ae-ae08-ff3931a4ec2f -fb359264-55de-49ae-ae08-ff3931a4ec2f.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеСвязанныхСправочников.mxl fb359264-55de-49ae-ae08-ff3931a4ec2f.0-->und\fb359264-55de-49ae-ae08-ff3931a4ec2f.0 fc5337e1-f68d-4b0c-82d4-2eedfe89178c-->und\fc5337e1-f68d-4b0c-82d4-2eedfe89178c -fc5337e1-f68d-4b0c-82d4-2eedfe89178c.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеОднойЗаписиВРегистреНакопления.mxl fc5337e1-f68d-4b0c-82d4-2eedfe89178c.0-->und\fc5337e1-f68d-4b0c-82d4-2eedfe89178c.0 fca00537-610e-40cf-aaf4-fb5faab4fda1-->und\fca00537-610e-40cf-aaf4-fb5faab4fda1 -fca00537-610e-40cf-aaf4-fb5faab4fda1.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_СериализаторMXL\Макеты\СозданиеДвухПростыхСправочников_с_ОдинаковымИменемПеременной.mxl fca00537-610e-40cf-aaf4-fb5faab4fda1.0-->und\fca00537-610e-40cf-aaf4-fb5faab4fda1.0 root-->und\root version-->und\version diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt" new file mode 100644 index 00000000..1879c153 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt" @@ -0,0 +1,3 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения +Справочник ПростойСправочник ПростойСправочник ПредопределенноеЗначение1 Предопределенный + Наименование Новое значение \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\237\320\276\320\223\321\203\320\270\320\264_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\237\320\276\320\223\321\203\320\270\320\264_mxl.txt" new file mode 100644 index 00000000..2eea05ae --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\237\320\276\320\223\321\203\320\270\320\264_mxl.txt" @@ -0,0 +1,3 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения +Справочник ПростойСправочник ПростойСправочник 634e552d-b43a-4bc8-a150-d009f83269e1 СоздатьПоГуид + Наименование Новое значение \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\235\320\260\320\271\321\202\320\270\320\230\320\237\320\265\321\200\320\265\320\267\320\260\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\237\320\276\320\223\321\203\320\270\320\264\320\241\321\201\321\213\320\273\320\272\320\270_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\235\320\260\320\271\321\202\320\270\320\230\320\237\320\265\321\200\320\265\320\267\320\260\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\237\320\276\320\223\321\203\320\270\320\264\320\241\321\201\321\213\320\273\320\272\320\270_mxl.txt" new file mode 100644 index 00000000..42d5cadf --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\235\320\260\320\271\321\202\320\270\320\230\320\237\320\265\321\200\320\265\320\267\320\260\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\237\321\200\320\276\321\201\321\202\320\276\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\237\320\276\320\223\321\203\320\270\320\264\320\241\321\201\321\213\320\273\320\272\320\270_mxl.txt" @@ -0,0 +1,5 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Ссылка a72ec81b-d17d-4d2f-9a47-2ffb2e3234c4 СоздатьПоГуид + РеквизитБулево Ложь + РеквизитПеречисление ЗначениеПеречисления2 Предопределенный \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\237\321\200\320\270\320\274\320\265\321\200_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\237\321\200\320\270\320\274\320\265\321\200_mxl.txt" new file mode 100644 index 00000000..357ae25f --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\237\321\200\320\270\320\274\320\265\321\200_mxl.txt" @@ -0,0 +1,62 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения +Справочник ГруппаТоваров ГТ1 + Наименование test GSM +Справочник ГруппаТоваров ГТ2 Объект + Наименование test GSM +Справочник ПростойСправочник ПредопределенноеЗначение1 ПредопределенноеЗначение1 Предопределенный + Наименование Новое значение +Справочник Номенклатура ГрНом1 Группа + Код 1 + Наименование Тестовая группа +Справочник Номенклатура Ном1 ОбменДанными + Код 2 + Наименование Тестовая ном + Родитель ГрНом1 Перем + ГруппаТоваров ГТ1 Перем + ВидНоменкатуры 0000-00000-00000000 ГУИД +Справочник Номенклатура Ном2 + Код 2 + Наименование Тестовая ном 2 + ГруппаТоваров ГТ1 Перем + ВидНоменкатуры НекийВид Предопределенный + РеквизитСоставногоТипа Тест345 Наименование СправочникСсылка.ПростойСправочник + ДополнительныеСвойства + СвойствоГруппа Тестовая группа Наименование СправочникСсылка.Номенклатура + ОбменДанными + Загрузка Истина Булево +Документ Продажи ДП1 + Дата 20130801 + ДругаяДата ТекущаяДата + Номер 105 + ГруппаТоваров ГТ2 Перем + ТЧ_Товары + Номенклатура 2 Код + Количество 50 + ТЧ_Товары + Номенклатура Тестовая ном 2 Наименование + Количество 30 +Документ Продажи ДП2 Проведение + Дата ТекущаяДата +РегистрСведений ИсторияНоменклатуры РС_Набор + Период 20130101 + Номенклатура Ном1 Перем + ГруппаТоваров ГТ1 Перем +Справочник ПростойСправочник ПростойСправочник + Ссылка a72ec81b-d17d-4d2f-9a47-2ffb2e3234c4 СоздатьПоГуид + РеквизитБулево Ложь + РеквизитПеречисление ЗначениеПеречисления2 Предопределенный +РегистрНакопления РегистрНакопления2 ЗаписьРегистра1 + Запись + Регистратор ДП2 Перем + Период + ПростойСправочник ПростойСправочник Перем + ГруппаТоваров ГТ2 Перем + РесурсЧисло 150 + РеквизитБулево Ложь + Запись + Регистратор 176 Номер ДокументСсылка.Документ2 + Период + ПростойСправочник ПростойСправочник Перем + ГруппаТоваров ГТ2 Перем + РесурсЧисло 0 + РеквизитБулево Истина \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217_\320\237\320\276\320\270\321\201\320\272\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217_\320\237\320\276\320\270\321\201\320\272\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260_mxl.txt" new file mode 100644 index 00000000..20d0a0bc --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217_\320\237\320\276\320\270\321\201\320\272\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\320\260_mxl.txt" @@ -0,0 +1,12 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения +Документ Документ2 Документ + Дата ТекущаяДата + Номер 176 + Состав + РеквизитЧисло 150 + РеквизитБулево Ложь +РегистрНакопления РегистрНакопления2 РегистрНакопления2 + Запись + Активность Истина + Регистратор 176 Номер ДокументСсылка.Документ2 + Период ТекущаяДата \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\223\321\200\321\203\320\277\320\277\321\213\320\241\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260\320\274\320\270\320\242\320\276\320\273\321\214\320\272\320\276\320\224\320\273\321\217\320\223\321\200\321\203\320\277\320\277\321\213_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\223\321\200\321\203\320\277\320\277\321\213\320\241\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260\320\274\320\270\320\242\320\276\320\273\321\214\320\272\320\276\320\224\320\273\321\217\320\223\321\200\321\203\320\277\320\277\321\213_mxl.txt" new file mode 100644 index 00000000..2047a675 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\223\321\200\321\203\320\277\320\277\321\213\320\241\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260\320\274\320\270\320\242\320\276\320\273\321\214\320\272\320\276\320\224\320\273\321\217\320\223\321\200\321\203\320\277\320\277\321\213_mxl.txt" @@ -0,0 +1,15 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения +Справочник ПростойСправочник2 Интерактив1 + Наименование Интерактив169 + РеквизитБулево Истина + Счет Счет01 Предопределенный +Справочник ПростойСправочник ПредопределенноеЗначение СоздатьПоГуид + Ссылка 634e552d-b43a-4bc8-a150-d009f83269e1 Гуид + Наименование Предопределенное значение +Справочник ИерархическийСправочник Группа Группа + Наименование Группа25 + ПростойСправочник2ДляГруппы Интерактив1 Перем + ТабличнаяЧастьДляГруппы + ПростойСправочник ПредопределенноеЗначение Перем + xddMods + Режим Группа \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\223\321\200\321\203\320\277\320\277\321\213\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\230\320\224\320\276\321\207\320\265\321\200\320\275\320\265\320\263\320\276\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\223\321\200\321\203\320\277\320\277\321\213\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\230\320\224\320\276\321\207\320\265\321\200\320\275\320\265\320\263\320\276\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260_mxl.txt" new file mode 100644 index 00000000..17ce47b1 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\223\321\200\321\203\320\277\320\277\321\213\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\230\320\224\320\276\321\207\320\265\321\200\320\275\320\265\320\263\320\276\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260_mxl.txt" @@ -0,0 +1,8 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ИерархическийСправочник Группа Группа + Наименование Тест + Код 5 +Справочник ИерархическийСправочник Элемент + Наименование Тест + Родитель Группа Перем + Код 6 \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\270_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\270_mxl.txt" new file mode 100644 index 00000000..5c73cfb1 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\270_mxl.txt" @@ -0,0 +1,47 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения +Справочник ПростойСправочник ПростойСправочник + Наименование Тест +Справочник ПростойСправочник ПростойСправочник0 + Наименование Тест0 +Справочник ПростойСправочник2 ПростойСправочник21 + Наименование Тест1 +Справочник ПростойСправочник2 ПростойСправочник22 + Наименование Тест2 +Документ Документ2 Документ + Дата ТекущаяДата + ПростойСправочник ПростойСправочник Перем + Состав + РеквизитЧисло 150 + ПростойСправочник2 ПростойСправочник21 Перем + РеквизитБулево Ложь + Состав + ПростойСправочник2 ПростойСправочник22 Перем + РеквизитЧисло 0 + РеквизитБулево Истина +РегистрБухгалтерии РегистрБухгалтерии1 ЗаписьРегистра1 + Запись + Регистратор Документ Перем + Период + СчетДт Счет01 Предопределенный ПланСчетовСсылка.ПланСчетов1 + СчетКт Счет02 Предопределенный ПланСчетовСсылка.ПланСчетов1 + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2Дт ПростойСправочник21 Перем + РесурсЧисло 150 + РесурсЧисло1Дт 10 + РеквизитБулево Ложь + СубконтоДт1 ПростойСправочник Перем + СубконтоКт1 ПростойСправочник21 Перем + СубконтоКт2 ПростойСправочник Перем + Запись + Регистратор Документ Перем + Период ТекущаяДата + СчетДт Счет02 Наименование + СчетКт Счет01 Наименование + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2Кт ПростойСправочник22 Перем + РесурсЧисло 0 + РесурсЧисло1Кт 20 + РеквизитБулево Истина + СубконтоДт1 ПростойСправочник21 Перем + СубконтоДт2 ПростойСправочник0 Перем + СубконтоКт1 ПростойСправочник Перем \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217_mxl.txt" new file mode 100644 index 00000000..2a88891c --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217_mxl.txt" @@ -0,0 +1,33 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование Тест +Справочник ПростойСправочник2 ПростойСправочник21 + Наименование Тест1 +Справочник ПростойСправочник2 ПростойСправочник22 + Наименование Тест2 +Документ Документ2 Документ + Дата ТекущаяДата + ПростойСправочник ПростойСправочник Перем + Состав + РеквизитЧисло 150 + ПростойСправочник2 ПростойСправочник21 Перем + РеквизитБулево Ложь + Состав + ПростойСправочник2 ПростойСправочник22 Перем + РеквизитЧисло 0 + РеквизитБулево Истина +РегистрНакопления РегистрНакопления2 ЗаписьРегистра1 + Запись + Регистратор Документ Перем + Период + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2 ПростойСправочник21 Перем + РесурсЧисло 150 + РеквизитБулево Ложь + Запись + Регистратор Документ Перем + Период ТекущаяДата + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2 ПростойСправочник22 Перем + РесурсЧисло 0 + РеквизитБулево Истина \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217\320\243\320\232\320\276\321\202\320\276\321\200\321\213\321\205\320\257\320\262\320\275\320\276\320\227\320\260\320\264\320\260\320\275\320\222\320\270\320\264\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217\320\243\320\232\320\276\321\202\320\276\321\200\321\213\321\205\320\257\320\262\320\275\320\276\320\227\320\260\320\264\320\260\320\275\320\222\320\270\320\264\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217_mxl.txt" new file mode 100644 index 00000000..1e33e0ea --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217\320\243\320\232\320\276\321\202\320\276\321\200\321\213\321\205\320\257\320\262\320\275\320\276\320\227\320\260\320\264\320\260\320\275\320\222\320\270\320\264\320\224\320\262\320\270\320\266\320\265\320\275\320\270\321\217_mxl.txt" @@ -0,0 +1,35 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование Тест +Справочник ПростойСправочник2 ПростойСправочник21 + Наименование Тест1 +Справочник ПростойСправочник2 ПростойСправочник22 + Наименование Тест2 +Документ Документ2 Документ + Дата ТекущаяДата + ПростойСправочник ПростойСправочник Перем + Состав + РеквизитЧисло 150 + ПростойСправочник2 ПростойСправочник21 Перем + РеквизитБулево Ложь + Состав + ПростойСправочник2 ПростойСправочник22 Перем + РеквизитЧисло 0 + РеквизитБулево Истина +РегистрНакопления РегистрНакопления2 ЗаписьРегистра1 + Запись + Регистратор Документ Перем + Период + ВидДвижения Расход ПРЕДОПРЕДЕЛЕННЫЙ + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2 ПростойСправочник21 Перем + РесурсЧисло 150 + РеквизитБулево Ложь + Запись + Регистратор Документ Перем + Период ТекущаяДата + ВидДвижения Приход ПРЕДОПРЕДЕЛЕННЫЙ + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2 ПростойСправочник22 Перем + РесурсЧисло 0 + РеквизитБулево Истина \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271_mxl.txt" new file mode 100644 index 00000000..7f456598 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271_mxl.txt" @@ -0,0 +1,17 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование Тест +Справочник ПростойСправочник2 ПростойСправочник21 + Наименование Тест1 +Справочник ПростойСправочник2 ПростойСправочник22 + Наименование Тест2 +РегистрСведений РегистрСведений1 ЗаписьРегистра1 + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2 ПростойСправочник21 Перем + РесурсЧисло 300 + РесурсБулево Ложь +РегистрСведений РегистрСведений1 ЗаписьРегистра2 + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2 ПростойСправочник22 Перем + РесурсЧисло 400 + РесурсБулево Истина \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271_\320\237\320\276\320\270\321\201\320\272\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260\320\237\320\276\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\321\216_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271_\320\237\320\276\320\270\321\201\320\272\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260\320\237\320\276\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\321\216_mxl.txt" new file mode 100644 index 00000000..6904c466 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271_\320\237\320\276\320\270\321\201\320\272\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260\320\237\320\276\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\321\216_mxl.txt" @@ -0,0 +1,17 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование Тест +Справочник ПростойСправочник2 ПростойСправочник21 + Наименование Тест1 +Справочник ПростойСправочник2 ПростойСправочник22 + Наименование Тест2 +РегистрСведений РегистрСведений1 ЗаписьРегистра1 + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2 Тест1 Наименование + РесурсЧисло 300 + РесурсБулево Ложь +РегистрСведений РегистрСведений1 ЗаписьРегистра2 + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2 ПростойСправочник22 Перем + РесурсЧисло 400 + РесурсБулево Истина \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\320\274\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\321\203_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\320\274\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\321\203_mxl.txt" new file mode 100644 index 00000000..54e4950d --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\320\274\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\202\320\276\321\200\321\203_mxl.txt" @@ -0,0 +1,33 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование Тест +Справочник ПростойСправочник2 ПростойСправочник21 + Наименование Тест1 +Справочник ПростойСправочник2 ПростойСправочник22 + Наименование Тест2 +Документ Документ2 Документ + Дата ТекущаяДата + ПростойСправочник ПростойСправочник Перем + Состав + РеквизитЧисло 150 + ПростойСправочник2 ПростойСправочник21 Перем + РеквизитБулево Ложь + Состав + ПростойСправочник2 ПростойСправочник22 Перем + РеквизитЧисло 0 + РеквизитБулево Истина +РегистрСведений РСПодчиненныйРегистратору ЗаписьРегистра1 + Запись + Регистратор Документ Перем + Период + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2 ПростойСправочник21 Перем + РесурсЧисло 150 + РеквизитБулево Ложь + Запись + Регистратор Документ Перем + Период ТекущаяДата + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2 ПростойСправочник22 Перем + РесурсЧисло 0 + РеквизитБулево Истина \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271\320\247\320\265\321\200\320\265\320\267\320\235\320\260\320\261\320\276\321\200\320\227\320\260\320\277\320\270\321\201\320\265\320\271_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271\320\247\320\265\321\200\320\265\320\267\320\235\320\260\320\261\320\276\321\200\320\227\320\260\320\277\320\270\321\201\320\265\320\271_mxl.txt" new file mode 100644 index 00000000..fca3dc92 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271\320\247\320\265\321\200\320\265\320\267\320\235\320\260\320\261\320\276\321\200\320\227\320\260\320\277\320\270\321\201\320\265\320\271_mxl.txt" @@ -0,0 +1,18 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование Тест +Справочник ПростойСправочник2 ПростойСправочник21 + Наименование Тест1 +Справочник ПростойСправочник2 ПростойСправочник22 + Наименование Тест2 +РегистрСведений РегистрСведений1 ЗаписьРегистра1 + Запись + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2 ПростойСправочник21 Перем + РесурсЧисло 300 + РесурсБулево Ложь + Запись + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2 ПростойСправочник22 Перем + РесурсЧисло 400 + РесурсБулево Истина \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\235\320\260\320\261\320\276\321\200\320\276\320\262\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\235\320\260\320\261\320\276\321\200\320\276\320\262\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271_mxl.txt" new file mode 100644 index 00000000..d880d626 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\235\320\260\320\261\320\276\321\200\320\276\320\262\320\227\320\260\320\277\320\270\321\201\320\265\320\271\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\241\320\262\320\265\320\264\320\265\320\275\320\270\320\271_mxl.txt" @@ -0,0 +1,19 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование Тест +Справочник ПростойСправочник2 ПростойСправочник21 + Наименование Тест1 +Справочник ПростойСправочник2 ПростойСправочник22 + Наименование Тест2 +РегистрСведений РегистрСведений1 ЗаписьРегистра1 + Запись + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2 ПростойСправочник21 Перем + РесурсЧисло 300 + РесурсБулево Ложь +РегистрСведений РегистрСведений1 ЗаписьРегистра2 + Запись + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2 ПростойСправочник22 Перем + РесурсЧисло 400 + РесурсБулево Истина \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262_mxl.txt" new file mode 100644 index 00000000..a91f1c80 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262_mxl.txt" @@ -0,0 +1,6 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование Тестовая группа товаров + РеквизитБулево Ложь +Справочник ПростойСправочник2 ПростойСправочник2 + Наименование Тест \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262_\321\201_\320\236\320\264\320\270\320\275\320\260\320\272\320\276\320\262\321\213\320\274\320\230\320\274\320\265\320\275\320\265\320\274\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\320\276\320\271_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262_\321\201_\320\236\320\264\320\270\320\275\320\260\320\272\320\276\320\262\321\213\320\274\320\230\320\274\320\265\320\275\320\265\320\274\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\320\276\320\271_mxl.txt" new file mode 100644 index 00000000..4859aeab --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\262\321\203\321\205\320\237\321\200\320\276\321\201\321\202\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262_\321\201_\320\236\320\264\320\270\320\275\320\260\320\272\320\276\320\262\321\213\320\274\320\230\320\274\320\265\320\275\320\265\320\274\320\237\320\265\321\200\320\265\320\274\320\265\320\275\320\275\320\276\320\271_mxl.txt" @@ -0,0 +1,6 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник1 + Наименование Тестовая группа товаров + РеквизитБулево Ложь +Справочник ПростойСправочник2 ПростойСправочник1 + Наименование Тест \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260_\320\240\320\265\320\266\320\270\320\274\320\227\320\260\320\277\320\270\321\201\320\270_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260_\320\240\320\265\320\266\320\270\320\274\320\227\320\260\320\277\320\270\321\201\320\270_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265_mxl.txt" new file mode 100644 index 00000000..2eea0271 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260_\320\240\320\265\320\266\320\270\320\274\320\227\320\260\320\277\320\270\321\201\320\270_\320\237\321\200\320\276\320\262\320\265\320\264\320\265\320\275\320\270\320\265_mxl.txt" @@ -0,0 +1,9 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Документ Документ1 Документ Проведение + Дата ТекущаяДата + Проведен Ложь + Номер 3 +Документ Документ1 Документ2 + Дата ТекущаяДата + Проведен Истина + Номер 4 \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\235\320\260\320\242\320\265\320\272\321\203\321\211\321\203\321\216\320\224\320\260\321\202\321\203_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\235\320\260\320\242\320\265\320\272\321\203\321\211\321\203\321\216\320\224\320\260\321\202\321\203_mxl.txt" new file mode 100644 index 00000000..313adc39 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\235\320\260\320\242\320\265\320\272\321\203\321\211\321\203\321\216\320\224\320\260\321\202\321\203_mxl.txt" @@ -0,0 +1,6 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование Тест +Документ Документ1 Документ + Дата ТекущаяДата + ПростойСправочник ПростойСправочник Перем \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270_mxl.txt" new file mode 100644 index 00000000..e5fcdf04 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270_mxl.txt" @@ -0,0 +1,18 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование Тест +Справочник ПростойСправочник2 ПростойСправочник21 + Наименование Тест1 +Справочник ПростойСправочник2 ПростойСправочник22 + Наименование Тест2 +Документ Документ1 Документ + Дата 20130801 + ПростойСправочник ПростойСправочник Перем + Состав + РеквизитЧисло 150 + ПростойСправочник2 Тест1 Наименование + РеквизитБулево Ложь + Состав + ПростойСправочник2 ПростойСправочник22 Перем + РеквизитЧисло 0 + РеквизитБулево Истина \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\225\321\211\320\265\320\235\320\265\320\227\320\260\320\277\320\270\321\201\320\260\320\275\320\275\320\276\320\263\320\276\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\225\321\211\320\265\320\235\320\265\320\227\320\260\320\277\320\270\321\201\320\260\320\275\320\275\320\276\320\263\320\276\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt" new file mode 100644 index 00000000..a9adb36a --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\225\321\211\320\265\320\235\320\265\320\227\320\260\320\277\320\270\321\201\320\260\320\275\320\275\320\276\320\263\320\276\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt" @@ -0,0 +1,4 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник Объект + Наименование Тестовое наименование + РеквизитБулево Истина \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270_mxl.txt" new file mode 100644 index 00000000..c8c7f489 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270_mxl.txt" @@ -0,0 +1,17 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование Тест +Справочник ПростойСправочник2 ПростойСправочник2_1 + Наименование Тест +Справочник ПростойСправочник2 ПростойСправочник2_2 + Наименование Тест +Справочник СправочникСТабЧастью СправочникСТабЧастью + Наименование Тест + Состав + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2 ПростойСправочник2_1 Перем + РеквизитБулево Истина + Состав + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2 ПростойСправочник2_2 Перем + РеквизитБулево Ложь \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\241\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\320\274\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\230\320\267\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\241\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\320\274\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\230\320\267\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt" new file mode 100644 index 00000000..e26fdf7a --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\241\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\320\274\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\230\320\267\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\227\320\275\320\260\321\207\320\265\320\275\320\270\320\271\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt" @@ -0,0 +1,4 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ИерархическийСправочник Элемент + Наименование Тест + ПростойСправочник ПредопределенноеЗначение1 Предопределенный \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\241\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\321\213\320\274\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\242\320\270\320\277\320\260\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\241\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\321\213\320\274\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\242\320\270\320\277\320\260\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265_mxl.txt" new file mode 100644 index 00000000..dabdec79 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\261\321\212\320\265\320\272\321\202\320\260\320\241\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\321\213\320\274\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\242\320\270\320\277\320\260\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265_mxl.txt" @@ -0,0 +1,4 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование Тест + РеквизитПеречисление ЗначениеПеречисления1 Предопределенный \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221_mxl.txt" new file mode 100644 index 00000000..21d4aa77 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221_mxl.txt" @@ -0,0 +1,9 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +ПользовательИБ ИмяПеременнойПользователь + Имя ПользовательИмя + ОсновнойИнтерфейс + Пароль + РежимЗапуска Управляемое приложение + Роли + Роль Роль1 + Роль ПолныеПрава \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\222\320\273\320\260\320\264\320\265\320\273\321\214\321\206\320\260\320\221\320\265\320\267\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\222\320\273\320\260\320\264\320\265\320\273\321\214\321\206\320\260\320\221\320\265\320\267\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt" new file mode 100644 index 00000000..2571ef06 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\222\320\273\320\260\320\264\320\265\320\273\321\214\321\206\320\260\320\221\320\265\320\267\320\237\320\276\320\264\321\207\320\270\320\275\320\265\320\275\320\275\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt" @@ -0,0 +1,4 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ИерархическийСправочник ИерархическийСправочник + Наименование Тест + ПростойСправочник ПростойСправочник Перем \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\270_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\270_mxl.txt" new file mode 100644 index 00000000..75c32871 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\221\321\203\321\205\320\263\320\260\320\273\321\202\320\265\321\200\320\270\320\270_mxl.txt" @@ -0,0 +1,27 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование Тест +Справочник ПростойСправочник2 ПростойСправочник21 + Наименование Тест1 +Документ Документ2 Документ + Дата ТекущаяДата + ПростойСправочник ПростойСправочник Перем + Состав + РеквизитЧисло 150 + ПростойСправочник2 ПростойСправочник21 Перем + РеквизитБулево Ложь +РегистрБухгалтерии РегистрБухгалтерии1 ЗаписьРегистра1 + Запись + Регистратор Документ Перем + Период + СчетДт Счет01 Наименование + СчетКт Счет02 Наименование + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2Дт ПростойСправочник21 Перем + ПростойСправочник2Кт ПростойСправочник21 Перем + РесурсЧисло 150 + РесурсЧисло1Дт 10 + РеквизитБулево Ложь + СубконтоДт1 ПростойСправочник Перем + СубконтоКт1 ПростойСправочник21 Перем + СубконтоКт2 ПростойСправочник Перем \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217_mxl.txt" new file mode 100644 index 00000000..437754ec --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\271\320\227\320\260\320\277\320\270\321\201\320\270\320\222\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\265\320\235\320\260\320\272\320\276\320\277\320\273\320\265\320\275\320\270\321\217_mxl.txt" @@ -0,0 +1,20 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование Тест +Справочник ПростойСправочник2 ПростойСправочник21 + Наименование Тест1 +Документ Документ2 Документ + Дата ТекущаяДата + ПростойСправочник ПростойСправочник Перем + Состав + РеквизитЧисло 150 + ПростойСправочник2 ПростойСправочник21 Перем + РеквизитБулево Ложь +РегистрНакопления РегистрНакопления2 ЗаписьРегистра1 + Запись + Регистратор Документ Перем + Период + ПростойСправочник ПростойСправочник Перем + ПростойСправочник2 ПростойСправочник21 Перем + РесурсЧисло 150 + РеквизитБулево Ложь \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260_mxl.txt" new file mode 100644 index 00000000..9dbf438a --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\221\320\270\320\267\320\275\320\265\321\201\320\237\321\200\320\276\321\206\320\265\321\201\321\201\320\260_mxl.txt" @@ -0,0 +1,14 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование Тестовое наименование + РеквизитБулево Истина +БизнесПроцесс БизнесПроцесс1 ПростойБП + ПростойСправочник ПростойСправочник Перем + ТабличнаяЧасть1 + Реквизит1 Значение1 + ТабличнаяЧасть1 + Реквизит1 Значение2 +Задача Задача1 Действие1 + Наименование Действие1 + ТочкаМаршрута Действие1 Предопределенный + БизнесПроцесс ПростойБП Перем \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\2602_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\2602_mxl.txt" new file mode 100644 index 00000000..50bd15e9 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\2602_mxl.txt" @@ -0,0 +1,3 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник2 ПростойСправочник2 + Наименование Наименование \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt" new file mode 100644 index 00000000..71ce9e38 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_mxl.txt" @@ -0,0 +1,4 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование Тестовое наименование + РеквизитБулево Истина \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213_mxl.txt" new file mode 100644 index 00000000..3ff9b098 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213_mxl.txt" @@ -0,0 +1,5 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим Ключ +Справочник ПростойСправочник ПростойСправочник + Наименование Наименование Ключ + РеквизитБулево Истина + РеквизитПеречисление РеквизитПеречисление Предопределенный \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\237\321\203\321\201\321\202\321\213\320\265\320\241\321\202\321\200\320\276\320\272\320\270_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\237\321\203\321\201\321\202\321\213\320\265\320\241\321\202\321\200\320\276\320\272\320\270_mxl.txt" new file mode 100644 index 00000000..90301ebc --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\237\321\203\321\201\321\202\321\213\320\265\320\241\321\202\321\200\320\276\320\272\320\270_mxl.txt" @@ -0,0 +1,7 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим + +Справочник ПростойСправочник ПростойСправочник + + Наименование Тестовое наименование + + РеквизитБулево Истина diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\240\320\265\320\266\320\270\320\274\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\320\265_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\240\320\265\320\266\320\270\320\274\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\320\265_mxl.txt" new file mode 100644 index 00000000..322cb09c --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260_\320\240\320\265\320\266\320\270\320\274\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\320\265_mxl.txt" @@ -0,0 +1,4 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование "Тестовое"+" наименование" Выражение + РеквизитБулево Не Ложь Выражение \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\237\320\276\320\223\321\203\320\270\320\264_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\237\320\276\320\223\321\203\320\270\320\264_mxl.txt" new file mode 100644 index 00000000..cf231e32 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\237\320\276\320\223\321\203\320\270\320\264_mxl.txt" @@ -0,0 +1,5 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Ссылка a72ec81b-d17d-4d2f-9a47-2ffb2e3234c4 Гуид + РеквизитБулево Истина + РеквизитПеречисление ЗначениеПеречисления1 Предопределенный \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\237\320\276\320\223\321\203\320\270\320\264\320\241\321\201\321\213\320\273\320\272\320\270_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\237\320\276\320\223\321\203\320\270\320\264\320\241\321\201\321\213\320\273\320\272\320\270_mxl.txt" new file mode 100644 index 00000000..d5d3ca06 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\237\321\200\320\276\321\201\321\202\320\276\320\263\320\276\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\237\320\276\320\223\321\203\320\270\320\264\320\241\321\201\321\213\320\273\320\272\320\270_mxl.txt" @@ -0,0 +1,5 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Ссылка a72ec81b-d17d-4d2f-9a47-2ffb2e3234c4 СоздатьПоГуид + РеквизитБулево Истина + РеквизитПеречисление ЗначениеПеречисления1 Предопределенный \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262_mxl.txt" new file mode 100644 index 00000000..bc206aa6 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\262\321\217\320\267\320\260\320\275\320\275\321\213\321\205\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262_mxl.txt" @@ -0,0 +1,7 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование Тестовая группа товаров + РеквизитБулево Ложь +Справочник ИерархическийСправочник ИерархическийСправочник + Наименование Тест + ПростойСправочник ПростойСправочник Перем \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\2602_\321\201_\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\2602_\321\201_\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260_mxl.txt" new file mode 100644 index 00000000..c0a7c6ac --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\2602_\321\201_\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260_mxl.txt" @@ -0,0 +1,6 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения +Справочник ПростойСправочник ПростойСправочник + Наименование Тест345 +Справочник СправочникСТабЧастью СправочникСТабЧастью + Наименование Тест + РеквизитСоставногоТипа Тест345 Наименование СправочникСсылка.ПростойСправочник \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\2602_\321\201_\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260_\320\270_\320\237\321\203\321\201\321\202\320\276\320\271\320\241\321\201\321\213\320\273\320\272\320\276\320\271_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\2602_\321\201_\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260_\320\270_\320\237\321\203\321\201\321\202\320\276\320\271\320\241\321\201\321\213\320\273\320\272\320\276\320\271_mxl.txt" new file mode 100644 index 00000000..2d39e076 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\2602_\321\201_\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260_\320\270_\320\237\321\203\321\201\321\202\320\276\320\271\320\241\321\201\321\213\320\273\320\272\320\276\320\271_mxl.txt" @@ -0,0 +1,4 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения +Справочник СправочникСТабЧастью СправочникСТабЧастью + Наименование Тест + РеквизитСоставногоТипа СправочникСсылка.ПростойСправочник \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\2602_\321\201_\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260_\320\270_\320\237\321\203\321\201\321\202\320\276\320\271\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\2602_\321\201_\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260_\320\270_\320\237\321\203\321\201\321\202\320\276\320\271\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265_mxl.txt" new file mode 100644 index 00000000..5c8c9e49 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\2602_\321\201_\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\241\320\276\321\201\321\202\320\260\320\262\320\275\320\276\320\263\320\276\320\242\320\270\320\277\320\260_\320\270_\320\237\321\203\321\201\321\202\320\276\320\271\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265_mxl.txt" @@ -0,0 +1,4 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения +Справочник СправочникСТабЧастью СправочникСТабЧастью + Наименование Тест + РеквизитСоставногоТипа ПеречислениеСсылка.Перечисление1 \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\237\320\276\321\201\320\273\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\237\320\276\321\201\320\273\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270_mxl.txt" new file mode 100644 index 00000000..641ff891 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\237\320\276\321\201\320\273\320\265\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260\320\241\320\224\320\262\321\203\320\274\321\217\320\241\321\202\321\200\320\276\320\272\320\260\320\274\320\270\320\222\320\242\320\260\320\261\320\273\320\270\321\207\320\275\320\276\320\271\320\247\320\260\321\201\321\202\320\270_mxl.txt" @@ -0,0 +1,20 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Наименование Тест +Справочник ПростойСправочник2 ПростойСправочник21 + Наименование Тест1 +Справочник ПростойСправочник2 ПростойСправочник22 + Наименование Тест2 +Документ Документ1 Документ + Дата 20130801 + ПростойСправочник ПростойСправочник Перем + Состав + РеквизитЧисло 150 + ПростойСправочник2 Тест1 Наименование + РеквизитБулево Ложь + Состав + ПростойСправочник2 ПростойСправочник22 Перем + РеквизитЧисло 0 + РеквизитБулево Истина +Справочник ПростойСправочник2 ПростойСправочник23 + Наименование Тест3 \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\320\276\320\274\320\276\321\211\321\214\321\216\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\241\320\262\320\276\320\271\321\201\321\202\320\262_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\320\276\320\274\320\276\321\211\321\214\321\216\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\241\320\262\320\276\320\271\321\201\321\202\320\262_mxl.txt" new file mode 100644 index 00000000..eb66cecb --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\320\276\320\274\320\276\321\211\321\214\321\216\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\241\320\262\320\276\320\271\321\201\321\202\320\262_mxl.txt" @@ -0,0 +1,9 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения +Справочник ПростойСправочник ПростойСправочник + Наименование Тестовое наименование + РеквизитБулево Истина +Справочник ИерархическийСправочник ИерархическийСправочник + Наименование Тест1 + ПростойСправочник + ДополнительныеСвойства + СвойствоПростойСправочник ПростойСправочник Перем \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\320\276\320\274\320\276\321\211\321\214\321\216\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\237\320\276\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\321\216_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\320\276\320\274\320\276\321\211\321\214\321\216\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\237\320\276\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\321\216_mxl.txt" new file mode 100644 index 00000000..e26ca460 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\320\276\320\274\320\276\321\211\321\214\321\216\320\224\320\276\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\275\321\213\321\205\320\241\320\262\320\276\320\271\321\201\321\202\320\262\320\237\320\276\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\321\216_mxl.txt" @@ -0,0 +1,8 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения +Справочник ПростойСправочник ПростойСправочник + Наименование Тестовое наименование 357 + РеквизитБулево Истина +Справочник ИерархическийСправочник ИерархическийСправочник + Наименование Тест1 + ДополнительныеСвойства + СвойствоПростойСправочник Тестовое наименование 357 Наименование СправочникСсылка.ПростойСправочник \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\320\276\320\274\320\276\321\211\321\214\321\216\320\236\320\261\320\274\320\265\320\275\320\224\320\260\320\275\320\275\321\213\320\274\320\270\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\320\276\320\274\320\276\321\211\321\214\321\216\320\236\320\261\320\274\320\265\320\275\320\224\320\260\320\275\320\275\321\213\320\274\320\270\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260_mxl.txt" new file mode 100644 index 00000000..b8357be3 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\320\276\320\274\320\276\321\211\321\214\321\216\320\236\320\261\320\274\320\265\320\275\320\224\320\260\320\275\320\275\321\213\320\274\320\270\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260_mxl.txt" @@ -0,0 +1,3 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения +Справочник ПростойСправочник ПростойСправочник ОбменДанными + Наименование Наименование \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\320\276\320\274\320\276\321\211\321\214\321\216\320\242\320\247_\320\236\320\261\320\274\320\265\320\275\320\224\320\260\320\275\320\275\321\213\320\274\320\270\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\320\276\320\274\320\276\321\211\321\214\321\216\320\242\320\247_\320\236\320\261\320\274\320\265\320\275\320\224\320\260\320\275\320\275\321\213\320\274\320\270\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260_mxl.txt" new file mode 100644 index 00000000..8fa38c46 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\237\320\276\320\274\320\276\321\211\321\214\321\216\320\242\320\247_\320\236\320\261\320\274\320\265\320\275\320\224\320\260\320\275\320\275\321\213\320\274\320\270\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260_mxl.txt" @@ -0,0 +1,5 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения +Справочник ПростойСправочник ПростойСправочник + Наименование Наименование + ОбменДанными + Загрузка Истина Булево \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274_\320\237\320\273\320\260\320\275\320\241\321\207\320\265\321\202\320\276\320\262_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274_\320\237\320\273\320\260\320\275\320\241\321\207\320\265\321\202\320\276\320\262_mxl.txt" new file mode 100644 index 00000000..17863210 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274_\320\237\320\273\320\260\320\275\320\241\321\207\320\265\321\202\320\276\320\262_mxl.txt" @@ -0,0 +1,4 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник2 ПростойСправочник2 + Наименование Тест + Счет Счет01 Наименование \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\237\321\203\321\201\321\202\320\260\321\217\320\241\321\201\321\213\320\273\320\272\320\260_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\237\321\203\321\201\321\202\320\260\321\217\320\241\321\201\321\213\320\273\320\272\320\260_mxl.txt" new file mode 100644 index 00000000..71abe88c --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\276\320\274\320\237\321\203\321\201\321\202\320\260\321\217\320\241\321\201\321\213\320\273\320\272\320\260_mxl.txt" @@ -0,0 +1,4 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ИерархическийСправочник ИерархическийСправочник + Наименование Тест + ПростойСправочник \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\276\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\235\320\260\320\241\320\260\320\274\320\276\320\263\320\276\320\241\320\265\320\261\321\217_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\276\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\235\320\260\320\241\320\260\320\274\320\276\320\263\320\276\320\241\320\265\320\261\321\217_mxl.txt" new file mode 100644 index 00000000..1dfd27ee --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\260\320\241\320\276\320\241\321\201\321\213\320\273\320\272\320\276\320\271\320\235\320\260\320\241\320\260\320\274\320\276\320\263\320\276\320\241\320\265\320\261\321\217_mxl.txt" @@ -0,0 +1,4 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения +Справочник СправочникСоСсылкойНаСамогоСебя ЭлементСоСсылкой + Наименование Элемент со ссылкой + СправочникСоСсылкойНаСамогоСебя ЭлементСоСсылкой Перем \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262\320\236\320\261\321\200\320\260\320\267\321\203\321\216\321\211\320\270\321\205\320\246\320\270\320\272\320\273\320\270\321\207\320\265\321\201\320\272\321\203\321\216\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\321\214_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262\320\236\320\261\321\200\320\260\320\267\321\203\321\216\321\211\320\270\321\205\320\246\320\270\320\272\320\273\320\270\321\207\320\265\321\201\320\272\321\203\321\216\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\321\214_mxl.txt" new file mode 100644 index 00000000..8710675f --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\276\320\262\320\236\320\261\321\200\320\260\320\267\321\203\321\216\321\211\320\270\321\205\320\246\320\270\320\272\320\273\320\270\321\207\320\265\321\201\320\272\321\203\321\216\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\321\214_mxl.txt" @@ -0,0 +1,10 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим ДополнительныйТипЗначения +Справочник СправочникСоСсылкойНаСамогоСебя ЭлементСоСсылкой1 + Наименование Элемент со ссылкой 1 + СправочникСоСсылкойНаСамогоСебя ЭлементСоСсылкой2 Перем +Справочник СправочникСоСсылкойНаСамогоСебя ЭлементСоСсылкой2 + Наименование Элемент со ссылкой 2 + СправочникСоСсылкойНаСамогоСебя ЭлементСоСсылкой3 Перем +Справочник СправочникСоСсылкойНаСамогоСебя ЭлементСоСсылкой3 + Наименование Элемент со ссылкой 3 + СправочникСоСсылкойНаСамогоСебя ЭлементСоСсылкой1 Перем \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\243\320\267\320\273\320\260\320\237\320\273\320\260\320\275\320\260\320\236\320\261\320\274\320\265\320\275\320\260_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\243\320\267\320\273\320\260\320\237\320\273\320\260\320\275\320\260\320\236\320\261\320\274\320\265\320\275\320\260_mxl.txt" new file mode 100644 index 00000000..c4a81549 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\243\320\267\320\273\320\260\320\237\320\273\320\260\320\275\320\260\320\236\320\261\320\274\320\265\320\275\320\260_mxl.txt" @@ -0,0 +1,8 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +ПланОбмена ПланОбмена1 УзелЭтойИБ ЭтотУзел + Код 000000001 + Наименование Эта информационная база +ПланОбмена ПланОбмена1 Узел1 + Наименование Узел обмена 1 + РеквизитБулево Истина + РеквизитПеречисление РеквизитПеречисление Предопределенный \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260\320\230\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\237\320\276\320\270\321\201\320\272\320\276\320\274\320\237\320\276\320\223\320\243\320\230\320\224\321\203_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260\320\230\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\237\320\276\320\270\321\201\320\272\320\276\320\274\320\237\320\276\320\223\320\243\320\230\320\224\321\203_mxl.txt" new file mode 100644 index 00000000..5df437c2 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260\320\230\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\237\320\276\320\270\321\201\320\272\320\276\320\274\320\237\320\276\320\223\320\243\320\230\320\224\321\203_mxl.txt" @@ -0,0 +1,4 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ИерархическийСправочник ИерархическийСправочник + Наименование Тест + ПростойСправочник 634e552d-b43a-4bc8-a150-d009f83269e1 ГУИД \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260\320\230\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\237\320\276\320\270\321\201\320\272\320\276\320\274\320\237\320\276\320\232\320\276\320\264\321\203_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260\320\230\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\237\320\276\320\270\321\201\320\272\320\276\320\274\320\237\320\276\320\232\320\276\320\264\321\203_mxl.txt" new file mode 100644 index 00000000..9d5163ad --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260\320\230\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\237\320\276\320\270\321\201\320\272\320\276\320\274\320\237\320\276\320\232\320\276\320\264\321\203_mxl.txt" @@ -0,0 +1,8 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Код 6541 + Наименование Тестовая группа товаров + РеквизитБулево Ложь +Справочник ИерархическийСправочник ИерархическийСправочник + Наименование Тест + ПростойСправочник 6541 Код \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260\320\230\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\237\320\276\320\270\321\201\320\272\320\276\320\274\320\237\320\276\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\321\216_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260\320\230\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\237\320\276\320\270\321\201\320\272\320\276\320\274\320\237\320\276\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\321\216_mxl.txt" new file mode 100644 index 00000000..901ec2eb --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260\320\230\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\260\320\237\320\276\320\270\321\201\320\272\320\276\320\274\320\237\320\276\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\321\216_mxl.txt" @@ -0,0 +1,8 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Код 6541 + Наименование Тестовый элемент + РеквизитБулево Ложь +Справочник ИерархическийСправочник ИерархическийСправочник + Наименование Тест + ПростойСправочник Тестовый элемент Наименование \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\242\320\265\321\201\321\202\320\224\320\276\320\273\320\266\320\265\320\275_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\271\320\240\320\265\320\266\320\270\320\274\320\237\320\276\320\270\321\201\320\272\320\260_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\242\320\265\321\201\321\202\320\224\320\276\320\273\320\266\320\265\320\275_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\271\320\240\320\265\320\266\320\270\320\274\320\237\320\276\320\270\321\201\320\272\320\260_mxl.txt" new file mode 100644 index 00000000..eab23d6b --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\242\320\265\321\201\321\202\320\224\320\276\320\273\320\266\320\265\320\275_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\235\320\265\320\262\320\265\321\200\320\275\321\213\320\271\320\240\320\265\320\266\320\270\320\274\320\237\320\276\320\270\321\201\320\272\320\260_mxl.txt" @@ -0,0 +1,8 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Код 6541 + Наименование Тестовая группа товаров + РеквизитБулево Ложь +Справочник ИерархическийСправочник ИерархическийСправочник + Наименование Тест + ПростойСправочник 6543 Неверный режим! \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\242\320\265\321\201\321\202\320\224\320\276\320\273\320\266\320\265\320\275_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\237\320\276\320\277\321\213\321\202\320\272\320\265\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\230\320\227\320\260\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\237\320\276\320\235\320\265\320\262\320\265\321\200\320\275\320\276\320\274\321\203\320\232\320\276\320\264\321\203_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\242\320\265\321\201\321\202\320\224\320\276\320\273\320\266\320\265\320\275_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\237\320\276\320\277\321\213\321\202\320\272\320\265\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\230\320\227\320\260\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\237\320\276\320\235\320\265\320\262\320\265\321\200\320\275\320\276\320\274\321\203\320\232\320\276\320\264\321\203_mxl.txt" new file mode 100644 index 00000000..ce324a65 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\242\320\265\321\201\321\202\320\224\320\276\320\273\320\266\320\265\320\275_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\237\320\276\320\277\321\213\321\202\320\272\320\265\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\230\320\227\320\260\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\237\320\276\320\235\320\265\320\262\320\265\321\200\320\275\320\276\320\274\321\203\320\232\320\276\320\264\321\203_mxl.txt" @@ -0,0 +1,8 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Код 4841 + Наименование Тестовая группа товаров + РеквизитБулево Ложь +Справочник ИерархическийСправочник ИерархическийСправочник + Наименование Тест + ПростойСправочник 4943 Код \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\242\320\265\321\201\321\202\320\224\320\276\320\273\320\266\320\265\320\275_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\237\320\276\320\277\321\213\321\202\320\272\320\265\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\230\320\227\320\260\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\237\320\276\320\235\320\265\320\262\320\265\321\200\320\275\320\276\320\274\321\203\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\321\216_mxl.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\242\320\265\321\201\321\202\320\224\320\276\320\273\320\266\320\265\320\275_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\237\320\276\320\277\321\213\321\202\320\272\320\265\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\230\320\227\320\260\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\237\320\276\320\235\320\265\320\262\320\265\321\200\320\275\320\276\320\274\321\203\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\321\216_mxl.txt" new file mode 100644 index 00000000..9949ab59 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\320\265\321\200\320\270\320\260\320\273\320\270\320\267\320\260\321\202\320\276\321\200MXL/\320\234\320\260\320\272\320\265\321\202\321\213/\320\242\320\265\321\201\321\202\320\224\320\276\320\273\320\266\320\265\320\275_\320\237\320\276\320\273\321\203\321\207\320\270\321\202\321\214\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\237\321\200\320\270\320\237\320\276\320\277\321\213\321\202\320\272\320\265\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\230\320\227\320\260\320\277\320\276\320\273\320\275\320\270\321\202\321\214\320\240\320\265\320\272\320\262\320\270\320\267\320\270\321\202\320\237\320\276\320\235\320\265\320\262\320\265\321\200\320\275\320\276\320\274\321\203\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\321\216_mxl.txt" @@ -0,0 +1,8 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +Справочник ПростойСправочник ПростойСправочник + Код 6541 + Наименование Тестовая группа товаров + РеквизитБулево Ложь +Справочник ИерархическийСправочник ИерархическийСправочник + Наименование Тест + ПростойСправочник 6543 Наименование \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" similarity index 97% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" index feb78342..f66e5931 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -3,6 +3,8 @@ &НаКлиенте Перем Ожидаем; &НаКлиенте +Перем Утверждения; +&НаКлиенте Перем СтроковыеУтилиты; // { интерфейс тестирования @@ -10,6 +12,7 @@ &НаКлиенте Процедура Инициализация(КонтекстЯдраПараметр) Экспорт КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); КонецПроцедуры @@ -320,14 +323,21 @@ &НаКлиенте Процедура ТестДолжен_ПроверитьРаботуФункции_ФорматированнаяСтрока() Экспорт + СистемнаяИнформация = Новый СистемнаяИнформация; + ВерсияПриложения = СистемнаяИнформация.ВерсияПриложения; + + Если ВерсияПриложения < "8.3.3" Тогда + Возврат; + КонецЕсли; + МассивСтроки = Новый Массив; - МассивСтроки.Добавить(Новый ФорматированнаяСтрока("1.1", Новый Шрифт(,,Истина))); + Выполнить("МассивСтроки.Добавить(Новый ФорматированнаяСтрока(""1.1"", Новый Шрифт(,,Истина)));"); МассивСтроки.Добавить(". "); - МассивСтроки.Добавить(Новый ФорматированнаяСтрока("Обновите",,,, "Обновление")); + Выполнить("МассивСтроки.Добавить(Новый ФорматированнаяСтрока(""Обновите"",,,, ""Обновление""));"); МассивСтроки.Добавить(" программу."); РезультатПреобразования = СтроковыеУтилиты.ФорматированнаяСтрока("1.1. Обновите программу."); - Ожидаем.Что(РезультатПреобразования).Равно(Новый ФорматированнаяСтрока(МассивСтроки)); + Выполнить("Ожидаем.Что(РезультатПреобразования).Равно(Новый ФорматированнаяСтрока(МассивСтроки));"); КонецПроцедуры diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.bsl" similarity index 97% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.bsl" index f668fb9d..24a2af5b 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/ObjectModule.bsl" @@ -1,11 +1,13 @@ Перем КонтекстЯдра; Перем Ожидаем; +Перем Утверждения; Перем СтроковыеУтилиты; // { интерфейс тестирования Процедура Инициализация(КонтекстЯдраПараметр) Экспорт КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); СтроковыеУтилиты = КонтекстЯдра.Плагин("СтроковыеУтилиты"); КонецПроцедуры @@ -294,14 +296,21 @@ Процедура ТестДолжен_ПроверитьРаботуФункции_ФорматированнаяСтрока() Экспорт + СистемнаяИнформация = Новый СистемнаяИнформация; + ВерсияПриложения = СистемнаяИнформация.ВерсияПриложения; + + Если ВерсияПриложения < "8.3.3" Тогда + Возврат; + КонецЕсли; + МассивСтроки = Новый Массив; - МассивСтроки.Добавить(Новый ФорматированнаяСтрока("1.1", Новый Шрифт(,,Истина))); + Выполнить("МассивСтроки.Добавить(Новый ФорматированнаяСтрока(""1.1"", Новый Шрифт(,,Истина)));"); МассивСтроки.Добавить(". "); - МассивСтроки.Добавить(Новый ФорматированнаяСтрока("Обновите",,,, "Обновление")); + Выполнить("МассивСтроки.Добавить(Новый ФорматированнаяСтрока(""Обновите"",,,, ""Обновление""));"); МассивСтроки.Добавить(" программу."); РезультатПреобразования = СтроковыеУтилиты.ФорматированнаяСтрока("1.1. Обновите программу."); - Ожидаем.Что(РезультатПреобразования).Равно(Новый ФорматированнаяСтрока(МассивСтроки)); + Выполнить("Ожидаем.Что(РезультатПреобразования).Равно(Новый ФорматированнаяСтрока(МассивСтроки));"); КонецПроцедуры diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/maps.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/maps.txt" new file mode 100644 index 00000000..ec9166bf --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/maps.txt" @@ -0,0 +1 @@ +Form\Форма\Форма.bsl-->c1213115-2d8e-4dbf-9687-e353391331cc.0 (29, 454) diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/renames.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/renames.txt" index 26d35e1b..a31b9512 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/renames.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/renames.txt" @@ -1,11 +1,9 @@ aa3398ee-6203-44e1-9810-a0737f241f75-->und\aa3398ee-6203-44e1-9810-a0737f241f75 c1213115-2d8e-4dbf-9687-e353391331cc-->und\c1213115-2d8e-4dbf-9687-e353391331cc -c1213115-2d8e-4dbf-9687-e353391331cc.0-->Form\Форма\Форма.txt -c1213115-2d8e-4dbf-9687-e353391331cc.0-->und\c1213115-2d8e-4dbf-9687-e353391331cc.0 c1213115-2d8e-4dbf-9687-e353391331cc.0-->und\c1213115-2d8e-4dbf-9687-e353391331cc.0 copyinfo-->und\copyinfo ea75be97-b437-4750-a79f-478ea2e60f75.0\info-->und\ea75be97-b437-4750-a79f-478ea2e60f75.0\info -ea75be97-b437-4750-a79f-478ea2e60f75.0\text-->ObjectModule.txt +ea75be97-b437-4750-a79f-478ea2e60f75.0\text-->ObjectModule.bsl root-->und\root version-->und\version versions-->und\versions diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/aa3398ee-6203-44e1-9810-a0737f241f75" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/aa3398ee-6203-44e1-9810-a0737f241f75" index fac22080..0acc20d4 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/aa3398ee-6203-44e1-9810-a0737f241f75" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/aa3398ee-6203-44e1-9810-a0737f241f75" @@ -4,9 +4,9 @@ {1, {4,6fd23cfa-0426-4dc3-9927-aedb28bf29ae,0ff7877a-1835-4e16-a06f-627983be2f35, {0, -{1, +{0, {0,0,ea75be97-b437-4750-a79f-478ea2e60f75},"Тесты_СтроковыеУтилиты", -{1,"ru","Тесты строковые утилиты"},"",0,0} +{1,"ru","Тесты строковые утилиты"},""} },00000000-0000-0000-0000-000000000000,"",00000000-0000-0000-0000-000000000000},4, {2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, {3daea016-69b7-4ed4-9453-127911372fe6,0}, diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/c1213115-2d8e-4dbf-9687-e353391331cc" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/c1213115-2d8e-4dbf-9687-e353391331cc" index dd61f920..0efc58cb 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/c1213115-2d8e-4dbf-9687-e353391331cc" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/c1213115-2d8e-4dbf-9687-e353391331cc" @@ -1,15 +1,10 @@ {1, {1, {0, -{12, -{1, +{9, +{0, {0,0,c1213115-2d8e-4dbf-9687-e353391331cc},"Форма", -{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1, -{2, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} -} -}, +{1,"ru","Форма"},""},0,1}, {0} } },0} \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/c1213115-2d8e-4dbf-9687-e353391331cc.0" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/c1213115-2d8e-4dbf-9687-e353391331cc.0" index 7b270a48..7b7c3152 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/c1213115-2d8e-4dbf-9687-e353391331cc.0" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/c1213115-2d8e-4dbf-9687-e353391331cc.0" @@ -1,9 +1,9 @@ -{3, -{42,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, +{2, +{28,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, {1,0},0,0,1,1,1,0,1,0, -{0,0,0}, +{0}, {0},1, -{21, +{17, {-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -14,44 +14,25 @@ {3,4, {0} }, -{7,3,0,1,100}, +{6,3,0,1}, {0,0,0},1, -{0,0,1},0,1,0,0,0,3,3},0,"","",1, -{21, +{0,0,1},0,1},0,"","",1, +{17, {0},0,0,0,7,"Navigator", {1,0}, {1,0},0,1,0,0,0,2,2, {3,4, {0} }, -{7,3,0,1,100}, -{0,0,0},0,0,1,0,1, -{10, -{0},0,0,0,0,"NavigatorExtendedTooltip", -{1,0}, -{1,0},1,0,0,2,2, -{3,4, -{0} -}, -{7,3,0,1,100}, -{0,0,0},1, -{5,0,0,3,0, -{0,0,0}, -{3,4, -{0} -}, -{3,4, -{0} -}, -{3,0, -{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} -},0,1,2, -{1, -{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,"",0,0,0,0,0,0,3,3,0,0,0},"&НаКлиенте +{6,3,0,1}, +{0,0,0},0,0,1} +},"&НаКлиенте Перем КонтекстЯдра; &НаКлиенте Перем Ожидаем; &НаКлиенте +Перем Утверждения; +&НаКлиенте Перем СтроковыеУтилиты; // { интерфейс тестирования @@ -59,6 +40,7 @@ &НаКлиенте Процедура Инициализация(КонтекстЯдраПараметр) Экспорт КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин(""БазовыеУтверждения""); Ожидаем = КонтекстЯдра.Плагин(""УтвержденияBDD""); СтроковыеУтилиты = КонтекстЯдра.Плагин(""СтроковыеУтилиты""); КонецПроцедуры @@ -369,14 +351,21 @@ &НаКлиенте Процедура ТестДолжен_ПроверитьРаботуФункции_ФорматированнаяСтрока() Экспорт + СистемнаяИнформация = Новый СистемнаяИнформация; + ВерсияПриложения = СистемнаяИнформация.ВерсияПриложения; + + Если ВерсияПриложения < ""8.3.3"" Тогда + Возврат; + КонецЕсли; + МассивСтроки = Новый Массив; - МассивСтроки.Добавить(Новый ФорматированнаяСтрока(""1.1"", Новый Шрифт(,,Истина))); + Выполнить(""МассивСтроки.Добавить(Новый ФорматированнаяСтрока(""""1.1"""", Новый Шрифт(,,Истина)));""); МассивСтроки.Добавить("". ""); - МассивСтроки.Добавить(Новый ФорматированнаяСтрока(""Обновите"",,,, ""Обновление"")); + Выполнить(""МассивСтроки.Добавить(Новый ФорматированнаяСтрока(""""Обновите"""",,,, """"Обновление""""));""); МассивСтроки.Добавить("" программу.""); РезультатПреобразования = СтроковыеУтилиты.ФорматированнаяСтрока(""1.1. Обновите программу.""); - Ожидаем.Что(РезультатПреобразования).Равно(Новый ФорматированнаяСтрока(МассивСтроки)); + Выполнить(""Ожидаем.Что(РезультатПреобразования).Равно(Новый ФорматированнаяСтрока(МассивСтроки));""); КонецПроцедуры @@ -499,4 +488,5 @@ L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} {0,0}, {0,0}, {0,0}, -{0,0},0,0} \ No newline at end of file +{0,0} +} \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/versions" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/versions" index ef8899cf..40525d2d 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/versions" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\243\321\202\320\270\320\273\320\270\321\202\321\213/und/versions" @@ -1 +1 @@ -{1,11,"",0d25f772-63fa-437b-ac02-3d43b13cee3d,"aa3398ee-6203-44e1-9810-a0737f241f75",1899f848-0944-4b68-b2c8-a47841ce2382,"c1213115-2d8e-4dbf-9687-e353391331cc",3ca1ba3c-df24-44c7-9a26-b1f622814a1e,"c1213115-2d8e-4dbf-9687-e353391331cc.0",761125f9-a4c5-4175-826f-bba1092e3f4b,"c1213115-2d8e-4dbf-9687-e353391331cc.1",6ea21ecc-ca53-4a7b-902f-46566bfc3216,"cc3dbe26-3080-4bf0-9ab1-ee85f142f7bc",398e9380-50e9-46e0-8c61-15026bb86cf2,"copyinfo",faa5343c-fd44-4000-9eea-6506a2d2631b,"ea75be97-b437-4750-a79f-478ea2e60f75.0",f0c188f8-0a93-4e66-99d9-1b973981ff63,"root",f29f977f-5b78-4505-bdbd-60f7d4b55c0a,"version",64ea2a59-dc17-431f-8cf7-05ce604da109,"versions",10708b6f-1152-4e10-9fb1-0273c72d6427} \ No newline at end of file +{1,11,"",7465f13f-b014-4052-b7b1-b3e97d9705cd,"versions",ef5da00f-57a7-4014-bca2-18668d7ccdbf,"ea75be97-b437-4750-a79f-478ea2e60f75.0",9a7bff2a-3ddf-42a2-95e2-af2008fd2ec6,"root",2d0550e1-6732-464f-9104-9f66772f03c7,"aa3398ee-6203-44e1-9810-a0737f241f75",2ee5f045-8f5c-4b36-8b68-6f944f895339,"cc3dbe26-3080-4bf0-9ab1-ee85f142f7bc",398e9380-50e9-46e0-8c61-15026bb86cf2,"c1213115-2d8e-4dbf-9687-e353391331cc.1",6ea21ecc-ca53-4a7b-902f-46566bfc3216,"version",cfbcfdff-535c-4c86-935a-a82ecb665abb,"c1213115-2d8e-4dbf-9687-e353391331cc.0",67fcb750-a9ca-4bf1-8bf8-2fa2c539ed8c,"c1213115-2d8e-4dbf-9687-e353391331cc",cc19dd82-fc74-4720-9ccf-0b868361a7bd,"copyinfo",4fbe9860-35a5-4a5e-a3d1-dcb9b3c685f3} \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" similarity index 100% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/ObjectModule.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/ObjectModule.bsl" similarity index 100% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/ObjectModule.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/ObjectModule.bsl" diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/maps.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/maps.txt" new file mode 100644 index 00000000..d92ef5a4 --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/maps.txt" @@ -0,0 +1 @@ +Form\Форма\Форма.bsl-->53e66096-e66b-4bde-869e-c750bc34751b.0 (51, 138) diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/renames.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/renames.txt" index 63314c4d..7ec1ebbf 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/renames.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213_\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217BDD/renames.txt" @@ -1,10 +1,8 @@ 53e66096-e66b-4bde-869e-c750bc34751b-->und\53e66096-e66b-4bde-869e-c750bc34751b -53e66096-e66b-4bde-869e-c750bc34751b.0-->C:\Projects\xUnitFor1C_plugins\src\Tests\Plugins\Тесты_УтвержденияBDD\Form\Форма\Форма.txt -53e66096-e66b-4bde-869e-c750bc34751b.0-->und\53e66096-e66b-4bde-869e-c750bc34751b.0 53e66096-e66b-4bde-869e-c750bc34751b.0-->und\53e66096-e66b-4bde-869e-c750bc34751b.0 9cb5b204-7281-47bd-aa1c-5f9a6a950513-->und\9cb5b204-7281-47bd-aa1c-5f9a6a950513 b9fd794e-c598-414d-9858-603393d7d912.0\info-->und\b9fd794e-c598-414d-9858-603393d7d912.0\info -b9fd794e-c598-414d-9858-603393d7d912.0\text-->ObjectModule.txt +b9fd794e-c598-414d-9858-603393d7d912.0\text-->ObjectModule.bsl copyinfo-->und\copyinfo root-->und\root version-->und\version diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..53467b3a --- /dev/null +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,126 @@ + +//{ основная процедура для юнит-тестирования xUnitFor1C + +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Ожидаем; +&НаКлиенте +Перем Утверждения; +&НаКлиенте +Перем УтвержденияПроверкаТаблиц; + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; + Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + УтвержденияПроверкаТаблиц = КонтекстЯдра.Плагин("УтвержденияПроверкаТаблиц"); +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт + НаборТестов.Добавить("Тест_ДолженПроверитьНеРавенствоТабличныхДокументов"); + НаборТестов.Добавить("Тест_ДолженПроверитьРавенствоТабличныхДокументов"); + НаборТестов.Добавить("Тест_ДолженПроверитьРавенствоТабличныхДокументовСоСкрытымиКолонками"); + НаборТестов.Добавить("Тест_ДолженПроверитьРавенствоТабличныхДокументовСоСкрытымиСтроками"); +КонецПроцедуры + +//} + +//{ блок юнит-тестов - сами тесты +&НаКлиенте +Процедура Тест_ДолженПроверитьНеРавенствоТабличныхДокументов() Экспорт + Макет1 = ПолучитьМакет("СозданиеОдногоПользователяИБ"); + Макет2 = ПолучитьМакет("СозданиеОдногоПользователяИБ_УФ"); + + БылоИсключение = Ложь; + Попытка + УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(Макет1, Макет2, "Таблицы 1 и 2 не должны совпадать, а они одинаковы!"); + Исключение + Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + БылоИсключение = Истина; + КонецПопытки; + Утверждения.Проверить(БылоИсключение, "Должны были получить исключение из-за неравенства таблиц, а его не было"); + + СтрокаОшибки = + "Таблицы должны совпадать, а они различны + |Различия в таблицах: + |Ожидали статус <ТаблицыСовпадают>, а получили <НеСовпадаютЗначенияВЯчейкеТаблицы> + |Значение [К6:6]. Ожидали <Обычное приложение>, а получили <Управляемое приложение> + | + |Таблицы 1 и 2 не должны совпадать, а они одинаковы!"; + + Утверждения.ПроверитьВхождение(Ошибка, СтрокаОшибки, "Должны были получить исключение из-за неравенства таблиц, а его не было"); +КонецПроцедуры + +&НаКлиенте +Процедура Тест_ДолженПроверитьРавенствоТабличныхДокументов() Экспорт + Макет1 = ПолучитьМакет("СозданиеОдногоПользователяИБ_УФ"); + Макет2 = ПолучитьМакет("СозданиеОдногоПользователяИБ_УФ"); + + УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(Макет1, Макет2, "Таблицы 1 и 2 должны совпадать, а они различны!"); +КонецПроцедуры + +&НаКлиенте +Процедура Тест_ДолженПроверитьРавенствоТабличныхДокументовСоСкрытымиКолонками() Экспорт + + Макет1 = ПолучитьМакет("СозданиеОдногоПользователяИБ"); + Макет2 = ПолучитьМакет("СозданиеОдногоПользователяИБ_СоСкрытойКолонкой"); + + УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(Макет1, Макет2, Истина, "Таблицы 1 и 2 должны совпадать, а они различны!"); + + Макет3 = ПолучитьМакет("СозданиеОдногоПользователяИБ"); + Макет3.Область(0, 1, 1, 1).Видимость = Ложь; + + УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(Макет1, Макет3, "Таблицы 1 и 3 должны совпадать, а они различны!"); + + Макет4 = ПолучитьМакет("СозданиеОдногоПользователяИБ_УФ"); + Макет4.Область(0, 6, 1, 6).Видимость = Ложь; + Макет5 = ПолучитьМакет("СозданиеОдногоПользователяИБ"); + Макет5.Область(0, 6, 1, 6).Видимость = Ложь; + + УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(Макет4, Макет5, Истина, "Таблицы 4 и 5 должны совпадать, а они различны!"); + +КонецПроцедуры + +&НаКлиенте +Процедура Тест_ДолженПроверитьРавенствоТабличныхДокументовСоСкрытымиСтроками() Экспорт + + Макет1 = ПолучитьМакет("СозданиеОдногоПользователяИБ"); + Макет2 = ПолучитьМакет("СозданиеОдногоПользователяИБ_УФ"); + + Макет1.Область(6,, 6).Видимость = Ложь; + Макет2.Область(6,, 6).Видимость = Ложь; + + УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(Макет1, Макет2,, Истина, "Таблицы 1 и 2 должны совпадать, а они различны!"); + + //Макет3 = ПолучитьМакет("СозданиеОдногоПользователяИБ"); + //Макет3.ВставитьОбласть(Макет2.Область(2,, 2), Макет3.Область(1,, 1), ТипСмещенияТабличногоДокумента.ПоВертикали); + //Макет3.Область(1,, 1).Видимость = Ложь; + // + //УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(Макет1, Макет3,, Истина, "Таблицы 1 и 3 должны совпадать, а они различны!"); + + Макет4 = ПолучитьМакет("СозданиеОдногоПользователяИБ"); + Макет4.Область(1,, 1).Видимость = Ложь; + + УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(Макет1, Макет4, "Таблицы 1 и 4 должны совпадать, а они различны!"); + +КонецПроцедуры + +&НаСервере +Функция ПолучитьМакет(ИмяМакета) + ОсновнойОбъект = ОсновнойОбъект(); + Макет = ОсновнойОбъект.ПолучитьМакет(ИмяМакета); + + Макет2 = Новый ТабличныйДокумент; + Макет2.Вывести(Макет); + Возврат Макет2; +КонецФункции + +&НаСервере +Функция ОсновнойОбъект() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции + +//} \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index 19a259f2..00000000 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/Form/\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ - //{ основная процедура для юнит-тестирования xUnitFor1C &НаКлиенте Перем КонтекстЯдра; &НаКлиенте Перем Ожидаем; &НаКлиенте Перем Утверждения; &НаКлиенте Перем УтвержденияПроверкаТаблиц; &НаКлиенте Процедура Инициализация(КонтекстЯдраПараметр) Экспорт КонтекстЯдра = КонтекстЯдраПараметр; Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); УтвержденияПроверкаТаблиц = КонтекстЯдра.Плагин("УтвержденияПроверкаТаблиц"); КонецПроцедуры &НаКлиенте Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт НаборТестов.Добавить("Тест_ДолженПроверитьНеРавенствоТабличныхДокументов"); НаборТестов.Добавить("Тест_ДолженПроверитьРавенствоТабличныхДокументов"); НаборТестов.Добавить("Тест_ДолженПроверитьРавенствоТабличныхДокументовСоСкрытымиКолонками"); НаборТестов.Добавить("Тест_ДолженПроверитьРавенствоТабличныхДокументовСоСкрытымиСтроками"); КонецПроцедуры //} //{ блок юнит-тестов - сами тесты &НаКлиенте Процедура Тест_ДолженПроверитьНеРавенствоТабличныхДокументов() Экспорт Макет1 = ПолучитьМакет("СозданиеОдногоПользователяИБ"); Макет2 = ПолучитьМакет("СозданиеОдногоПользователяИБ_УФ"); БылоИсключение = Ложь; Попытка УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(Макет1, Макет2, "Таблицы 1 и 2 не должны совпадать, а они одинаковы!"); Исключение Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); БылоИсключение = Истина; КонецПопытки; Утверждения.Проверить(БылоИсключение, "Должны были получить исключение из-за неравенства таблиц, а его не было"); СтрокаОшибки = "Таблицы должны совпадать, а они различны |Различия в таблицах: |Ожидали статус <ТаблицыСовпадают>, а получили <НеСовпадаютЗначенияВЯчейкеТаблицы> |Значение [К6:6]. Ожидали <Обычное приложение>, а получили <Управляемое приложение> | |Таблицы 1 и 2 не должны совпадать, а они одинаковы!"; Утверждения.ПроверитьВхождение(Ошибка, СтрокаОшибки, "Должны были получить исключение из-за неравенства таблиц, а его не было"); КонецПроцедуры &НаКлиенте Процедура Тест_ДолженПроверитьРавенствоТабличныхДокументов() Экспорт Макет1 = ПолучитьМакет("СозданиеОдногоПользователяИБ_УФ"); Макет2 = ПолучитьМакет("СозданиеОдногоПользователяИБ_УФ"); УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(Макет1, Макет2, "Таблицы 1 и 2 должны совпадать, а они различны!"); КонецПроцедуры &НаКлиенте Процедура Тест_ДолженПроверитьРавенствоТабличныхДокументовСоСкрытымиКолонками() Экспорт Макет1 = ПолучитьМакет("СозданиеОдногоПользователяИБ"); Макет2 = ПолучитьМакет("СозданиеОдногоПользователяИБ_СоСкрытойКолонкой"); УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(Макет1, Макет2, Истина, "Таблицы 1 и 2 должны совпадать, а они различны!"); Макет3 = ПолучитьМакет("СозданиеОдногоПользователяИБ"); Макет3.Область(0, 1, 1, 1).Видимость = Ложь; УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(Макет1, Макет3, "Таблицы 1 и 3 должны совпадать, а они различны!"); Макет4 = ПолучитьМакет("СозданиеОдногоПользователяИБ_УФ"); Макет4.Область(0, 6, 1, 6).Видимость = Ложь; Макет5 = ПолучитьМакет("СозданиеОдногоПользователяИБ"); Макет5.Область(0, 6, 1, 6).Видимость = Ложь; УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(Макет4, Макет5, Истина, "Таблицы 4 и 5 должны совпадать, а они различны!"); КонецПроцедуры &НаКлиенте Процедура Тест_ДолженПроверитьРавенствоТабличныхДокументовСоСкрытымиСтроками() Экспорт Макет1 = ПолучитьМакет("СозданиеОдногоПользователяИБ"); Макет2 = ПолучитьМакет("СозданиеОдногоПользователяИБ_УФ"); Макет1.Область(6,, 6).Видимость = Ложь; Макет2.Область(6,, 6).Видимость = Ложь; УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(Макет1, Макет2,, Истина, "Таблицы 1 и 2 должны совпадать, а они различны!"); //Макет3 = ПолучитьМакет("СозданиеОдногоПользователяИБ"); //Макет3.ВставитьОбласть(Макет2.Область(2,, 2), Макет3.Область(1,, 1), ТипСмещенияТабличногоДокумента.ПоВертикали); //Макет3.Область(1,, 1).Видимость = Ложь; // //УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(Макет1, Макет3,, Истина, "Таблицы 1 и 3 должны совпадать, а они различны!"); Макет4 = ПолучитьМакет("СозданиеОдногоПользователяИБ"); Макет4.Область(1,, 1).Видимость = Ложь; УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(Макет1, Макет4, "Таблицы 1 и 4 должны совпадать, а они различны!"); КонецПроцедуры &НаСервере Функция ПолучитьМакет(ИмяМакета) ОсновнойОбъект = ОсновнойОбъект(); Макет = ОсновнойОбъект.ПолучитьМакет(ИмяМакета); Макет2 = Новый ТабличныйДокумент; Макет2.Вывести(Макет); Возврат Макет2; КонецФункции &НаСервере Функция ОсновнойОбъект() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции //} \ No newline at end of file diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/ObjectModule.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/ObjectModule.bsl" similarity index 100% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/ObjectModule.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/ObjectModule.bsl" diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/maps.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/maps.txt" index 49648942..5977a928 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/maps.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/maps.txt" @@ -1,4 +1,4 @@ -Form\Форма\Форма.txt-->fde46a88-2879-4ff4-b1eb-6a5e7c2cbafa.0 (29, 154) +Form\Форма\Форма.bsl-->fde46a88-2879-4ff4-b1eb-6a5e7c2cbafa.0 (29, 154) Макеты\СозданиеОдногоПользователяИБ_СоСкрытойКолонкой.mxl-->e91aafdf-ef58-4ed3-b426-4baf984d368e.0 Макеты\СозданиеОдногоПользователяИБ_УФ.mxl-->21e58e83-24b5-4a1b-81aa-940391b10b11.0 Макеты\СозданиеОдногоПользователяИБ.mxl-->6baf118e-696d-404d-9ad0-3b66c2730177.0 diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/renames.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/renames.txt" index 168bc9c0..e19b5d50 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/renames.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\242\320\260\320\261\320\273\320\270\321\206/renames.txt" @@ -4,7 +4,7 @@ 6baf118e-696d-404d-9ad0-3b66c2730177.0-->und\6baf118e-696d-404d-9ad0-3b66c2730177.0 7fee0032-60d2-407f-8cb4-61ed1c95ba08-->und\7fee0032-60d2-407f-8cb4-61ed1c95ba08 81c30b94-2b30-4e2d-b046-69aa3fc912ab.0\info-->und\81c30b94-2b30-4e2d-b046-69aa3fc912ab.0\info -81c30b94-2b30-4e2d-b046-69aa3fc912ab.0\text-->ObjectModule.txt +81c30b94-2b30-4e2d-b046-69aa3fc912ab.0\text-->ObjectModule.bsl copyinfo-->und\copyinfo e91aafdf-ef58-4ed3-b426-4baf984d368e-->und\e91aafdf-ef58-4ed3-b426-4baf984d368e e91aafdf-ef58-4ed3-b426-4baf984d368e.0-->und\e91aafdf-ef58-4ed3-b426-4baf984d368e.0 diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\244\320\260\320\271\320\273\320\276\320\262/ObjectModule.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\244\320\260\320\271\320\273\320\276\320\262/ObjectModule.bsl" similarity index 100% rename from "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\244\320\260\320\271\320\273\320\276\320\262/ObjectModule.txt" rename to "src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\244\320\260\320\271\320\273\320\276\320\262/ObjectModule.bsl" diff --git "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\244\320\260\320\271\320\273\320\276\320\262/renames.txt" "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\244\320\260\320\271\320\273\320\276\320\262/renames.txt" index f7d9d03e..011740a3 100644 --- "a/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\244\320\260\320\271\320\273\320\276\320\262/renames.txt" +++ "b/src/Tests/Plugins/\320\242\320\265\321\201\321\202\321\213\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\240\320\260\320\262\320\265\320\275\321\201\321\202\320\262\320\276\320\244\320\260\320\271\320\273\320\276\320\262/renames.txt" @@ -1,5 +1,5 @@ 14b97335-3f44-42ce-84bd-44eecba0fb30.0\info-->und\14b97335-3f44-42ce-84bd-44eecba0fb30.0\info -14b97335-3f44-42ce-84bd-44eecba0fb30.0\text-->ObjectModule.txt +14b97335-3f44-42ce-84bd-44eecba0fb30.0\text-->ObjectModule.bsl ce88669a-4b6f-4a4b-89c6-bd7db1a4961b-->und\ce88669a-4b6f-4a4b-89c6-bd7db1a4961b copyinfo-->und\copyinfo root-->und\root diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274/form" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274/form" new file mode 100644 index 00000000..2ccd38e5 --- /dev/null +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274/form" @@ -0,0 +1,90 @@ +{27, +{16, +{ +{1,1, +{"ru","Получение формы"} +},3,4294967295}, +{09ccdc77-ea1a-4a6d-ab1c-3435eada2433, +{1, +{ +{10,1, +{3,4, +{0} +}, +{3,4, +{0} +}, +{6,3,0,1},0, +{3,3, +{-22} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,3, +{-7} +}, +{3,3, +{-21} +}, +{3,0, +{0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, +{1,0} +},21,0,0,0,0,0,0, +{3,1, +{3,0, +{0},"",-1,-1,1,0} +},0,1, +{1,1, +{3, +{1,1, +{"ru","Страница1"} +}, +{3,0, +{3,0, +{0},"",-1,-1,1,0} +},-1,1,1,"Страница1",1} +},1,1,0,4, +{2,8,1,1,1,0,0,0,0}, +{2,8,0,1,2,0,0,0,0}, +{2,258,1,1,3,0,0,8,0}, +{2,126,0,1,4,0,0,8,0},0,4294967295,5,64,0}, +{0} +}, +{0} +},266,134,1,0,1,4,4,39}, +{ +{-1},1, +{0}, +{0} +}, +{00000000-0000-0000-0000-000000000000,0}, +{1, +{70000,e1692cc2-605b-4535-84dd-28440238746c, +{3,"ПередОткрытием", +{1,"ПередОткрытием", +{1,1, +{"ru","Перед открытием"} +}, +{1,1, +{"ru","Перед открытием"} +}, +{1,1, +{"ru","Перед открытием"} +}, +{3,0, +{0},"",-1,-1,1,0}, +{0,0,0} +} +} +} +},1,4,1,0,0,0, +{0}, +{0}, +{3,0, +{3,0, +{0},"",-1,-1,1,0} +},1,2,0,0,1,1} \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274/module.bsl" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274/module.bsl" new file mode 100644 index 00000000..1567d067 --- /dev/null +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274/module.bsl" @@ -0,0 +1,12 @@ + +Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) + Отказ = Истина; +КонецПроцедуры + +Функция ПолучитьФормуЛкс(ИмяФормы, Параметры = Неопределено, Владелец = Неопределено, Уникальность = Неопределено, Окно = Неопределено) Экспорт + + Результат = ПолучитьФорму(ИмяФормы, Параметры, Владелец, Уникальность, Окно); + Возврат Результат; + +КонецФункции + diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..993935ea --- /dev/null +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,448 @@ +&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Ожидаем; +&НаКлиенте +Перем Утверждения; + +&НаКлиенте +Перем ТестируемаяФорма; + +// { интерфейс тестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); + Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт + ОписанияТестов = Новый Массив; + + НужноИсключениеЕслиНеНайденоДокументов = Ложь; + + СоздатьИменаОсновныхФорм(); + + ТолькоУправляемыеФормы = Истина; + //#Если ТонкийКлиент или ВебКлиент Тогда + #Если ТолстыйКлиентОбычноеПриложение или ТолстыйКлиентУправляемоеПриложение Тогда + ТолькоУправляемыеФормы = Ложь; + #КонецЕсли + + Если Не ИспользоватьОбычныеФормыВТолстомКлиентеВУправляемомРежимеСервер() Тогда + ТолькоУправляемыеФормы = Истина; + КонецЕсли; + + Объект.ВыводитьСообщенияВЖурналРегистрации = Истина; + + ИменаОсновныхФорм_Объекты_Сервер = ИменаОсновныхФорм_Объекты_Сервер(); + мИменаОсновныхФорм_Списки_Сервер = мИменаОсновныхФорм_Списки_Сервер(); + + ДобавитьТестыДляСправочниковСервер(ОписанияТестов, ТолькоУправляемыеФормы, ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер); + ДобавитьТестыДляДокументовСервер(ОписанияТестов, ТолькоУправляемыеФормы, ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер); + + ДобавитьТестыДляОтчетовОбработокСервер(ОписанияТестов, ТолькоУправляемыеФормы); + + ОписанияТестов.Добавить("ТестДолжен_ПроверитьБагПлатформыПриОткрытииУправляемойФормыПриОткрытииКоторойЕстьИсключение"); + + ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов); +КонецПроцедуры + +// } интерфейс тестирования + +//{ блок юнит-тестов - САМИ ТЕСТЫ + +&НаКлиенте +Процедура ПередЗапускомТеста() Экспорт + //Предупреждение("Спец.окно для для показа сообщений из тестов. Таймаут 1 секунда",1); // нужно для показа сообщений из теста, иначе не будут показаны + + ВыводитьСообщенияВЖурналРегистрации = Истина; + Объект.ВыводитьСообщенияВЖурналРегистрации = Истина; + + CоздаваемыйЭлемент = Неопределено; + + ОбновитьПовторноИспользуемыеЗначения(); + + НужноИсключениеЕслиНеНайденоДокументов = Ложь; + + СоздатьИменаОсновныхФорм(); + + //НачатьТранзакциюСервер(); +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗапускаТеста() Экспорт + //ОтменитьТранзакциюСервер(); + + ЗакрытьФорму(); + УдалитьСозданныйОбъект(); +КонецПроцедуры + +&НаСервере +Процедура УдалитьСозданныйОбъект() + Если ЗначениеЗаполнено(CоздаваемыйЭлемент) Тогда + CозданныйОбъект = CоздаваемыйЭлемент.ПолучитьОбъект(); + CозданныйОбъект.Удалить(); + КонецЕсли; + CоздаваемыйЭлемент = Неопределено; +КонецПроцедуры + +&НаКлиенте +Процедура ЗакрытьФорму() + //Если ТипЗнч(ТестируемаяФорма) <> Тип("Форма") и ТипЗнч(ТестируемаяФорма) <> Тип("УправляемаяФорма") Тогда + Если ТипЗнч(ТестируемаяФорма) <> Тип("УправляемаяФорма") Тогда + Возврат; + КонецЕсли; + ТестируемаяФорма.Модифицированность = Ложь; + Если ТестируемаяФорма.Открыта() Тогда + ТестируемаяФорма.Модифицированность = Ложь; + //Попытка + ТестируемаяФорма.Закрыть(); + //Исключение + // Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + // ЗакрытьФормуБезусловноСОтменойТранзакции(ТестируемаяФорма); + // //Если ТранзакцияАктивна() Тогда + // // ОтменитьТранзакцию(); + // //КонецЕсли; + // // //ДобавитьСтрокуРезультата(ИмяОперации, ИнформацияОбОшибке()); + // //НачатьТранзакцию(); + // //ТестируемаяФорма.УстановитьДействие("ПередЗакрытием", Неопределено); + // //ТестируемаяФорма.УстановитьДействие("ПриЗакрытии", Неопределено); + // //ТестируемаяФорма.Закрыть(); + // ВызватьИсключение Ошибка; + //КонецПопытки; + Иначе + Попытка + ТестируемаяФорма.Закрыть(); + Исключение + КонецПопытки; + КонецЕсли; + ТестируемаяФорма = ""; + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов) + Для Каждого Описание Из ОписанияТестов Цикл + Если ТипЗнч(Описание) = Тип("Строка") Тогда + НаборТестов.Добавить(Описание); + Иначе + НаборТестов.Добавить(Описание.ИмяТеста, НаборТестов.ПараметрыТеста(Описание.Параметр), Описание.ПредставлениеТеста); + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +&НаСервере +Функция ДобавитьТестыДляСправочниковСервер(ОписанияТестов, ТолькоУправляемыеФормы, ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер) + ОсновнойОбъект = Объект(); + СписокИсключений_Существующие = ОсновнойОбъект.ПолучитьСписокИсключений_Справочники_Существующие(); + СписокИсключений_Новые = ОсновнойОбъект.ПолучитьСписокИсключений_Справочники_Новые(); + СписокИсключений_Списки = ОсновнойОбъект.ПолучитьСписокИсключений_Справочники_Списки(); + + менеджерМетаданного = Метаданные.Справочники; + Для Каждого МетаОбъект Из менеджерМетаданного Цикл + + Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда + имяТеста = "ТестДолжен_ОткрытьФормуНовогоЭлементаСправочника"; + ПрефиксПредставленияТеста = "Новые"; + СписокИсключений = СписокИсключений_Новые; + ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + КонецЕсли; + + имяТеста = "ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочника"; + ПрефиксПредставленияТеста = "Существующие"; + СписокИсключений = СписокИсключений_Существующие; + ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + + имяТеста = "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы"; + ПрефиксПредставленияТеста = "Списки"; + СписокИсключений = СписокИсключений_Списки; + ИменаОсновныхФорм = мИменаОсновныхФорм_Списки_Сервер; + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + КонецЦикла; +КонецФункции + +&НаСервере +Функция ДобавитьТестыДляДокументовСервер(ОписанияТестов, ТолькоУправляемыеФормы, ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер) + ОсновнойОбъект = Объект(); + СписокИсключений_Существующие = ОсновнойОбъект.ПолучитьСписокИсключений_Документы_Существующие(); + СписокИсключений_Новые = ОсновнойОбъект.ПолучитьСписокИсключений_Документы_Новые(); + СписокИсключений_Списки = ОсновнойОбъект.ПолучитьСписокИсключений_Документы_Списки(); + + менеджерМетаданного = Метаданные.Документы; + Для Каждого МетаОбъект Из менеджерМетаданного Цикл + + Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда + имяТеста = "ТестДолжен_ОткрытьФормуНовогоДокумента"; + ПрефиксПредставленияТеста = "Новые"; + СписокИсключений = СписокИсключений_Новые; + ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; + ПроверяемоеПравоДоступа = "ИнтерактивноеДобавление"; + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + КонецЕсли; + + имяТеста = "ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокумента"; + ПрефиксПредставленияТеста = "Существующие"; + СписокИсключений = СписокИсключений_Существующие; + ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + + имяТеста = "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы"; + ПрефиксПредставленияТеста = "Списки"; + СписокИсключений = СписокИсключений_Списки; + ИменаОсновныхФорм = мИменаОсновныхФорм_Списки_Сервер; + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + КонецЦикла; +КонецФункции + +&НаСервере +Функция ДобавитьТестыДляОтчетовОбработокСервер(ОписанияТестов, ТолькоУправляемыеФормы) + ОсновнойОбъект = Объект(); + + ИменаОсновныхФорм = мИменаОсновныхФорм_Сервер(); + СписокИсключений_Отчеты = ОсновнойОбъект.ПолучитьСписокИсключений_Отчеты(); + СписокИсключений_Обработки = ОсновнойОбъект.ПолучитьСписокИсключений_Обработки(); + + имяТеста = "ТестДолжен_ОткрытьФормуПоПолномуИмениФормы"; + ПрефиксПредставленияТеста = ""; + + ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных(ОписанияТестов, ОсновнойОбъект, Метаданные.Обработки, ТолькоУправляемыеФормы, СписокИсключений_Обработки, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных(ОписанияТестов, ОсновнойОбъект, Метаданные.Отчеты, ТолькоУправляемыеФормы, СписокИсключений_Отчеты, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); +КонецФункции + +Процедура ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных(ОписанияТестов, ОсновнойОбъект, менеджерМетаданного, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста) + Для Каждого МетаОбъект Из менеджерМетаданного Цикл + Если ОсновнойОбъект.ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда + Возврат; + КонецЕсли; + Если Лев(МетаОбъект.Имя, СтрДлина("xddTestRunner")) = "xddTestRunner" Тогда + Продолжить; + КонецЕсли; + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + КонецЦикла; +КонецПроцедуры + +Процедура ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, + ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста) + + Если ОсновнойОбъект.ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда + Возврат; + КонецЕсли; + + CписокИменМетаФорм = Новый СписокЗначений; + ДобавитьИменаМетаФормДляОдногоОбъектаМетаданного(CписокИменМетаФорм, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм); + ДобавитьТестПоПереданнымМетаФормамСсылочногоОбъектаСервер(ОписанияТестов, CписокИменМетаФорм, имяТеста, ПрефиксПредставленияТеста); +КонецПроцедуры + +Процедура ДобавитьТестМетаФормыСервер(ОписанияТестов, CписокИменМетаФорм, имяТеста) + Для каждого Элемент Из CписокИменМетаФорм Цикл + МетаФорма_ПолноеИмя = Элемент.Значение; + ПредставлениеТеста = МетаФорма_ПолноеИмя; + лПараметры = Новый Структура("ПредставлениеТеста,ИмяТеста,Транзакция,Параметр", ПредставлениеТеста, имяТеста, Истина, МетаФорма_ПолноеИмя); + ОписанияТестов.Добавить(лПараметры); + КонецЦикла; +КонецПроцедуры + +Процедура ДобавитьТестПоПереданнымМетаФормамСсылочногоОбъектаСервер(ОписанияТестов, CписокИменМетаФорм, имяТеста, ПрефиксПредставленияТеста) + Для каждого Элемент Из CписокИменМетаФорм Цикл + МетаФорма_ПолноеИмя = Элемент.Значение; + ПредставлениеТеста = МетаФорма_ПолноеИмя; + Если НЕ ПустаяСтрока(ПрефиксПредставленияТеста) Тогда + ПредставлениеТеста = ПрефиксПредставленияТеста + " : " + МетаФорма_ПолноеИмя; + КонецЕсли; + + //Структура = Новый Структура("МетаФорма_ПолноеИмя", МетаФорма_ПолноеИмя); + ////Структура = Новый Структура("МетаИмя,МетаФорма_ПолноеИмя", МетаОбъект.Имя, МетаФорма_ПолноеИмя); + //лПараметры = Новый Структура("ПредставлениеТеста,ИмяТеста,Транзакция,Параметр", ПредставлениеТеста, имяТеста, Истина, Структура); + лПараметры = Новый Структура("ПредставлениеТеста,ИмяТеста,Транзакция,Параметр", ПредставлениеТеста, имяТеста, Истина, МетаФорма_ПолноеИмя); + ОписанияТестов.Добавить(лПараметры); + КонецЦикла; +КонецПроцедуры + +Функция ИспользоватьОбычныеФормыВТолстомКлиентеВУправляемомРежимеСервер() + Возврат Метаданные.ИспользоватьОбычныеФормыВУправляемомПриложении; +КонецФункции + +&НаКлиенте +Процедура ТестироватьФорму(ПолноеИмяФормы, ПараметрыФормы) Экспорт +//Процедура ТестироватьФорму(ПолноеИмяФормы, ПараметрыФормы, Модально = Ложь) Экспорт + Если Объект.ВыводитьСообщенияВЖурналРегистрации Тогда + ВыполнитьЗаписьВЖурналРегистрации(ПолноеИмяФормы); + КонецЕсли; + + КлючВременнойФормы = "908насмь9ыв3245"; + //Если Модально Тогда + // ТестируемаяФорма = ОткрытьФормуМодально(ПолноеИмяФормы, ПараметрыФормы); + //Иначе + //ошибка =""; + //Попытка + + // К сожалению здесь исключения не ловятся https://github.com/xDrivenDevelopment/xUnitFor1C/issues/154 + ТестируемаяФорма = ОткрытьФорму(ПолноеИмяФормы, ПараметрыФормы,, КлючВременнойФормы); + + //Исключение + // ошибка = ОписаниеОшибки(); + // Предупреждение(" поймали исключение 20" + ошибка); + //КонецПопытки; + //КонецЕсли; + Если ТестируемаяФорма = Неопределено Тогда + Возврат; + КонецЕсли; + + //ТестируемаяФорма.Открыть(); // К сожалению здесь исключения не ловятся http://partners.v8.1c.ru/forum/thread.jsp?id=1080350#1080350 + Утверждения.Проверить(ТестируемаяФорма.Открыта(), "ТестируемаяФорма """+ПолноеИмяФормы+""" не открылась, а должна была открыться"); + + Если ТипЗнч(ТестируемаяФорма) = Тип("УправляемаяФорма") Тогда + ТестируемаяФорма.ОбновитьОтображениеДанных(); + Иначе + //Если ЭтоОбычнаяФорма(ТестируемаяФорма) Тогда + ТестируемаяФорма.Обновить(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, СсылочныйОбъект) + ПараметрыФормы = Новый Структура("Ключ", СсылочныйОбъект); + ТестироватьФорму(Мета_ПолноеИмя, ПараметрыФормы); +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьЗаписьВЖурналРегистрации(ПолноеИмяФормы) + ЗаписьЖурналаРегистрации(Объект().Метаданные().Синоним, УровеньЖурналаРегистрации.Информация, , , "Операция: " + ПолноеИмяФормы); +КонецПроцедуры + +Процедура СоздатьИменаОсновныхФорм() + ОсновнойОбъект = Объект(); + ОсновнойОбъект.СоздатьИменаОсновныхФорм(); + ЗначениеВРеквизитФормы(ОсновнойОбъект, "Объект"); +КонецПроцедуры + +&НаСервере +Функция ИменаОсновныхФорм_Объекты_Сервер() + Возврат Объект().мИменаОсновныхФорм_Объекты; +КонецФункции + +&НаСервере +Функция мИменаОсновныхФорм_Списки_Сервер() + Возврат Объект().мИменаОсновныхФорм_Списки; +КонецФункции + +&НаСервере +Функция мИменаОсновныхФорм_Сервер() + Возврат Объект().мИменаОсновныхФорм; +КонецФункции + +&НаСервереБезКонтекста +Процедура ДобавитьИменаМетаФормДляОдногоОбъектаМетаданного(CписокИменМетаФорм, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, списокИсключений, ИменаОсновныхФорм) + Если списокИсключений.НайтиПоЗначению(МетаОбъект.Имя) <> Неопределено Тогда + Возврат; + КонецЕсли; + Если ПравоДоступа("Просмотр", МетаОбъект) Тогда + МетаФормы = ОсновнойОбъект.ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм); + + Для каждого МетаФорма Из МетаФормы Цикл + МетаФорма_ПолноеИмя = МетаФорма.ПолноеИмя(); + //Сообщить("МетаФорма_ПолноеИмя <"+МетаФорма_ПолноеИмя+"> "); + + Если ТолькоУправляемыеФормы Тогда + //Сообщить("МетаФорма.ТипФормы <"+МетаФорма.ТипФормы+"> "); + Если Не ЭтоУправляемаяФорма(МетаФорма) Тогда + Продолжить; + КонецЕсли; + КонецЕсли; + + CписокИменМетаФорм.Добавить(МетаФорма_ПолноеИмя); + //ПредставлениеТеста = МетаФорма_ПолноеИмя; + //лПараметры = Новый Структура("ПредставлениеТеста,ИмяТеста,Транзакция,Параметр", ПредставлениеТеста, имяТеста, Истина, МетаФорма_ПолноеИмя); + //ОписанияТестов.Добавить(лПараметры); + КонецЦикла; + КонецЕсли; +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ЭтоУправляемаяФорма(МетаФорма) + Возврат МетаФорма <> Неопределено И МетаФорма.ТипФормы = Метаданные.СвойстваОбъектов.ТипФормы.Управляемая; +КонецФункции + +Функция Объект() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции + +Функция ПолучитьВидМетаданного(Мета_ПолноеИмя) + ИД = Лев(Мета_ПолноеИмя, Найти(Мета_ПолноеИмя, ".Форма.")-1); + ИД = Сред(ИД, Найти(ИД, ".") + 1); + Возврат ИД; +КонецФункции + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуПоПолномуИмениФормы(ПолноеИмяФормы) Экспорт + ТестироватьФорму(ПолноеИмяФормы, Неопределено); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочника(Мета_ПолноеИмя) Экспорт + ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочникаСервер(Мета_ПолноеИмя); + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, CоздаваемыйЭлемент); +КонецПроцедуры + +&НаСервере +Процедура ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочникаСервер(Мета_ПолноеИмя) + ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); + + ОсновнойОбъект = Объект(); + CоздаваемыйЭлемент = ОсновнойОбъект.СоздатьЭлементИВернутьСсылку(ИД, "существующий"); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуНовогоЭлементаСправочника(Мета_ПолноеИмя) Экспорт + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Неопределено); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуНовогоДокумента(Мета_ПолноеИмя) Экспорт + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Неопределено); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокумента(Мета_ПолноеИмя) Экспорт + Док = ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокументаСервер(Мета_ПолноеИмя); + Если Док <> Неопределено Тогда + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Док); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Функция ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокументаСервер(Мета_ПолноеИмя) + ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); + + ОсновнойОбъект = Объект(); + Док = ОсновнойОбъект.ПолучитьСуществующийДокументОбъектИВернутьСсылку(ИД, НужноИсключениеЕслиНеНайденоДокументов, "ТестДолжен_ОткрытьФормуСуществующегоДокумента"); + Возврат Док; +КонецФункции + +// проверка бага https://github.com/xDrivenDevelopment/xUnitFor1C/issues/154 +&НаКлиенте +Процедура ТестДолжен_ПроверитьБагПлатформыПриОткрытииУправляемойФормыПриОткрытииКоторойЕстьИсключение() Экспорт + Мета_ПолноеИмя = "Обработка.ТестОбработка_Форма_ИсключениеПриОткрытии.Форма.УправляемаяФорма"; + ошибка =""; + Попытка + ОткрытьФорму(Мета_ПолноеИмя); + Исключение + ошибка = ОписаниеОшибки(); + //Предупреждение("поймали исключение 20"+ ошибка); + КонецПопытки; + Утверждения.ПроверитьЗаполненность(ошибка, "Ошибка"); +КонецПроцедуры + +//} diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.bsl" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.bsl" new file mode 100644 index 00000000..7c7b557a --- /dev/null +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/ObjectModule.bsl" @@ -0,0 +1,587 @@ +Перем КонтекстЯдра; +Перем Ожидаем; +Перем Утверждения; + +Перем ТестируемаяФорма; +Перем НужноИсключениеЕслиНеНайденоДокументов; + +//{ интерфейс тестирования + +// директива препроцессора нужна для исключения ошибки загрузки в толстом клиенте управляемого приложения +#Если ТолстыйКлиентОбычноеПриложение Тогда + +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; + Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD"); + Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения"); +КонецПроцедуры + +Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт + + НужноИсключениеЕслиНеНайденоДокументов = Ложь; + + Если НЕ СоздатьФорму_ПолучениеФорм() Тогда + Возврат; + КонецЕсли; + + СоздатьИменаОсновныхФорм(); + + ВыводитьСообщенияВЖурналРегистрации = Истина; + + Для Каждого МетаОбъект Из Метаданные.Справочники Цикл + Если ПравоДоступа("Редактирование", МетаОбъект) Тогда + ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, "Тест_ОткрытьФормуСуществующегоЭлементаСправочника", ПолучитьСписокИсключений_Справочники_Существующие(), + мИменаОсновныхФорм_Объекты, "Существующие элементы"); + КонецЕсли; + + Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда + ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, "Тест_ОткрытьФормуНовогоЭлементаСправочника", ПолучитьСписокИсключений_Справочники_Новые(), + мИменаОсновныхФорм_Объекты, "Новые элементы"); + КонецЕсли; + + Если ПравоДоступа("Добавление", МетаОбъект) Тогда + ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, "Тест_ОткрытьФормуНовогоЭлементаСправочникаСоздаваемогоКопированием", ПолучитьСписокИсключений_Справочники_Новые(), + мИменаОсновныхФорм_Объекты, "Новые через копирование элементы"); + КонецЕсли; + + ДобавитьТестДляМетаданного_ОдинОбъект(НаборТестов, МетаОбъект, "ТестДолжен_ОткрытьФорму_ПоМетаФорме", ПолучитьСписокИсключений_Справочники_Списки(), мИменаОсновныхФорм_Списки); + КонецЦикла; + + Для Каждого МетаОбъект Из Метаданные.Документы Цикл + Если ПравоДоступа("Редактирование", МетаОбъект) Тогда + ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, "Тест_ОткрытьФормуСуществующегоДокумента", ПолучитьСписокИсключений_Документы_Существующие(), + мИменаОсновныхФорм_Объекты, "Существующие документы"); + + ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, "Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму", ПолучитьСписокИсключений_Документы_ПеренестиДату(), + мИменаОсновныхФорм_Объекты, "Перенос документа на текущий день"); + КонецЕсли; + + Если ПравоДоступа("ИнтерактивноеДобавление", МетаОбъект) Тогда + ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, "Тест_ОткрытьФормуНовогоДокумента", ПолучитьСписокИсключений_Документы_Новые(), + мИменаОсновныхФорм_Объекты, "Новые документы"); + КонецЕсли; + + ДобавитьТестДляМетаданного_ОдинОбъект(НаборТестов, МетаОбъект, "ТестДолжен_ОткрытьФорму_ПоМетаФорме", ПолучитьСписокИсключений_Документы_Списки(), мИменаОсновныхФорм_Списки); + КонецЦикла; + + ДобавитьТестПоМенеджеруМетаданных(НаборТестов, Метаданные.Отчеты, "ТестДолжен_ОткрытьФорму_ПоМетаФорме", ПолучитьСписокИсключений_Отчеты(), мИменаОсновныхФорм); + ДобавитьТестПоМенеджеруМетаданных(НаборТестов, Метаданные.Обработки, "ТестДолжен_ОткрытьФорму_ПоМетаФорме", ПолучитьСписокИсключений_Обработки(), мИменаОсновныхФорм); + +КонецПроцедуры + +#КонецЕсли + +//} + +Процедура ПередЗапускомТеста() Экспорт + ВыводитьСообщенияВЖурналРегистрации = Истина; + + НужноИсключениеЕслиНеНайденоДокументов = Ложь; + + СоздатьФорму_ПолучениеФорм(); + + НачатьТранзакцию(); +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ЗакрытьФорму(); + + Если ТранзакцияАктивна() Тогда + ОтменитьТранзакцию(); + КонецЕсли; + +КонецПроцедуры + +Процедура ЗакрытьФорму() + Если ТипЗнч(ТестируемаяФорма) <> Тип("Форма") и ТипЗнч(ТестируемаяФорма) <> Тип("УправляемаяФорма") Тогда + Возврат; + КонецЕсли; + ТестируемаяФорма.Модифицированность = Ложь; + Если ТестируемаяФорма.Открыта() Тогда + ТестируемаяФорма.Модифицированность = Ложь; + Попытка + ТестируемаяФорма.Закрыть(); + Исключение + Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + Если ТранзакцияАктивна() Тогда + ОтменитьТранзакцию(); + КонецЕсли; + + НачатьТранзакцию(); + ТестируемаяФорма.УстановитьДействие("ПередЗакрытием", Неопределено); + ТестируемаяФорма.УстановитьДействие("ПриЗакрытии", Неопределено); + ТестируемаяФорма.Закрыть(); + ВызватьИсключение Ошибка; + КонецПопытки; + Иначе + Попытка + ТестируемаяФорма.Закрыть(); + Исключение + КонецПопытки; + КонецЕсли; + ТестируемаяФорма = ""; + +КонецПроцедуры + +//{ блок работы с обычными и управляемыми формами - портирован из "Инструменты разработчика" +Процедура ТестДолжен_ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, ЕстьТранзакция) Экспорт + //Если ЕстьТранзакция Тогда + // НачатьТранзакцию(); + //КонецЕсли; + + ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя); + + //Если ЕстьТранзакция Тогда + // Если ТранзакцияАктивна() Тогда + // ОтменитьТранзакцию(); + // КонецЕсли; + //КонецЕсли; +КонецПроцедуры + +Процедура ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма_Имя = "", СсылкаОбъектаИлиСамОбъект = Неопределено, СоздаватьОбъект = Ложь) Экспорт + + ВыводитьСообщения = Ложь; + ВнешнийОбъект = Неопределено; + КлючВременнойФормы = "908насмь9ыв"; + + ИмяОперации = МетаФорма_ПолноеИмя; + Если ВыводитьСообщения Тогда + Сообщить(ИмяОперации); + КонецЕсли; + Если ВыводитьСообщенияВЖурналРегистрации Тогда + ЗаписьЖурналаРегистрации(Метаданные().Синоним, УровеньЖурналаРегистрации.Информация, , , "Операция: " + ИмяОперации); + КонецЕсли; + + Форма = ПолучитьНовуюФорму(МетаФорма_ПолноеИмя, ВнешнийОбъект, КлючВременнойФормы); + Если Форма = Неопределено Тогда + Возврат; + КонецЕсли; + ЭтоФормаСсылочногоОбъекта = Ложь; + Если СсылкаОбъектаИлиСамОбъект <> Неопределено Тогда + ЭтоФормаСсылочногоОбъекта = Истина; + Иначе + Если ЭтоОбычнаяФорма(Форма) Тогда + Попытка + Пустышка = Форма.ЭтотОбъект.ЭтоНовый(); + ЭтоФормаСсылочногоОбъекта = Истина; + Исключение + КонецПопытки; + Иначе + Если Форма.Параметры.Свойство("Ключ") Тогда + Попытка + Пустышка = Форма.Параметры.Ключ.Ссылка; + ЭтоФормаСсылочногоОбъекта = Истина; + Исключение + КонецПопытки; + КонецЕсли; + КонецЕсли; + Если ЭтоФормаСсылочногоОбъекта Тогда + Если ЭтоОбычнаяФорма(Форма) Тогда + СсылкаОбъектаИлиСамОбъект = Форма.Ссылка; + Иначе + СсылкаОбъектаИлиСамОбъект = Форма.Параметры.Ключ; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если ЭтоФормаСсылочногоОбъекта Тогда + Если ЭтоОбычнаяФорма(Форма) Тогда + Если СоздаватьОбъект Тогда + Если СсылкаОбъектаИлиСамОбъект <> Неопределено Тогда + СсылочныйОбъект = СсылкаОбъектаИлиСамОбъект.Скопировать(); + //Иначе + // СсылочныйОбъект = СсылкаОбъектаИлиСамОбъект.Метаданные; + КонецЕсли; + Иначе + СсылочныйОбъект = СсылкаОбъектаИлиСамОбъект; + КонецЕсли; + Форма = СсылочныйОбъект.ПолучитьФорму(МетаФорма_Имя, , КлючВременнойФормы); + Иначе + ПараметрыФормы = Новый Структура; + ЭтоОбъект = Ложь; + Попытка + Пустышка = СсылкаОбъектаИлиСамОбъект.ЭтотОбъект; + ЭтоОбъект = Истина; + Исключение + КонецПопытки; + Если СоздаватьОбъект Тогда + Если Не ЭтоОбъект Тогда + ПараметрыФормы.Вставить("ЗначениеКопирования", СсылкаОбъектаИлиСамОбъект); + КонецЕсли; + ИначеЕсли Не ЭтоОбъект Тогда + ПараметрыФормы.Вставить("Ключ", СсылкаОбъектаИлиСамОбъект); + КонецЕсли; + Форма = ПолучитьФормуЛкс(МетаФорма_ПолноеИмя, ПараметрыФормы, , КлючВременнойФормы); + КонецЕсли; + КонецЕсли; + ТестироватьФорму(Форма, ИмяОперации); +КонецПроцедуры + +Процедура СоздатьИменаОсновныхФорм() Экспорт + Если Не ЗначениеЗаполнено(мИменаОсновныхФорм) Тогда + мИменаОсновныхФорм = Новый Массив(); + КонецЕсли; + СоздатьИменаОсновныхФорм_Объекты(); + СоздатьИменаОсновныхФормСписка(); + Для каждого эл Из мИменаОсновныхФорм_Объекты Цикл + мИменаОсновныхФорм.Добавить(эл); + КонецЦикла; + Для каждого эл Из мИменаОсновныхФорм_Списки Цикл + мИменаОсновныхФорм.Добавить(эл); + КонецЦикла; +КонецПроцедуры + +Процедура СоздатьИменаОсновныхФорм_Объекты() + Если Не ЗначениеЗаполнено(мИменаОсновныхФорм_Объекты) Тогда + мИменаОсновныхФорм_Объекты = Новый Массив(); + КонецЕсли; + мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФорма"); + мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФормаОбъекта"); + мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФормаГруппы"); + мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФормаЗаписи"); + мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФормаНастроек"); + мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФормаСохранения"); + мИменаОсновныхФорм_Объекты.Добавить("ОсновнаяФормаЗагрузки"); + + мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФорма"); + мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФормаОбъекта"); + мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФормаГруппы"); + мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФормаЗаписи"); + мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФормаНастроек"); + мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФормаСохранения"); + мИменаОсновныхФорм_Объекты.Добавить("ДополнительнаяФормаЗагрузки"); +КонецПроцедуры + +Процедура СоздатьИменаОсновныхФормСписка() + Если Не ЗначениеЗаполнено(мИменаОсновныхФорм_Списки) Тогда + мИменаОсновныхФорм_Списки = Новый Массив(); + КонецЕсли; + мИменаОсновныхФорм_Списки.Добавить("ОсновнаяФормаСписка"); + мИменаОсновныхФорм_Списки.Добавить("ОсновнаяФормаДляВыбора"); + мИменаОсновныхФорм_Списки.Добавить("ОсновнаяФормаДляВыбораГруппы"); + мИменаОсновныхФорм_Списки.Добавить("ОсновнаяФормаКонстант"); + + мИменаОсновныхФорм_Списки.Добавить("ДополнительнаяФормаСписка"); + мИменаОсновныхФорм_Списки.Добавить("ДополнительнаяФормаДляВыбора"); + мИменаОсновныхФорм_Списки.Добавить("ДополнительнаяФормаДляВыбораГруппы"); + мИменаОсновныхФорм_Списки.Добавить("ДополнительнаяФормаКонстант"); +КонецПроцедуры + +Функция СоздатьФорму_ПолучениеФорм() + Попытка + мПолучениеФорм = ПолучитьФорму("ПолучениеФорм"); // в управляемом режиме здесь будет ошибка выполнения + Возврат Истина; + Исключение + КонецПопытки; + Возврат Ложь; +КонецФункции + +Функция ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм) Экспорт + + ИспользоватьУФ = Метаданные.ИспользоватьУправляемыеФормыВОбычномПриложении; + МетаФормы = Новый Массив(); + Для Каждого ИмяОсновнойФормы Из ИменаОсновныхФорм Цикл + Попытка + МетаФорма = МетаОбъект[ИмяОсновнойФормы]; + Исключение + Продолжить; + КонецПопытки; + Если МетаФорма = Неопределено Тогда + Продолжить; + КонецЕсли; + Если МетаФормы.Найти(МетаФорма) <> Неопределено Тогда + Продолжить; + КонецЕсли; + Если НЕ ИспользоватьУФ И МетаФорма.ТипФормы = Метаданные.СвойстваОбъектов.ТипФормы.Управляемая Тогда + Продолжить; + КонецЕсли; + МетаФормы.Добавить(МетаФорма); + КонецЦикла; + Возврат МетаФормы; + +КонецФункции + +Функция ПолучитьФормуЛкс(ИмяФормы, Параметры = Неопределено, Владелец = Неопределено, Уникальность = Неопределено, Окно = Неопределено) Экспорт + + Возврат мПолучениеФорм.ПолучитьФормуЛкс(ИмяФормы, Параметры, Владелец, Уникальность, Окно); + +КонецФункции + +Функция ПолучитьНовуюФорму(МетаФорма, ВнешнийОбъект = Неопределено, КлючВременнойФормы = Неопределено) + + Форма = ПолучитьФормуЛкс(МетаФорма, , , КлючВременнойФормы); //ирНеглобальный. + Возврат Форма; + +КонецФункции + +Процедура ТестироватьФорму(Форма, ИмяОперации = "") Экспорт + ТестируемаяФорма = Форма; + Форма.Открыть(); // К сожалению здесь исключения не ловятся http://partners.v8.1c.ru/forum/thread.jsp?id=1080350#1080350 + Утверждения.Проверить(ТестируемаяФорма.Открыта(), "ТестируемаяФорма """+ИмяОперации+""" не открылась, а должна была открыться"); + + // Артур - мой код для доп.проверки формы + Если ЭтоОбычнаяФорма(ТестируемаяФорма) Тогда + ТестируемаяФорма.Обновить(); + Иначе + ТестируемаяФорма.ОбновитьОтображениеДанных(); + КонецЕсли; + +КонецПроцедуры + +//} конец блока работы с управляемыми формами - из "Инструменты разработчика" + +Функция ЭтоОбычнаяФорма(Форма) + Возврат ТипЗнч(Форма) = Тип("Форма"); +КонецФункции + +Процедура ДобавитьТестПоМенеджеруМетаданных(НаборТестов, менеджерМетаданного, имяТеста, списокИсключений, ИменаОсновныхФорм) + Для Каждого МетаОбъект Из менеджерМетаданного Цикл + ДобавитьТестДляМетаданного_ОдинОбъект(НаборТестов, МетаОбъект, имяТеста, списокИсключений, ИменаОсновныхФорм); + КонецЦикла; +КонецПроцедуры + +Процедура ДобавитьТестДляМетаданного_ОдинОбъект(НаборТестов, МетаОбъект, имяТеста, списокИсключений, ИменаОсновныхФорм) + Если списокИсключений.НайтиПоЗначению(МетаОбъект.Имя) <> Неопределено Тогда + Возврат; + КонецЕсли; + Если ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда + Возврат; + КонецЕсли; + Если ПравоДоступа("Просмотр", МетаОбъект) Тогда + МетаФормы = ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм); + + Для каждого МетаФорма Из МетаФормы Цикл + МетаФорма_ПолноеИмя = МетаФорма.ПолноеИмя(); + + Если Метаданные.ОсновнаяФормаОтчета = МетаФорма Тогда + МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".Форма"; + КонецЕсли; + + ПредставлениеТеста = МетаФорма_ПолноеИмя; + //лПараметры = Новый Структура("ПредставлениеТеста,ИмяТеста,Транзакция,Параметр", ПредставлениеТеста, имяТеста, Истина, МетаФорма_ПолноеИмя); + //НаборТестов.Добавить(лПараметры); + ЕстьТранзакция = Истина; + НаборТестов.Добавить(имяТеста, НаборТестов.ПараметрыТеста(МетаФорма_ПолноеИмя, ЕстьТранзакция), ПредставлениеТеста); + КонецЦикла; + КонецЕсли; +КонецПроцедуры + +Процедура ДобавитьТестДляОдногоМетаданного_Объекты(НаборТестов, МетаОбъект, имяТеста, списокИсключений, ИменаОсновныхФорм, ПрефиксПредставленияТеста) + Если списокИсключений.НайтиПоЗначению(МетаОбъект.Имя) <> Неопределено Тогда + Возврат; + КонецЕсли; + Если ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда + Возврат; + КонецЕсли; + Если ПравоДоступа("Просмотр", МетаОбъект) и ПравоДоступа("Добавление", МетаОбъект) + Тогда + МетаФормы = ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм); + Для каждого МетаФорма Из МетаФормы Цикл + МетаФорма_ПолноеИмя = МетаФорма.ПолноеИмя(); + ПредставлениеТеста = ПрефиксПредставленияТеста + " : " + МетаФорма_ПолноеИмя; + //Структура = Новый Структура("МетаИмя,МетаФорма_ПолноеИмя,МетаФорма", МетаОбъект.Имя, МетаФорма_ПолноеИмя, МетаФорма); + //лПараметры = Новый Структура("ПредставлениеТеста,ИмяТеста,Транзакция,Параметр", ПредставлениеТеста, имяТеста, Истина, Структура); + //НаборТестов.Добавить(лПараметры); + ЕстьТранзакция = Истина; + НаборТестов.Добавить(имяТеста, НаборТестов.ПараметрыТеста(МетаОбъект.Имя, МетаФорма_ПолноеИмя, МетаФорма, ЕстьТранзакция), ПредставлениеТеста); + КонецЦикла; + КонецЕсли; +КонецПроцедуры + +Функция ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Экспорт + Возврат Найти(НРег(МетаОбъект.Имя), НРег("Удалить")) = 1; +КонецФункции + +Процедура Тест_ОткрытьФормуСуществующегоДокумента(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт + ИД = МетаИмя; + Док = ПолучитьСуществующийДокументОбъект(ИД, НужноИсключениеЕслиНеНайденоДокументов, "Тест_ОткрытьФормуСуществующегоДокумента"); + + Если Док <> Неопределено Тогда + ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Док.Ссылка); + КонецЕсли; +КонецПроцедуры + +Процедура Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт + ИД = МетаИмя; + Док = ПолучитьСуществующийДокументОбъект(ИД, Ложь, "Тест_ПеренестиДокументНаТекущийДень_и_ОткрытьЕгоФорму"); + Если Док = Неопределено Тогда + Возврат; + КонецЕсли; + + Док.Дата = ТекущаяДата(); + Док.ОбменДанными.Загрузка = Истина; + Док.Записать(); + + ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Док.Ссылка); +КонецПроцедуры + +Процедура Тест_ОткрытьФормуНовогоДокумента(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт + ИД = МетаИмя; + Док = Документы[ИД].СоздатьДокумент(); + Мета = Док.Метаданные(); + Если НЕ ПравоДоступа("ИнтерактивноеДобавление", Мета) Тогда + Возврат; + КонецЕсли; + Если Мета.ДлинаНомера <> 0 Тогда + Попытка + Док.УстановитьНовыйНомер(); + Исключение + КонецПопытки; + КонецЕсли; + + ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Док, Ложь); +КонецПроцедуры + +Функция ПолучитьСуществующийДокументОбъект(ИД, НужноИсключениеЕслиНеНайденоДокументов, ДопОписаниеДляИсключения) + выборка = Документы[ИД].Выбрать(,,, "Дата Убыв"); + уcпешно = выборка.Следующий(); + Если Не уcпешно Тогда + Если НужноИсключениеЕслиНеНайденоДокументов Тогда + ВызватьИсключение ДопОписаниеДляИсключения + ": выборка.Следующий() - не найдено существующих документов! "; + Иначе + Возврат Неопределено; + КонецЕсли; + КонецЕсли; + Док = выборка.ПолучитьОбъект(); + Возврат Док; +КонецФункции + +Функция ПолучитьСуществующийДокументОбъектИВернутьСсылку(ИД, НужноИсключениеЕслиНеНайденоДокументов, ДопОписаниеДляИсключения) Экспорт + Док = ПолучитьСуществующийДокументОбъект(ИД, НужноИсключениеЕслиНеНайденоДокументов, ДопОписаниеДляИсключения); + Возврат ?(Док = Неопределено, Неопределено, Док.Ссылка); +КонецФункции + +Процедура Тест_ОткрытьФормуСуществующегоЭлементаСправочника(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт + ИД = МетаИмя; + Элем = СоздатьЭлемент(ИД, "существующий"); + ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Элем.Ссылка); +КонецПроцедуры + +Процедура Тест_ОткрытьФормуНовогоЭлементаСправочника(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт + ИД = МетаИмя; + Элем = Справочники[ИД].СоздатьЭлемент(); + Мета = Элем.Метаданные(); + Если НЕ ПравоДоступа("ИнтерактивноеДобавление", Мета) Тогда + Возврат; + КонецЕсли; + Если Мета.ДлинаНаименования <> 0 Тогда + Попытка + Элем.Наименование = "новый"; + Исключение + КонецПопытки; + КонецЕсли; + + ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Элем, Ложь); +КонецПроцедуры + +Процедура Тест_ОткрытьФормуНовогоЭлементаСправочникаСоздаваемогоКопированием(МетаИмя,МетаФорма_ПолноеИмя,МетаФорма, ЕстьТранзакция) Экспорт + ИД = МетаИмя; + Элем = СоздатьЭлемент(ИД, "копирование", "ИнтерактивноеДобавление"); + Если Элем = Неопределено Тогда + Возврат; + КонецЕсли; + + ОткрытьФорму_ПоМетаФорме(МетаФорма_ПолноеИмя, МетаФорма.Имя, Элем.Ссылка, Истина); +КонецПроцедуры + +Функция СоздатьЭлемент(ИД, Наименование, ПроверяемоеПравоДоступа = Неопределено) + Элем = Справочники[ИД].СоздатьЭлемент(); + Мета = Элем.Метаданные(); + Если ПроверяемоеПравоДоступа <> Неопределено И НЕ ПравоДоступа(ПроверяемоеПравоДоступа, Мета) Тогда + Возврат Неопределено; + КонецЕсли; + + Если Мета.ДлинаНаименования <> 0 Тогда + Попытка + Элем.Наименование = Наименование; + Исключение + КонецПопытки; + КонецЕсли; + + Если Мета.ДлинаКода <> 0 Тогда + Элем.УстановитьНовыйКод(); + КонецЕсли; + Элем.ОбменДанными.Загрузка = Истина; + Элем.Записать(); + Возврат Элем; +КонецФункции + +Функция СоздатьЭлементИВернутьСсылку(ИД, Наименование, ПроверяемоеПравоДоступа = Неопределено) Экспорт + Элем = СоздатьЭлемент(ИД, Наименование, ПроверяемоеПравоДоступа); + Возврат ?(Элем = Неопределено, Неопределено, Элем.Ссылка); +КонецФункции + +Функция ПолучитьСписокИсключений_Справочники_Списки() Экспорт + Результат = Новый СписокЗначений; + + Результат.Добавить("ирАлгоритмы"); + + Возврат Результат; +КонецФункции + +//{ блок переопределения исключений, чтобы не открывать формы +Функция ПолучитьСписокИсключений_Справочники_Существующие() Экспорт + Результат = Новый СписокЗначений; + + Результат.Добавить("ирАлгоритмы"); + + Возврат Результат; +КонецФункции + +Функция ПолучитьСписокИсключений_Справочники_Новые() Экспорт + Результат = Новый СписокЗначений; + + Результат.Добавить("ирАлгоритмы"); + + Возврат Результат; +КонецФункции + +Функция ПолучитьСписокИсключений_Документы_Списки() Экспорт + Результат = Новый СписокЗначений; + + //Результат.Добавить("Штрафы"); + + Возврат Результат; +КонецФункции + +Функция ПолучитьСписокИсключений_Документы_Существующие() Экспорт + Результат = Новый СписокЗначений; + + //Результат.Добавить("Штрафы"); + + Возврат Результат; +КонецФункции + +Функция ПолучитьСписокИсключений_Документы_ПеренестиДату() Экспорт + Результат = Новый СписокЗначений; + + //Результат.Добавить("Штрафы"); + + Возврат Результат; +КонецФункции + +Функция ПолучитьСписокИсключений_Документы_Новые() Экспорт + Результат = Новый СписокЗначений; + + Результат.Добавить("Штрафы"); + + Возврат Результат; +КонецФункции + +Функция ПолучитьСписокИсключений_Отчеты() Экспорт + Результат = Новый СписокЗначений; + + //Результат.Добавить("Цены"); + + Возврат Результат; +КонецФункции + +Функция ПолучитьСписокИсключений_Обработки() Экспорт + Результат = Новый СписокЗначений; + + Результат.Добавить("ТестОбработка_Форма_ИсключениеПриОткрытии"); + + Возврат Результат; +КонецФункции +//} конец блока \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/maps.txt" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/maps.txt" new file mode 100644 index 00000000..4beb40fd --- /dev/null +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/maps.txt" @@ -0,0 +1,2 @@ +Form\УправляемаяФорма\Форма.bsl-->45cb56ba-09f2-4931-88c4-1e63a1a8f37c.0 (29, 477) +Макеты\СозданиеОдногоПользователяИБ.mxl-->724d5548-5d6b-4e19-98cf-0ea3ae12c0a7.0 diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/renames.txt" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/renames.txt" new file mode 100644 index 00000000..7adcba61 --- /dev/null +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/renames.txt" @@ -0,0 +1,13 @@ +45cb56ba-09f2-4931-88c4-1e63a1a8f37c-->und\45cb56ba-09f2-4931-88c4-1e63a1a8f37c +45cb56ba-09f2-4931-88c4-1e63a1a8f37c.0-->und\45cb56ba-09f2-4931-88c4-1e63a1a8f37c.0 +724d5548-5d6b-4e19-98cf-0ea3ae12c0a7-->und\724d5548-5d6b-4e19-98cf-0ea3ae12c0a7 +724d5548-5d6b-4e19-98cf-0ea3ae12c0a7.0-->und\724d5548-5d6b-4e19-98cf-0ea3ae12c0a7.0 +be1492ab-bedd-4e13-8827-ed025cda688a-->und\be1492ab-bedd-4e13-8827-ed025cda688a +be1492ab-bedd-4e13-8827-ed025cda688a.0-->Form\ПолучениеФорм +copyinfo-->und\copyinfo +df099fc3-03ed-44c9-a8dd-e95a1e8978ff.0\info-->und\df099fc3-03ed-44c9-a8dd-e95a1e8978ff.0\info +df099fc3-03ed-44c9-a8dd-e95a1e8978ff.0\text-->ObjectModule.bsl +eb6420d9-ff9e-4c68-b025-2c1608cec69f-->und\eb6420d9-ff9e-4c68-b025-2c1608cec69f +root-->und\root +version-->und\version +versions-->und\versions diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/45cb56ba-09f2-4931-88c4-1e63a1a8f37c" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/45cb56ba-09f2-4931-88c4-1e63a1a8f37c" new file mode 100644 index 00000000..c0c30adc --- /dev/null +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/45cb56ba-09f2-4931-88c4-1e63a1a8f37c" @@ -0,0 +1,10 @@ +{1, +{1, +{0, +{9, +{0, +{0,0,45cb56ba-09f2-4931-88c4-1e63a1a8f37c},"УправляемаяФорма", +{1,"ru","Управляемая форма"},""},0,1}, +{0} +} +},0} \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/45cb56ba-09f2-4931-88c4-1e63a1a8f37c.0" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/45cb56ba-09f2-4931-88c4-1e63a1a8f37c.0" new file mode 100644 index 00000000..2a53f92e --- /dev/null +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/45cb56ba-09f2-4931-88c4-1e63a1a8f37c.0" @@ -0,0 +1,557 @@ +{2, +{28,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, +{1,0},0,0,1,1,1,0,1,0, +{0}, +{0},1, +{17, +{-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},9,"ФормаКоманднаяПанель", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{6,3,0,1}, +{0,0,0},1, +{0,0,1},0,1},0,"","",1, +{17, +{0},0,0,0,7,"Navigator", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{6,3,0,1}, +{0,0,0},0,0,1} +},"&НаКлиенте +Перем КонтекстЯдра; +&НаКлиенте +Перем Ожидаем; +&НаКлиенте +Перем Утверждения; + +&НаКлиенте +Перем ТестируемаяФорма; + +// { интерфейс тестирования + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; + Утверждения = КонтекстЯдра.Плагин(""БазовыеУтверждения""); + Ожидаем = КонтекстЯдра.Плагин(""УтвержденияBDD""); +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт + ОписанияТестов = Новый Массив; + + НужноИсключениеЕслиНеНайденоДокументов = Ложь; + + СоздатьИменаОсновныхФорм(); + + ТолькоУправляемыеФормы = Истина; + //#Если ТонкийКлиент или ВебКлиент Тогда + #Если ТолстыйКлиентОбычноеПриложение или ТолстыйКлиентУправляемоеПриложение Тогда + ТолькоУправляемыеФормы = Ложь; + #КонецЕсли + + Если Не ИспользоватьОбычныеФормыВТолстомКлиентеВУправляемомРежимеСервер() Тогда + ТолькоУправляемыеФормы = Истина; + КонецЕсли; + + Объект.ВыводитьСообщенияВЖурналРегистрации = Истина; + + ИменаОсновныхФорм_Объекты_Сервер = ИменаОсновныхФорм_Объекты_Сервер(); + мИменаОсновныхФорм_Списки_Сервер = мИменаОсновныхФорм_Списки_Сервер(); + + ДобавитьТестыДляСправочниковСервер(ОписанияТестов, ТолькоУправляемыеФормы, ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер); + ДобавитьТестыДляДокументовСервер(ОписанияТестов, ТолькоУправляемыеФормы, ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер); + + ДобавитьТестыДляОтчетовОбработокСервер(ОписанияТестов, ТолькоУправляемыеФормы); + + ОписанияТестов.Добавить(""ТестДолжен_ПроверитьБагПлатформыПриОткрытииУправляемойФормыПриОткрытииКоторойЕстьИсключение""); + + ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов); +КонецПроцедуры + +// } интерфейс тестирования + +//{ блок юнит-тестов - САМИ ТЕСТЫ + +&НаКлиенте +Процедура ПередЗапускомТеста() Экспорт + //Предупреждение(""Спец.окно для для показа сообщений из тестов. Таймаут 1 секунда"",1); // нужно для показа сообщений из теста, иначе не будут показаны + + ВыводитьСообщенияВЖурналРегистрации = Истина; + Объект.ВыводитьСообщенияВЖурналРегистрации = Истина; + + CоздаваемыйЭлемент = Неопределено; + + ОбновитьПовторноИспользуемыеЗначения(); + + НужноИсключениеЕслиНеНайденоДокументов = Ложь; + + СоздатьИменаОсновныхФорм(); + + //НачатьТранзакциюСервер(); +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗапускаТеста() Экспорт + //ОтменитьТранзакциюСервер(); + + ЗакрытьФорму(); + УдалитьСозданныйОбъект(); +КонецПроцедуры + +&НаСервере +Процедура УдалитьСозданныйОбъект() + Если ЗначениеЗаполнено(CоздаваемыйЭлемент) Тогда + CозданныйОбъект = CоздаваемыйЭлемент.ПолучитьОбъект(); + CозданныйОбъект.Удалить(); + КонецЕсли; + CоздаваемыйЭлемент = Неопределено; +КонецПроцедуры + +&НаКлиенте +Процедура ЗакрытьФорму() + //Если ТипЗнч(ТестируемаяФорма) <> Тип(""Форма"") и ТипЗнч(ТестируемаяФорма) <> Тип(""УправляемаяФорма"") Тогда + Если ТипЗнч(ТестируемаяФорма) <> Тип(""УправляемаяФорма"") Тогда + Возврат; + КонецЕсли; + ТестируемаяФорма.Модифицированность = Ложь; + Если ТестируемаяФорма.Открыта() Тогда + ТестируемаяФорма.Модифицированность = Ложь; + //Попытка + ТестируемаяФорма.Закрыть(); + //Исключение + // Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + // ЗакрытьФормуБезусловноСОтменойТранзакции(ТестируемаяФорма); + // //Если ТранзакцияАктивна() Тогда + // // ОтменитьТранзакцию(); + // //КонецЕсли; + // // //ДобавитьСтрокуРезультата(ИмяОперации, ИнформацияОбОшибке()); + // //НачатьТранзакцию(); + // //ТестируемаяФорма.УстановитьДействие(""ПередЗакрытием"", Неопределено); + // //ТестируемаяФорма.УстановитьДействие(""ПриЗакрытии"", Неопределено); + // //ТестируемаяФорма.Закрыть(); + // ВызватьИсключение Ошибка; + //КонецПопытки; + Иначе + Попытка + ТестируемаяФорма.Закрыть(); + Исключение + КонецПопытки; + КонецЕсли; + ТестируемаяФорма = """"; + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьОписанияТестовВНаборТестов(НаборТестов, ОписанияТестов) + Для Каждого Описание Из ОписанияТестов Цикл + Если ТипЗнч(Описание) = Тип(""Строка"") Тогда + НаборТестов.Добавить(Описание); + Иначе + НаборТестов.Добавить(Описание.ИмяТеста, НаборТестов.ПараметрыТеста(Описание.Параметр), Описание.ПредставлениеТеста); + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +&НаСервере +Функция ДобавитьТестыДляСправочниковСервер(ОписанияТестов, ТолькоУправляемыеФормы, ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер) + ОсновнойОбъект = Объект(); + СписокИсключений_Существующие = ОсновнойОбъект.ПолучитьСписокИсключений_Справочники_Существующие(); + СписокИсключений_Новые = ОсновнойОбъект.ПолучитьСписокИсключений_Справочники_Новые(); + СписокИсключений_Списки = ОсновнойОбъект.ПолучитьСписокИсключений_Справочники_Списки(); + + менеджерМетаданного = Метаданные.Справочники; + Для Каждого МетаОбъект Из менеджерМетаданного Цикл + + Если ПравоДоступа(""ИнтерактивноеДобавление"", МетаОбъект) Тогда + имяТеста = ""ТестДолжен_ОткрытьФормуНовогоЭлементаСправочника""; + ПрефиксПредставленияТеста = ""Новые""; + СписокИсключений = СписокИсключений_Новые; + ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + КонецЕсли; + + имяТеста = ""ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочника""; + ПрефиксПредставленияТеста = ""Существующие""; + СписокИсключений = СписокИсключений_Существующие; + ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + + имяТеста = ""ТестДолжен_ОткрытьФормуПоПолномуИмениФормы""; + ПрефиксПредставленияТеста = ""Списки""; + СписокИсключений = СписокИсключений_Списки; + ИменаОсновныхФорм = мИменаОсновныхФорм_Списки_Сервер; + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + КонецЦикла; +КонецФункции + +&НаСервере +Функция ДобавитьТестыДляДокументовСервер(ОписанияТестов, ТолькоУправляемыеФормы, ИменаОсновныхФорм_Объекты_Сервер, мИменаОсновныхФорм_Списки_Сервер) + ОсновнойОбъект = Объект(); + СписокИсключений_Существующие = ОсновнойОбъект.ПолучитьСписокИсключений_Документы_Существующие(); + СписокИсключений_Новые = ОсновнойОбъект.ПолучитьСписокИсключений_Документы_Новые(); + СписокИсключений_Списки = ОсновнойОбъект.ПолучитьСписокИсключений_Документы_Списки(); + + менеджерМетаданного = Метаданные.Документы; + Для Каждого МетаОбъект Из менеджерМетаданного Цикл + + Если ПравоДоступа(""ИнтерактивноеДобавление"", МетаОбъект) Тогда + имяТеста = ""ТестДолжен_ОткрытьФормуНовогоДокумента""; + ПрефиксПредставленияТеста = ""Новые""; + СписокИсключений = СписокИсключений_Новые; + ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; + ПроверяемоеПравоДоступа = ""ИнтерактивноеДобавление""; + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + КонецЕсли; + + имяТеста = ""ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокумента""; + ПрефиксПредставленияТеста = ""Существующие""; + СписокИсключений = СписокИсключений_Существующие; + ИменаОсновныхФорм = ИменаОсновныхФорм_Объекты_Сервер; + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + + имяТеста = ""ТестДолжен_ОткрытьФормуПоПолномуИмениФормы""; + ПрефиксПредставленияТеста = ""Списки""; + СписокИсключений = СписокИсключений_Списки; + ИменаОсновныхФорм = мИменаОсновныхФорм_Списки_Сервер; + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + КонецЦикла; +КонецФункции + +&НаСервере +Функция ДобавитьТестыДляОтчетовОбработокСервер(ОписанияТестов, ТолькоУправляемыеФормы) + ОсновнойОбъект = Объект(); + + ИменаОсновныхФорм = мИменаОсновныхФорм_Сервер(); + СписокИсключений_Отчеты = ОсновнойОбъект.ПолучитьСписокИсключений_Отчеты(); + СписокИсключений_Обработки = ОсновнойОбъект.ПолучитьСписокИсключений_Обработки(); + + имяТеста = ""ТестДолжен_ОткрытьФормуПоПолномуИмениФормы""; + ПрефиксПредставленияТеста = """"; + + ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных(ОписанияТестов, ОсновнойОбъект, Метаданные.Обработки, ТолькоУправляемыеФормы, СписокИсключений_Обработки, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных(ОписанияТестов, ОсновнойОбъект, Метаданные.Отчеты, ТолькоУправляемыеФормы, СписокИсключений_Отчеты, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); +КонецФункции + +Процедура ДобавитьТестыПереданныхВидовФормДляКаждогоОбъектаМенеджераМетаданных(ОписанияТестов, ОсновнойОбъект, менеджерМетаданного, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста) + Для Каждого МетаОбъект Из менеджерМетаданного Цикл + Если ОсновнойОбъект.ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда + Возврат; + КонецЕсли; + Если Лев(МетаОбъект.Имя, СтрДлина(""xddTestRunner"")) = ""xddTestRunner"" Тогда + Продолжить; + КонецЕсли; + + ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста); + КонецЦикла; +КонецПроцедуры + +Процедура ДобавитьТестыПереданныхВидовФормПоОдномОбъектуМетаданных(ОписанияТестов, ОсновнойОбъект, МетаОбъект, + ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм, имяТеста, ПрефиксПредставленияТеста) + + Если ОсновнойОбъект.ЭтоУстаревшийМетаОбъектДляУдаления(МетаОбъект) Тогда + Возврат; + КонецЕсли; + + CписокИменМетаФорм = Новый СписокЗначений; + ДобавитьИменаМетаФормДляОдногоОбъектаМетаданного(CписокИменМетаФорм, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм); + ДобавитьТестПоПереданнымМетаФормамСсылочногоОбъектаСервер(ОписанияТестов, CписокИменМетаФорм, имяТеста, ПрефиксПредставленияТеста); +КонецПроцедуры + +Процедура ДобавитьТестМетаФормыСервер(ОписанияТестов, CписокИменМетаФорм, имяТеста) + Для каждого Элемент Из CписокИменМетаФорм Цикл + МетаФорма_ПолноеИмя = Элемент.Значение; + ПредставлениеТеста = МетаФорма_ПолноеИмя; + лПараметры = Новый Структура(""ПредставлениеТеста,ИмяТеста,Транзакция,Параметр"", ПредставлениеТеста, имяТеста, Истина, МетаФорма_ПолноеИмя); + ОписанияТестов.Добавить(лПараметры); + КонецЦикла; +КонецПроцедуры + +Процедура ДобавитьТестПоПереданнымМетаФормамСсылочногоОбъектаСервер(ОписанияТестов, CписокИменМетаФорм, имяТеста, ПрефиксПредставленияТеста) + Для каждого Элемент Из CписокИменМетаФорм Цикл + МетаФорма_ПолноеИмя = Элемент.Значение; + ПредставлениеТеста = МетаФорма_ПолноеИмя; + Если НЕ ПустаяСтрока(ПрефиксПредставленияТеста) Тогда + ПредставлениеТеста = ПрефиксПредставленияТеста + "" : "" + МетаФорма_ПолноеИмя; + КонецЕсли; + + //Структура = Новый Структура(""МетаФорма_ПолноеИмя"", МетаФорма_ПолноеИмя); + ////Структура = Новый Структура(""МетаИмя,МетаФорма_ПолноеИмя"", МетаОбъект.Имя, МетаФорма_ПолноеИмя); + //лПараметры = Новый Структура(""ПредставлениеТеста,ИмяТеста,Транзакция,Параметр"", ПредставлениеТеста, имяТеста, Истина, Структура); + лПараметры = Новый Структура(""ПредставлениеТеста,ИмяТеста,Транзакция,Параметр"", ПредставлениеТеста, имяТеста, Истина, МетаФорма_ПолноеИмя); + ОписанияТестов.Добавить(лПараметры); + КонецЦикла; +КонецПроцедуры + +Функция ИспользоватьОбычныеФормыВТолстомКлиентеВУправляемомРежимеСервер() + Возврат Метаданные.ИспользоватьОбычныеФормыВУправляемомПриложении; +КонецФункции + +&НаКлиенте +Процедура ТестироватьФорму(ПолноеИмяФормы, ПараметрыФормы) Экспорт +//Процедура ТестироватьФорму(ПолноеИмяФормы, ПараметрыФормы, Модально = Ложь) Экспорт + Если Объект.ВыводитьСообщенияВЖурналРегистрации Тогда + ВыполнитьЗаписьВЖурналРегистрации(ПолноеИмяФормы); + КонецЕсли; + + КлючВременнойФормы = ""908насмь9ыв3245""; + //Если Модально Тогда + // ТестируемаяФорма = ОткрытьФормуМодально(ПолноеИмяФормы, ПараметрыФормы); + //Иначе + //ошибка =""""; + //Попытка + + // К сожалению здесь исключения не ловятся https://github.com/xDrivenDevelopment/xUnitFor1C/issues/154 + ТестируемаяФорма = ОткрытьФорму(ПолноеИмяФормы, ПараметрыФормы,, КлючВременнойФормы); + + //Исключение + // ошибка = ОписаниеОшибки(); + // Предупреждение("" поймали исключение 20"" + ошибка); + //КонецПопытки; + //КонецЕсли; + Если ТестируемаяФорма = Неопределено Тогда + Возврат; + КонецЕсли; + + //ТестируемаяФорма.Открыть(); // К сожалению здесь исключения не ловятся http://partners.v8.1c.ru/forum/thread.jsp?id=1080350#1080350 + Утверждения.Проверить(ТестируемаяФорма.Открыта(), ""ТестируемаяФорма """"""+ПолноеИмяФормы+"""""" не открылась, а должна была открыться""); + + Если ТипЗнч(ТестируемаяФорма) = Тип(""УправляемаяФорма"") Тогда + ТестируемаяФорма.ОбновитьОтображениеДанных(); + Иначе + //Если ЭтоОбычнаяФорма(ТестируемаяФорма) Тогда + ТестируемаяФорма.Обновить(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, СсылочныйОбъект) + ПараметрыФормы = Новый Структура(""Ключ"", СсылочныйОбъект); + ТестироватьФорму(Мета_ПолноеИмя, ПараметрыФормы); +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьЗаписьВЖурналРегистрации(ПолноеИмяФормы) + ЗаписьЖурналаРегистрации(Объект().Метаданные().Синоним, УровеньЖурналаРегистрации.Информация, , , ""Операция: "" + ПолноеИмяФормы); +КонецПроцедуры + +Процедура СоздатьИменаОсновныхФорм() + ОсновнойОбъект = Объект(); + ОсновнойОбъект.СоздатьИменаОсновныхФорм(); + ЗначениеВРеквизитФормы(ОсновнойОбъект, ""Объект""); +КонецПроцедуры + +&НаСервере +Функция ИменаОсновныхФорм_Объекты_Сервер() + Возврат Объект().мИменаОсновныхФорм_Объекты; +КонецФункции + +&НаСервере +Функция мИменаОсновныхФорм_Списки_Сервер() + Возврат Объект().мИменаОсновныхФорм_Списки; +КонецФункции + +&НаСервере +Функция мИменаОсновныхФорм_Сервер() + Возврат Объект().мИменаОсновныхФорм; +КонецФункции + +&НаСервереБезКонтекста +Процедура ДобавитьИменаМетаФормДляОдногоОбъектаМетаданного(CписокИменМетаФорм, ОсновнойОбъект, МетаОбъект, ТолькоУправляемыеФормы, списокИсключений, ИменаОсновныхФорм) + Если списокИсключений.НайтиПоЗначению(МетаОбъект.Имя) <> Неопределено Тогда + Возврат; + КонецЕсли; + Если ПравоДоступа(""Просмотр"", МетаОбъект) Тогда + МетаФормы = ОсновнойОбъект.ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм); + + Для каждого МетаФорма Из МетаФормы Цикл + МетаФорма_ПолноеИмя = МетаФорма.ПолноеИмя(); + //Сообщить(""МетаФорма_ПолноеИмя <""+МетаФорма_ПолноеИмя+""> ""); + + Если ТолькоУправляемыеФормы Тогда + //Сообщить(""МетаФорма.ТипФормы <""+МетаФорма.ТипФормы+""> ""); + Если Не ЭтоУправляемаяФорма(МетаФорма) Тогда + Продолжить; + КонецЕсли; + КонецЕсли; + + CписокИменМетаФорм.Добавить(МетаФорма_ПолноеИмя); + //ПредставлениеТеста = МетаФорма_ПолноеИмя; + //лПараметры = Новый Структура(""ПредставлениеТеста,ИмяТеста,Транзакция,Параметр"", ПредставлениеТеста, имяТеста, Истина, МетаФорма_ПолноеИмя); + //ОписанияТестов.Добавить(лПараметры); + КонецЦикла; + КонецЕсли; +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ЭтоУправляемаяФорма(МетаФорма) + Возврат МетаФорма <> Неопределено И МетаФорма.ТипФормы = Метаданные.СвойстваОбъектов.ТипФормы.Управляемая; +КонецФункции + +Функция Объект() + Возврат РеквизитФормыВЗначение(""Объект""); +КонецФункции + +Функция ПолучитьВидМетаданного(Мета_ПолноеИмя) + ИД = Лев(Мета_ПолноеИмя, Найти(Мета_ПолноеИмя, "".Форма."")-1); + ИД = Сред(ИД, Найти(ИД, ""."") + 1); + Возврат ИД; +КонецФункции + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуПоПолномуИмениФормы(ПолноеИмяФормы) Экспорт + ТестироватьФорму(ПолноеИмяФормы, Неопределено); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочника(Мета_ПолноеИмя) Экспорт + ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочникаСервер(Мета_ПолноеИмя); + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, CоздаваемыйЭлемент); +КонецПроцедуры + +&НаСервере +Процедура ТестДолжен_ОткрытьФормуСуществующегоЭлементаСправочникаСервер(Мета_ПолноеИмя) + ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); + + ОсновнойОбъект = Объект(); + CоздаваемыйЭлемент = ОсновнойОбъект.СоздатьЭлементИВернутьСсылку(ИД, ""существующий""); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуНовогоЭлементаСправочника(Мета_ПолноеИмя) Экспорт + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Неопределено); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуНовогоДокумента(Мета_ПолноеИмя) Экспорт + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Неопределено); +КонецПроцедуры + +&НаКлиенте +Процедура ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокумента(Мета_ПолноеИмя) Экспорт + Док = ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокументаСервер(Мета_ПолноеИмя); + Если Док <> Неопределено Тогда + ТестироватьФормуСсылочногоОбъекта(Мета_ПолноеИмя, Док); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Функция ТестДолжен_ОткрытьФормуСуществующегоЭлементаДокументаСервер(Мета_ПолноеИмя) + ИД = ПолучитьВидМетаданного(Мета_ПолноеИмя); + + ОсновнойОбъект = Объект(); + Док = ОсновнойОбъект.ПолучитьСуществующийДокументОбъектИВернутьСсылку(ИД, НужноИсключениеЕслиНеНайденоДокументов, ""ТестДолжен_ОткрытьФормуСуществующегоДокумента""); + Возврат Док; +КонецФункции + +// проверка бага https://github.com/xDrivenDevelopment/xUnitFor1C/issues/154 +&НаКлиенте +Процедура ТестДолжен_ПроверитьБагПлатформыПриОткрытииУправляемойФормыПриОткрытииКоторойЕстьИсключение() Экспорт + Мета_ПолноеИмя = ""Обработка.ТестОбработка_Форма_ИсключениеПриОткрытии.Форма.УправляемаяФорма""; + ошибка =""""; + Попытка + ОткрытьФорму(Мета_ПолноеИмя); + Исключение + ошибка = ОписаниеОшибки(); + //Предупреждение(""поймали исключение 20""+ ошибка); + КонецПопытки; + Утверждения.ПроверитьЗаполненность(ошибка, ""Ошибка""); +КонецПроцедуры + +//} +", +{4,3, +{9, +{1},0,"Объект", +{1,0}, +{"Pattern", +{"#",d7763d54-e3e8-4427-b006-786d44023817} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},1,0,0,0, +{0,0}, +{0,0} +}, +{9, +{2},0,"CоздаваемыйЭлемент", +{1,1, +{"ru","Cоздаваемый элемент"} +}, +{"Pattern", +{"#",280f5f0e-9c8a-49cc-bf6d-4d296cc17a63} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},0,0,0,0, +{0,0}, +{0,0} +}, +{9, +{3},0,"НужноИсключениеЕслиНеНайденоДокументов", +{1,1, +{"ru","Нужно исключение если не найдено документов"} +}, +{"Pattern", +{"S"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},0,0,0,0, +{0,0}, +{0,0} +},0,0, +{#base64:77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxTZXR0 +aW5ncyB4bWxucz0iaHR0cDovL3Y4LjFjLnJ1LzguMS9kYXRhLWNvbXBvc2l0aW9u +LXN5c3RlbS9zZXR0aW5ncyIgeG1sbnM6ZGNzY29yPSJodHRwOi8vdjguMWMucnUv +OC4xL2RhdGEtY29tcG9zaXRpb24tc3lzdGVtL2NvcmUiIHhtbG5zOnN0eWxlPSJo +dHRwOi8vdjguMWMucnUvOC4xL2RhdGEvdWkvc3R5bGUiIHhtbG5zOnN5cz0iaHR0 +cDovL3Y4LjFjLnJ1LzguMS9kYXRhL3VpL2ZvbnRzL3N5c3RlbSIgeG1sbnM6djg9 +Imh0dHA6Ly92OC4xYy5ydS84LjEvZGF0YS9jb3JlIiB4bWxuczp2OHVpPSJodHRw +Oi8vdjguMWMucnUvOC4xL2RhdGEvdWkiIHhtbG5zOndlYj0iaHR0cDovL3Y4LjFj +LnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93ZWIiIHhtbG5zOndpbj0iaHR0cDovL3Y4 +LjFjLnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93aW5kb3dzIiB4bWxuczp4cz0iaHR0 +cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDov +L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} +}, +{0,0}, +{0,0}, +{0,0}, +{0,0} +} \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/724d5548-5d6b-4e19-98cf-0ea3ae12c0a7" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/724d5548-5d6b-4e19-98cf-0ea3ae12c0a7" new file mode 100644 index 00000000..6650d9e6 --- /dev/null +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/724d5548-5d6b-4e19-98cf-0ea3ae12c0a7" @@ -0,0 +1,6 @@ +{1, +{2,0, +{0, +{0,0,724d5548-5d6b-4e19-98cf-0ea3ae12c0a7},"СозданиеОдногоПользователяИБ", +{1,"ru","Создание одного пользователя ИБ"},""} +},0} \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/724d5548-5d6b-4e19-98cf-0ea3ae12c0a7.0" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/724d5548-5d6b-4e19-98cf-0ea3ae12c0a7.0" new file mode 100644 index 00000000..eec1bc63 Binary files /dev/null and "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/724d5548-5d6b-4e19-98cf-0ea3ae12c0a7.0" differ diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/be1492ab-bedd-4e13-8827-ed025cda688a" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/be1492ab-bedd-4e13-8827-ed025cda688a" new file mode 100644 index 00000000..d24d3482 --- /dev/null +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/be1492ab-bedd-4e13-8827-ed025cda688a" @@ -0,0 +1,10 @@ +{1, +{1, +{0, +{9, +{0, +{0,0,be1492ab-bedd-4e13-8827-ed025cda688a},"ПолучениеФорм", +{1,"ru","Получение форм"},""},0,0}, +{0} +} +},0} \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/copyinfo" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/copyinfo" new file mode 100644 index 00000000..161ac217 --- /dev/null +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/copyinfo" @@ -0,0 +1,20 @@ +{4, +{3, +{45cb56ba-09f2-4931-88c4-1e63a1a8f37c,45cb56ba-09f2-4931-88c4-1e63a1a8f37c,1, +{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"УправляемаяФорма"} +}, +{5fafd470-b0a2-485b-b255-a3b8faa26fb7,5fafd470-b0a2-485b-b255-a3b8faa26fb7,1, +{9cd510cd-abfc-11d4-9434-004095e12fc7,"xUnitFor1C"} +}, +{df099fc3-03ed-44c9-a8dd-e95a1e8978ff,df099fc3-03ed-44c9-a8dd-e95a1e8978ff,1, +{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"Тесты_ОткрытиеФормКонфигурации"} +} +}, +{2, +{280f5f0e-9c8a-49cc-bf6d-4d296cc17a63,5fafd470-b0a2-485b-b255-a3b8faa26fb7,0}, +{d7763d54-e3e8-4427-b006-786d44023817,df099fc3-03ed-44c9-a8dd-e95a1e8978ff,0} +}, +{0}, +{0,0}, +{0} +} \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/df099fc3-03ed-44c9-a8dd-e95a1e8978ff.0/info" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/df099fc3-03ed-44c9-a8dd-e95a1e8978ff.0/info" new file mode 100644 index 00000000..c70b5f39 --- /dev/null +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/df099fc3-03ed-44c9-a8dd-e95a1e8978ff.0/info" @@ -0,0 +1 @@ +{3,1,0,"",0} \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/eb6420d9-ff9e-4c68-b025-2c1608cec69f" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/eb6420d9-ff9e-4c68-b025-2c1608cec69f" new file mode 100644 index 00000000..1719521f --- /dev/null +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/eb6420d9-ff9e-4c68-b025-2c1608cec69f" @@ -0,0 +1,115 @@ +{1, +{eb6420d9-ff9e-4c68-b025-2c1608cec69f},1, +{c3831ec8-d8d5-4f93-8a22-f9bfae07327f, +{1, +{4,d7763d54-e3e8-4427-b006-786d44023817,4eac2e4e-b966-477c-8f8b-b4f3c988a024, +{0, +{0, +{0,0,df099fc3-03ed-44c9-a8dd-e95a1e8978ff},"Тесты_ОткрытиеФормКонфигурации", +{1,"ru","Тесты ""Открытие форм конфигурации"""},""} +},00000000-0000-0000-0000-000000000000,"",45cb56ba-09f2-4931-88c4-1e63a1a8f37c},4, +{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, +{3daea016-69b7-4ed4-9453-127911372fe6,1,724d5548-5d6b-4e19-98cf-0ea3ae12c0a7}, +{d5b0e5ed-256d-401c-9c36-f630cafd8a62,2,be1492ab-bedd-4e13-8827-ed025cda688a,45cb56ba-09f2-4931-88c4-1e63a1a8f37c}, +{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,5, +{ +{0, +{25, +{2, +{0, +{0,0,0d576d83-e0f1-4407-8839-678e97084eb9},"мИменаОсновныхФорм", +{1,"ru","Имена основных форм"},""}, +{"Pattern"} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0} +},0}, +{ +{0, +{25, +{2, +{0, +{0,0,f465a06e-6fbe-4913-a502-3efe7fde4644},"мИменаОсновныхФорм_Списки", +{1,"ru","М имена основных форм списки"},""}, +{"Pattern"} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0} +},0}, +{ +{0, +{25, +{2, +{0, +{0,0,c4204ca8-31c8-4d16-b26c-bb95f5a4346a},"мИменаОсновныхФорм_Объекты", +{1,"ru","М имена основных форм объекты"},""}, +{"Pattern"} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0} +},0}, +{ +{0, +{25, +{2, +{0, +{0,0,bcb9322e-f0c7-41a1-94cc-2d93e673140e},"мПолучениеФорм", +{1,"ru","М получение форм"},""}, +{"Pattern"} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0} +},0}, +{ +{0, +{25, +{2, +{0, +{0,0,585b82f6-6309-4ef7-bada-4bca196ee5a4},"ВыводитьСообщенияВЖурналРегистрации", +{1,"ru","Выводить сообщения в журнал регистрации"},""}, +{"Pattern", +{"B"} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0} +},0} +} +} +} +} \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/root" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/root" new file mode 100644 index 00000000..647bb3c0 --- /dev/null +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/root" @@ -0,0 +1 @@ +{2,eb6420d9-ff9e-4c68-b025-2c1608cec69f,} \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/version" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/version" new file mode 100644 index 00000000..c23bfe28 --- /dev/null +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/version" @@ -0,0 +1,3 @@ +{ +{216,0} +} \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/versions" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/versions" new file mode 100644 index 00000000..80cb9dad --- /dev/null +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/und/versions" @@ -0,0 +1 @@ +{1,15,"724d5548-5d6b-4e19-98cf-0ea3ae12c0a7",8cde62c4-4f58-49e3-b280-bde8636b9f52,"724d5548-5d6b-4e19-98cf-0ea3ae12c0a7.0",5c5f49aa-474a-436e-9326-367bad966277,"",2aae372a-3b67-4ed4-a917-49e1a8bd72a5,"df099fc3-03ed-44c9-a8dd-e95a1e8978ff",950cbccd-96c4-452a-960d-5052c58af474,"versions",85112c73-1e71-4f93-83a4-f258600df1f1,"df099fc3-03ed-44c9-a8dd-e95a1e8978ff.0",77fc7aa8-0e17-4380-8282-310d64571436,"root",c6b06d22-296c-45e7-8ccb-15f1bdd63047,"be1492ab-bedd-4e13-8827-ed025cda688a.0",b1dc867f-6a17-40d7-9b62-fec5d5c2f358,"be1492ab-bedd-4e13-8827-ed025cda688a.1",0e88792e-dd94-4a89-986a-1d559f2cafdc,"45cb56ba-09f2-4931-88c4-1e63a1a8f37c",16b57beb-8e9a-48a4-9ab1-07bd3be8fd4d,"be1492ab-bedd-4e13-8827-ed025cda688a",4f96211e-8187-4752-aceb-3c7fdb224139,"version",fd18a8b2-d488-467e-a3b8-0e2ebcde5a14,"45cb56ba-09f2-4931-88c4-1e63a1a8f37c.0",f3890c2f-e0f7-4750-8761-aa2c872d5be3,"eb6420d9-ff9e-4c68-b025-2c1608cec69f",c0c2bfbe-f553-453c-9839-3218801ba9ca,"copyinfo",9fe49b4b-c4df-431c-b5d6-aa2440a632fa} \ No newline at end of file diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221.mxl" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221.mxl" new file mode 100644 index 00000000..eec1bc63 Binary files /dev/null and "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221.mxl" differ diff --git "a/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221_mxl.txt" "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221_mxl.txt" new file mode 100644 index 00000000..bb520624 --- /dev/null +++ "b/src/Tests/Smoke/\321\202\320\265\321\201\321\202\321\213_\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270/\320\234\320\260\320\272\320\265\321\202\321\213/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265\320\236\320\264\320\275\320\276\320\263\320\276\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\230\320\221_mxl.txt" @@ -0,0 +1,8 @@ +Тип Вид ИмяПеременной ТЧ Реквизит Значение Режим +ПользовательИБ Пользователь1 + Имя ТестИмя + ОсновнойИнтерфейс СтаршийРегион + Пароль + Роли + Роль тестДоступКВнешнимОбработкам + Роль СтаршийРегион \ No newline at end of file diff --git "a/src/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164/ObjectModule.txt" "b/src/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164/ObjectModule.bsl" similarity index 85% rename from "src/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164/ObjectModule.txt" rename to "src/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164/ObjectModule.bsl" index 7666ecd1..c91b7e35 100644 --- "a/src/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164/ObjectModule.txt" +++ "b/src/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164/ObjectModule.bsl" @@ -5,6 +5,11 @@ Перем Конвертер; +// Переменная с путем к обработке в файловой системы +// Используется в случаях, когда обработка запущена из встроенного в конфигурацию браузера тестов, +// т.к. в этом случае в свойстве ИспользуемоеИмяФайла содержится адрес временного хранилища, а не непосредственный путь +Перем ПутьКФайлуПолный Экспорт; + //{ интерфейс тестирования Процедура Инициализация(КонтекстЯдраПараметр) Экспорт @@ -89,8 +94,21 @@ //{ блок юнит-тестов - сами тесты Процедура ПередЗапускомТеста() Экспорт - Конвертер = ВнешниеОбработки.Создать(ПутьКонвертера(), Ложь); - Конвертер.Инициализация(); + Если КонтекстЯдра <> Неопределено + И КонтекстЯдра.ЭтоВстроеннаяОбработка Тогда + ИдентификаторКонвертераСПрефиксомПодсистемы = ДополнитьИдентификаторПрефиксомПодсистемы("xddTestsConvertIntoRebornFormat", КонтекстЯдра.ИспользуемыйПрефиксПодсистемы); + Конвертер = Обработки[ИдентификаторКонвертераСПрефиксомПодсистемы].Создать(); + Если ПеременнаяСодержитСвойство(Конвертер, "ИспользуемыйПрефиксПодсистемы") Тогда + Конвертер.ИспользуемыйПрефиксПодсистемы = КонтекстЯдра.ИспользуемыйПрефиксПодсистемы; + КонецЕсли; + Иначе + Конвертер = ВнешниеОбработки.Создать(ПутьКонвертера(), Ложь); + КонецЕсли; + СлужебныеПараметрыБраузераТестов = КонтекстЯдра.СлужебныеПараметрыОбработки(); + Если ПеременнаяСодержитСвойство(ЭтотОбъект, "ИспользуемоеИмяФайла") Тогда + СлужебныеПараметрыБраузераТестов.Вставить("ИспользуемоеИмяФайла", ИспользуемоеИмяФайла); + КонецЕсли; + Конвертер.Инициализация(СлужебныеПараметрыБраузераТестов); КонецПроцедуры Процедура ТестДолжен_ВыполнитьИнициализацию() Экспорт @@ -334,4 +352,66 @@ Возврат КаталогПроекта() + "\utils\xddTestsConvertIntoRebornFormat.epf"; КонецФункции -//} \ No newline at end of file +//} + +// { Подсистема конфигурации xUnitFor1C + +// Универсальная функция для проверки наличия +// свойств у значения любого типа данных +// Переменные: +// 1. Переменная - переменная любого типа, +// для которой необходимо проверить наличие свойства +// 2. ИмяСвойства - переменная типа "Строка", +// содержащая искомое свойства +// +Функция ПеременнаяСодержитСвойство(Переменная, ИмяСвойства) + // Инициализируем структуру для теста + // с ключом (значение переменной "ИмяСвойства") + // и значением произвольного GUID'а + GUIDПроверка = Новый УникальныйИдентификатор; + СтруктураПроверка = Новый Структура; + СтруктураПроверка.Вставить(ИмяСвойства, GUIDПроверка); + // Заполняем созданную структуру из переданного + // значения переменной + ЗаполнитьЗначенияСвойств(СтруктураПроверка, Переменная); + // Если значение для свойства структуры осталось + // NULL, то искомое свойство не найдено, + // и наоборот. + Если СтруктураПроверка[ИмяСвойства] = GUIDПроверка Тогда + Возврат Ложь; + Иначе + Возврат Истина; + КонецЕсли; +КонецФункции + +Функция ДополнитьИдентификаторПрефиксомПодсистемы(Знач Идентификатор, Знач ИспользуемыйПрефиксПодсистемы) + + Если НЕ ЗначениеЗаполнено(ИспользуемыйПрефиксПодсистемы) Тогда + Возврат Идентификатор; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(ИспользуемыйПрефиксПодсистемы); + Если Лев(Идентификатор, ДлинаПрефикса) = ИспользуемыйПрефиксПодсистемы Тогда + Возврат Идентификатор; + Иначе + Возврат ИспользуемыйПрефиксПодсистемы + Идентификатор; + КонецЕсли; + +КонецФункции + +Функция ПолучитьИдентификаторБезПрефиксаПодсистемы(Знач Идентификатор, Знач ИспользуемыйПрефиксПодсистемы) + + Если НЕ ЗначениеЗаполнено(ИспользуемыйПрефиксПодсистемы) Тогда + Возврат Идентификатор; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(ИспользуемыйПрефиксПодсистемы); + Если Лев(Идентификатор, ДлинаПрефикса) = ИспользуемыйПрефиксПодсистемы Тогда + Возврат Прав(Идентификатор, СтрДлина(Идентификатор) - ДлинаПрефикса); + Иначе + Возврат Идентификатор; + КонецЕсли; + +КонецФункции + +// } Подсистема конфигурации xUnitFor1C \ No newline at end of file diff --git "a/src/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164/renames.txt" "b/src/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164/renames.txt" index c61ad6fb..3be0174b 100644 --- "a/src/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164/renames.txt" +++ "b/src/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164/renames.txt" @@ -31,7 +31,7 @@ aa6a8c8d-aaf9-45a8-8df1-0acd6747775e-->und\aa6a8c8d-aaf9-45a8-8df1-0acd6747775e aa6a8c8d-aaf9-45a8-8df1-0acd6747775e.0-->und\aa6a8c8d-aaf9-45a8-8df1-0acd6747775e.0 aad28daf-f05d-42da-9bf6-51e89ff6a46b.0\info-->und\aad28daf-f05d-42da-9bf6-51e89ff6a46b.0\info -aad28daf-f05d-42da-9bf6-51e89ff6a46b.0\text-->ObjectModule.txt +aad28daf-f05d-42da-9bf6-51e89ff6a46b.0\text-->ObjectModule.bsl bc8ef2c0-98ae-4f7b-9b02-f680f8384843-->und\bc8ef2c0-98ae-4f7b-9b02-f680f8384843 bc8ef2c0-98ae-4f7b-9b02-f680f8384843.0-->und\bc8ef2c0-98ae-4f7b-9b02-f680f8384843.0 ca759f78-0cac-471b-972d-06c9844ad3a2-->und\ca759f78-0cac-471b-972d-06c9844ad3a2 diff --git "a/src/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164/und/e5530449-dd2d-4841-821e-38808447be38" "b/src/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164/und/e5530449-dd2d-4841-821e-38808447be38" index 59d48c28..90a93e6f 100644 --- "a/src/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164/und/e5530449-dd2d-4841-821e-38808447be38" +++ "b/src/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164/und/e5530449-dd2d-4841-821e-38808447be38" @@ -4,9 +4,9 @@ {1, {4,57ce6eef-6a19-4072-ac8d-1e182077323a,884bd83a-385d-4381-a7cd-4b51de43f593, {0, -{0, +{1, {0,0,aad28daf-f05d-42da-9bf6-51e89ff6a46b},"Тест_КонвертацияТестов_в_версию4", -{1,"ru","Тест конвертация тестов в версию4"},""} +{1,"ru","Тест конвертация тестов в версию 4"},"",0,0} },00000000-0000-0000-0000-000000000000,"",00000000-0000-0000-0000-000000000000},4, {2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, {3daea016-69b7-4ed4-9453-127911372fe6,23,908b5599-e977-4e6c-8401-3f12bf12e2a3,165fbf6e-41ca-41fa-9329-f226fbf60fcf,594174ed-87e8-4b21-b5c2-4b9936964fbe,dc252f32-bece-4b36-a154-7e1456abc42b,0820522a-cd7b-498a-8767-4a1a17c6a313,9445dc5b-81cf-4d1e-9e20-07042b93755a,8b6e0649-e316-4007-95d6-0240e751b4e0,94ed5fcb-e54f-4e79-9818-d9c006e798df,e71cb439-e78b-48d4-90ca-3055c334364b,945f1fbd-df8f-41cd-b30a-803da0bb591a,5f1fcb9b-1780-4484-8c6f-b54997875be3,da854782-15ef-4d88-8ea7-9606248465ef,bc8ef2c0-98ae-4f7b-9b02-f680f8384843,e9fbe396-a267-46f4-8472-0e03be464c2a,5b867d65-eb17-4da4-9cbd-850c1dd2585b,eaaa971d-cd10-4a58-ac2c-453a08f3e31c,aa6a8c8d-aaf9-45a8-8df1-0acd6747775e,5bea2e8a-f556-4c03-8234-4590f8041b1d,0074f89e-172f-4cb5-9d37-90f51ebfdf83,7763d64e-6a6b-4a34-af48-d041bc88e244,ca759f78-0cac-471b-972d-06c9844ad3a2,267c63bb-1a07-4f2a-80b7-e1ed526a9d8e,1facde36-00e4-442d-b52c-0c8e26d731fe}, diff --git "a/src/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164/und/versions" "b/src/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164/und/versions" index 29f610cf..d3b59a72 100644 --- "a/src/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164/und/versions" +++ "b/src/Tests/Utils/\320\242\320\265\321\201\321\202_\320\232\320\276\320\275\320\262\320\265\321\200\321\202\320\260\321\206\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262_\320\262_\320\262\320\265\321\200\321\201\320\270\321\2164/und/versions" @@ -1 +1 @@ -{1,55,"",e9e95310-0cc2-4049-b82a-1691ce1598cd,"e9fbe396-a267-46f4-8472-0e03be464c2a.0",9aea1bb2-ed53-4adf-ad5c-d9484768331b,"5b867d65-eb17-4da4-9cbd-850c1dd2585b",2e2d6fc0-0604-4501-807c-59b0c991eb6b,"5f1fcb9b-1780-4484-8c6f-b54997875be3.0",4f577650-54ec-48b7-8d50-be65cc200b52,"8b6e0649-e316-4007-95d6-0240e751b4e0",5b97519d-9182-4da7-85ec-c3056dfa2d36,"eaaa971d-cd10-4a58-ac2c-453a08f3e31c",0e7d87b7-315f-4a29-b111-1ae91f085b32,"aa6a8c8d-aaf9-45a8-8df1-0acd6747775e",9268a0ae-8a75-409e-b1ef-ef178ec2a998,"copyinfo",d89f7605-66db-4038-9401-0053ef95c466,"9445dc5b-81cf-4d1e-9e20-07042b93755a",b004673a-0a13-40a9-b429-1a6375fe1356,"ca759f78-0cac-471b-972d-06c9844ad3a2.0",69588c04-4c3e-4067-bb8e-a8f5029e7cda,"165fbf6e-41ca-41fa-9329-f226fbf60fcf",7d866af2-b663-4c46-afef-0bb0e8ef0986,"versions",0248c68a-87d4-4d59-9099-045207c05cb0,"5b867d65-eb17-4da4-9cbd-850c1dd2585b.0",5a471482-e6e9-4e79-a645-8870107f475f,"1facde36-00e4-442d-b52c-0c8e26d731fe",cfcec375-dd06-41fc-b0c3-4906731e3353,"97fdadb1-8930-4792-a51e-fd59af2c5cb1",583e35b8-470a-4735-b8b8-a0fcfc94bf09,"0074f89e-172f-4cb5-9d37-90f51ebfdf83.0",f4a372e1-dabc-464a-912d-e88ad95f0482,"94ed5fcb-e54f-4e79-9818-d9c006e798df",8a246ed3-171d-473b-8cc7-e69c7fbc3e59,"bc8ef2c0-98ae-4f7b-9b02-f680f8384843.0",b310cc0d-c34f-4ce9-affa-00801f138624,"908b5599-e977-4e6c-8401-3f12bf12e2a3",ea9f3d27-8ef3-4d09-8811-ff1344349c1e,"bc8ef2c0-98ae-4f7b-9b02-f680f8384843",12341893-9ea8-4913-872d-29b09877c54e,"dc252f32-bece-4b36-a154-7e1456abc42b.0",6bf792f6-e4ae-4c92-81b1-420bf6b271d9,"dc252f32-bece-4b36-a154-7e1456abc42b",7cba6c2e-de68-4977-b315-5baa5a9c6cb2,"594174ed-87e8-4b21-b5c2-4b9936964fbe.0",42255578-1c3c-4071-9d06-cdbfbf995d08,"945f1fbd-df8f-41cd-b30a-803da0bb591a.0",71e920c3-bba3-4af1-a9c4-89cf9973456f,"root",ba9e9269-06b7-4ed9-b449-22aa9489c87f,"7763d64e-6a6b-4a34-af48-d041bc88e244.0",3a5aec1e-e8d1-48fb-a3f1-aa1435988703,"e9fbe396-a267-46f4-8472-0e03be464c2a",fa427f3c-22aa-4f64-a598-5aa6cd97fad3,"594174ed-87e8-4b21-b5c2-4b9936964fbe",9ebabc6d-2cd2-4c63-9cfd-788a38eba60d,"9445dc5b-81cf-4d1e-9e20-07042b93755a.0",c50b1a6c-4820-4b72-9ec3-9a5af6d0cf90,"165fbf6e-41ca-41fa-9329-f226fbf60fcf.0",98a8d35d-b8d5-468b-b23c-25ef049f6ae1,"da854782-15ef-4d88-8ea7-9606248465ef.0",ca3ccaf1-6868-4280-9207-0ff4e7d5c524,"8b6e0649-e316-4007-95d6-0240e751b4e0.0",9d5f1ce5-e5a2-41e4-b5c0-ea261eb0c82e,"908b5599-e977-4e6c-8401-3f12bf12e2a3.0",44400a7a-7cd4-497e-8e60-32687f4a2231,"267c63bb-1a07-4f2a-80b7-e1ed526a9d8e",8fcd04f1-fd43-4454-b768-f21d2c3104a1,"7763d64e-6a6b-4a34-af48-d041bc88e244",aa14f9b1-df0e-47d5-85d2-827fe877e00a,"e71cb439-e78b-48d4-90ca-3055c334364b.0",edf8cc87-3cbe-409d-bcef-df27b96b9fd7,"ca759f78-0cac-471b-972d-06c9844ad3a2",3b3a3ab0-3139-4e53-ae85-a093e5447b09,"5bea2e8a-f556-4c03-8234-4590f8041b1d",4d4f03e4-e8d6-405a-89ab-1d9d37dba106,"1facde36-00e4-442d-b52c-0c8e26d731fe.0",79542ae9-a564-4637-a7ae-0d17e98fc648,"0074f89e-172f-4cb5-9d37-90f51ebfdf83",360e1277-1527-48c1-b512-7a0e6b1bfb1f,"7ff549be-7559-43d1-8164-15a081f9e920",25e31df9-9458-4d03-a108-433824129414,"267c63bb-1a07-4f2a-80b7-e1ed526a9d8e.0",75dc090d-a900-416e-8985-0f337ef78fa5,"5f1fcb9b-1780-4484-8c6f-b54997875be3",4a49be5c-3bc6-44e0-8cd4-fa63ec51892f,"945f1fbd-df8f-41cd-b30a-803da0bb591a",808e3cfc-12e4-4437-ab68-c533e26a952e,"aa6a8c8d-aaf9-45a8-8df1-0acd6747775e.0",5e4a1975-ff26-43f7-9253-221abaf1bc3c,"94ed5fcb-e54f-4e79-9818-d9c006e798df.0",d980a4d3-64d3-4498-81ea-260f339602a5,"e5530449-dd2d-4841-821e-38808447be38",67b37864-8925-478e-881c-4c75005dca9f,"0820522a-cd7b-498a-8767-4a1a17c6a313",aa627ad9-ee41-48b2-89ff-a5d4930c7816,"0820522a-cd7b-498a-8767-4a1a17c6a313.0",0da4a02e-2501-405c-bd94-a3680fa6fd48,"da854782-15ef-4d88-8ea7-9606248465ef",aa9309eb-fb31-4749-9353-a29bb8719dff,"version",c61f4dca-9f7c-49a3-80f0-1dd62937a53e,"aad28daf-f05d-42da-9bf6-51e89ff6a46b.0",08a37c6b-41bf-425e-bf5f-0c87132c427e,"e71cb439-e78b-48d4-90ca-3055c334364b",ec673ce1-ceb3-42f2-8738-59b34ad88d4a,"eaaa971d-cd10-4a58-ac2c-453a08f3e31c.0",96b530b2-58f9-4941-8a9c-f4cd7340b12b,"5bea2e8a-f556-4c03-8234-4590f8041b1d.0",b70bb3f0-1c4a-4c2b-82b9-e648c179b62a} \ No newline at end of file +{1,55,"",7f5a798f-bf56-47d9-8a92-5445539ab638,"0074f89e-172f-4cb5-9d37-90f51ebfdf83",360e1277-1527-48c1-b512-7a0e6b1bfb1f,"0074f89e-172f-4cb5-9d37-90f51ebfdf83.0",f4a372e1-dabc-464a-912d-e88ad95f0482,"0820522a-cd7b-498a-8767-4a1a17c6a313",aa627ad9-ee41-48b2-89ff-a5d4930c7816,"0820522a-cd7b-498a-8767-4a1a17c6a313.0",0da4a02e-2501-405c-bd94-a3680fa6fd48,"165fbf6e-41ca-41fa-9329-f226fbf60fcf",7d866af2-b663-4c46-afef-0bb0e8ef0986,"165fbf6e-41ca-41fa-9329-f226fbf60fcf.0",98a8d35d-b8d5-468b-b23c-25ef049f6ae1,"1facde36-00e4-442d-b52c-0c8e26d731fe",cfcec375-dd06-41fc-b0c3-4906731e3353,"1facde36-00e4-442d-b52c-0c8e26d731fe.0",79542ae9-a564-4637-a7ae-0d17e98fc648,"267c63bb-1a07-4f2a-80b7-e1ed526a9d8e",8fcd04f1-fd43-4454-b768-f21d2c3104a1,"267c63bb-1a07-4f2a-80b7-e1ed526a9d8e.0",75dc090d-a900-416e-8985-0f337ef78fa5,"594174ed-87e8-4b21-b5c2-4b9936964fbe",9ebabc6d-2cd2-4c63-9cfd-788a38eba60d,"594174ed-87e8-4b21-b5c2-4b9936964fbe.0",42255578-1c3c-4071-9d06-cdbfbf995d08,"5b867d65-eb17-4da4-9cbd-850c1dd2585b",2e2d6fc0-0604-4501-807c-59b0c991eb6b,"5b867d65-eb17-4da4-9cbd-850c1dd2585b.0",5a471482-e6e9-4e79-a645-8870107f475f,"5bea2e8a-f556-4c03-8234-4590f8041b1d",4d4f03e4-e8d6-405a-89ab-1d9d37dba106,"5bea2e8a-f556-4c03-8234-4590f8041b1d.0",b70bb3f0-1c4a-4c2b-82b9-e648c179b62a,"5f1fcb9b-1780-4484-8c6f-b54997875be3",4a49be5c-3bc6-44e0-8cd4-fa63ec51892f,"5f1fcb9b-1780-4484-8c6f-b54997875be3.0",4f577650-54ec-48b7-8d50-be65cc200b52,"7763d64e-6a6b-4a34-af48-d041bc88e244",aa14f9b1-df0e-47d5-85d2-827fe877e00a,"7763d64e-6a6b-4a34-af48-d041bc88e244.0",3a5aec1e-e8d1-48fb-a3f1-aa1435988703,"7ff549be-7559-43d1-8164-15a081f9e920",25e31df9-9458-4d03-a108-433824129414,"8b6e0649-e316-4007-95d6-0240e751b4e0",5b97519d-9182-4da7-85ec-c3056dfa2d36,"8b6e0649-e316-4007-95d6-0240e751b4e0.0",9d5f1ce5-e5a2-41e4-b5c0-ea261eb0c82e,"908b5599-e977-4e6c-8401-3f12bf12e2a3",ea9f3d27-8ef3-4d09-8811-ff1344349c1e,"908b5599-e977-4e6c-8401-3f12bf12e2a3.0",44400a7a-7cd4-497e-8e60-32687f4a2231,"9445dc5b-81cf-4d1e-9e20-07042b93755a",b004673a-0a13-40a9-b429-1a6375fe1356,"9445dc5b-81cf-4d1e-9e20-07042b93755a.0",c50b1a6c-4820-4b72-9ec3-9a5af6d0cf90,"945f1fbd-df8f-41cd-b30a-803da0bb591a",808e3cfc-12e4-4437-ab68-c533e26a952e,"945f1fbd-df8f-41cd-b30a-803da0bb591a.0",71e920c3-bba3-4af1-a9c4-89cf9973456f,"94ed5fcb-e54f-4e79-9818-d9c006e798df",8a246ed3-171d-473b-8cc7-e69c7fbc3e59,"94ed5fcb-e54f-4e79-9818-d9c006e798df.0",d980a4d3-64d3-4498-81ea-260f339602a5,"97fdadb1-8930-4792-a51e-fd59af2c5cb1",583e35b8-470a-4735-b8b8-a0fcfc94bf09,"aa6a8c8d-aaf9-45a8-8df1-0acd6747775e",9268a0ae-8a75-409e-b1ef-ef178ec2a998,"aa6a8c8d-aaf9-45a8-8df1-0acd6747775e.0",5e4a1975-ff26-43f7-9253-221abaf1bc3c,"aad28daf-f05d-42da-9bf6-51e89ff6a46b.0",03a262f6-be27-4766-9248-8726a64edcd9,"bc8ef2c0-98ae-4f7b-9b02-f680f8384843",12341893-9ea8-4913-872d-29b09877c54e,"bc8ef2c0-98ae-4f7b-9b02-f680f8384843.0",b310cc0d-c34f-4ce9-affa-00801f138624,"ca759f78-0cac-471b-972d-06c9844ad3a2",3b3a3ab0-3139-4e53-ae85-a093e5447b09,"ca759f78-0cac-471b-972d-06c9844ad3a2.0",69588c04-4c3e-4067-bb8e-a8f5029e7cda,"copyinfo",ad99a81d-a397-4902-aca5-cdbac45c8aba,"da854782-15ef-4d88-8ea7-9606248465ef",aa9309eb-fb31-4749-9353-a29bb8719dff,"da854782-15ef-4d88-8ea7-9606248465ef.0",ca3ccaf1-6868-4280-9207-0ff4e7d5c524,"dc252f32-bece-4b36-a154-7e1456abc42b",7cba6c2e-de68-4977-b315-5baa5a9c6cb2,"dc252f32-bece-4b36-a154-7e1456abc42b.0",6bf792f6-e4ae-4c92-81b1-420bf6b271d9,"e5530449-dd2d-4841-821e-38808447be38",b9f8e6e2-ac40-482a-9548-8780b41d7ac6,"e71cb439-e78b-48d4-90ca-3055c334364b",ec673ce1-ceb3-42f2-8738-59b34ad88d4a,"e71cb439-e78b-48d4-90ca-3055c334364b.0",edf8cc87-3cbe-409d-bcef-df27b96b9fd7,"e9fbe396-a267-46f4-8472-0e03be464c2a",fa427f3c-22aa-4f64-a598-5aa6cd97fad3,"e9fbe396-a267-46f4-8472-0e03be464c2a.0",9aea1bb2-ed53-4adf-ad5c-d9484768331b,"eaaa971d-cd10-4a58-ac2c-453a08f3e31c",0e7d87b7-315f-4a29-b111-1ae91f085b32,"eaaa971d-cd10-4a58-ac2c-453a08f3e31c.0",96b530b2-58f9-4941-8a9c-f4cd7340b12b,"root",67f54682-3b34-4768-8dc9-db87edb3bf0a,"version",6419101f-9c56-424e-ba53-e393e5669861,"versions",7eb24afa-f6d1-4260-9322-c6491fbfe472} \ No newline at end of file diff --git "a/src/Utils/UILogToScript/Form/DefaultForm/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/Utils/UILogToScript/Form/DefaultForm/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..0c40b79b --- /dev/null +++ "b/src/Utils/UILogToScript/Form/DefaultForm/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,300 @@ + +//////////////////////////////////////////////////////////////////////////////// +// FORM EVENT HANDLERS +&AtServer +Procedure OnCreateAtServer(Cancel, StandardProcessing) + + // Setting up initial values + Object.SplitScriptIntoProcedures = True; + + Object.ScriptVariant = ? (String(Metadata.ScriptVariant) = "English", "en", "ru"); + + + Items.ScriptVariant.ChoiceList.Add("en", NStr("en = 'English'; ru = 'Английский'")); + Items.ScriptVariant.ChoiceList.Add("ru", NStr("en = 'Russian'; ru = 'Русский'")); + + Items.ObjectSearch.ChoiceList.Add(0, NStr("en = 'By presentation'; ru = 'По представлению'")); + Items.ObjectSearch.ChoiceList.Add(1, NStr("en = 'By name'; ru = 'По имени'")); + Items.ObjectSearch.ChoiceList.Add(2, NStr("en = 'By name and presentation'; ru = 'По имени и представлению'")); + + Items.ConversionVariant.ChoiceList.Add(0, NStr("en = 'Log'; ru = 'Журнал'")); + Items.ConversionVariant.ChoiceList.Add(1, NStr("en = 'Text'; ru = 'Текст'")); + + // { xUnitFor1C - Дополнительные команды + Items.ConversionVariant.ChoiceList.Add(2, NStr("ru = 'Из журнала в обработку-тест для xUnitFor1C'")); + Items.ConversionVariant.ChoiceList.Add(3, NStr("ru = 'Из текста в обработку-тест для xUnitFor1C'")); + // } xUnitFor1C - Дополнительные команды + +EndProcedure + +&AtClient +Procedure OnOpen(Cancel) + + Object.MainProcedureName = ?(Object.ScriptVariant = "en", "TestScenario_", "ТестовыйСценарий_") + ClearDate(Format(CurrentDate(), "DLF=D")); + + Items.SourceData.CurrentPage = ?(Object.ConversionVariant = 0,Items.SourceFiles, Items.SourceTexts); + + // { xUnitFor1C + SetVisibleOptionsForConvertionType(); + // } xUnitFor1C + +EndProcedure + +&AtServer +Procedure FillCheckProcessingAtServer(Cancel, AttributesToCheck) + + // Adding check fields according to the transform variant + If Object.ConversionVariant = 0 Then + + AttributesToCheck.Add("SourceFile"); + AttributesToCheck.Add("ResultFile"); + + Else + + If Not ValueIsFilled(SourceText.GetText()) Then + + Cancel = True; + + NewMessage = New UserMessage(); + NewMessage.Text = NStr("en = 'User action log is not specified.'; ru = 'Поле ""Журнал действий пользователя"" не заполнено.'"); + NewMessage.DataPath = "SourceText"; + NewMessage.Message(); + + EndIf; + + EndIf; + +EndProcedure + +//////////////////////////////////////////////////////////////////////////////// +// CONTROL EVENT HANDLERS +&AtClient +Procedure ConversionVariantOnChange(Item) + + Items.SourceData.CurrentPage = ? (Object.ConversionVariant = 0, Items.SourceFiles, Items.SourceTexts); + + // { xUnitFor1C + SetVisibleOptionsForConvertionType(); + // } xUnitFor1C + +EndProcedure + +&AtClient +Procedure ScriptVariantClearing(Item, StandardProcessing) + + StandardProcessing = False; + +EndProcedure + +&AtClient +Procedure ScriptVariantOnChange(Item) + + Object.MainProcedureName = ? (Object.ScriptVariant = "en", "TestScenario_", "ТестовыйСценарий_") + ClearDate(Format(CurrentDate(), "DLF=D")); + +EndProcedure + +&AtClient +Procedure SourceFileOnStartChoice(Item, ChoiceData, StandardProcessing) + + StandardProcessing = False; + + Dialog = New FileDialog(FileDialogMode.Open); + + Dialog.FullFileName = SourceFile; + Dialog.Title = NStr("en = 'Specify the user action log file.'; ru = 'Укажите файл журнала действий пользователя'"); + Dialog.Filter = NStr("en = 'User action log file (*.uil,*.txt,*.xml)|*.uil;*.txt;*.xml|All files (*.*)|*.*'; ru = 'Файлы журнала действий пользователя (*.uil,*.txt,*.xml)|*.uil;*.txt;*.xml|Все файлы (*.*)|*.*'"); + Dialog.DefaultExt= "uil"; + + If Dialog.Choose() Then + + SourceFile = Dialog.FullFileName; + + If Not ValueIsFilled(ResultFile) Then + + ResultFile = Left(Dialog.FullFileName, StrLen(Dialog.FullFileName) - StrLen(Dialog.DefaultExt)) + NStr("en = 'ModuleText'; ru = 'ТекстМодуля'") + ".txt" + + EndIf; + + EndIf; + +EndProcedure + +&AtClient +Procedure SourceFileOnOpen(Item, StandardProcessing) + + StandardProcessing = False; + + DocumentToView = New TextDocument(); + DocumentToView.Read(SourceFile); + DocumentToView.Show(SourceFile); + +EndProcedure + +&AtClient +Procedure ResultFileOnStartChoice(Item, ChoiceData, StandardProcessing) + + StandardProcessing = False; + + Dialog = New FileDialog(FileDialogMode.Save); + + Dialog.FullFileName = ResultFile; + Dialog.Title = NStr("en = 'Specify the file where the conversion result will be saved.'; ru = 'Укажите файл для сохранения результата преобразования'"); + Dialog.Filter= NStr("en = 'Text files (*.txt)|*.txt|All files (*.*)|*.*'; ru = 'Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*'"); + + // { xUnitFor1C + If Object.ConversionVariant >= 2 Then + Dialog.Filter= NStr("ru = 'Внешние обработки (*.epf)|*.epf|Все файлы (*.*)|*.*'"); + EndIf; + // { xUnitFor1C + + If Dialog.Choose() Then + + ResultFile = Dialog.FullFileName; + + EndIf; + +EndProcedure + +&AtClient +Procedure ResultFileOnOpen(Item, StandardProcessing) + + StandardProcessing = False; + + DocumentToView = New TextDocument(); + DocumentToView.Read(ResultFile); + DocumentToView.Show(ResultFile); + +EndProcedure + +//////////////////////////////////////////////////////////////////////////////// +// AUXILIARY PROCEDURES AND FUNCTIONS +&AtClient +Function IsDigit(Char) + + Code = CharCode (Char); + Return Code >= 48 And Code <= 57; + +EndFunction + +&AtClient +Function IsLetter(Char) + + // All non-literal character codes are considered equal + Return CharCode(Lower(Char)) <> CharCode(Upper(Char)); + +EndFunction + +&AtClient +Function ClearDate(DateToClear) + + Result = ""; + + StringLength = StrLen(DateToClear); + For Index = 1 To StringLength Do + NextChar = Mid(DateToClear,Index, 1); + If IsDigit(NextChar) Then + Result = Result + NextChar; + Else + Result = Result + "_"; + EndIf; + EndDo; + + Return Result; + +EndFunction + +//////////////////////////////////////////////////////////////////////////////// +// Conversion procedures +&AtServer +Function ConvertAtServer(TextToConvert) + + ThisDataProcessor = FormAttributeToValue("Object"); + + // { xUnitFor1C + If Object.ConversionVariant >= 2 Then + StringBase64 = ThisDataProcessor.CreateDataProcessor(TextToConvert); + Return StringBase64; + EndIf; + // } xUnitFor1C + + Return ThisDataProcessor.Convert(TextToConvert); + +EndFunction + +&AtClient +Procedure Convert(Command) + + // Preparing data to be converted + ClearMessages(); + If Not CheckFilling() Then + Return; + EndIf; + + TextToConvert = ""; + If Object.ConversionVariant = 0 Then + + Reader = New TextDocument(); + Reader.Read(SourceFile); + TextToConvert = Reader.GetText(); + Reader = Undefined; + + Else + + TextToConvert = SourceText.GetText(); + + EndIf; + + ConversionResult = ConvertAtServer(TextToConvert); + + If Not ValueIsFilled(ConversionResult) Then + Message(NStr("en = 'Cannot convert data'; ru = 'Не удалось выполнить преобразование'")); + Return; + EndIf; + + If Object.ConversionVariant = 0 Then + + Writer = New TextDocument(); + Writer.AddLine(ConversionResult); + Writer.Write(ResultFile); + Writer.Show(ResultFile); + + // { xUnitFor1C + ElsIf Object.ConversionVariant >= 2 Then + Try + BinaryData = Base64Value(ConversionResult); + BinaryData.Write(ResultFile); + Except + NewMessage = New UserMessage(); + NewMessage.Text = NStr("ru = 'Не удалось сохранить base64 внешнией обработки в файл'; en = 'Can''t save base64 of data processor to file'"); + NewMessage.Message(); + EndTry; + // } xUnitFor1C + + Else + + ResultText.Clear(); + ResultText.AddLine(ConversionResult); + + EndIf; + +EndProcedure + +// { xUnitFor1C + +&AtClient +Procedure SetVisibleOptionsForConvertionType() + + // { xUnitFor1C - Настройка текущей страницы для доп. вариантов преобразования действий пользователя + If Object.ConversionVariant = 2 Then + Items.SourceData.CurrentPage = Items.SourceFiles; + ElsIf Object.ConversionVariant = 3 Then + Items.SourceData.CurrentPage = Items.GenerateFileByText; + EndIf; + StandartChoice = (Object.ConversionVariant < 2); + Object.GenerateClientConnectionScript = StandartChoice; + Items.GenerateClientConnectionScript.Enabled = StandartChoice; + // } xUnitFor1C - Настройка текущей страницы для доп. вариантов преобразования действий пользователя + +EndProcedure + +// } xUnitFor1C \ No newline at end of file diff --git a/src/Utils/UILogToScript/ObjectModule.bsl b/src/Utils/UILogToScript/ObjectModule.bsl new file mode 100644 index 00000000..937002c4 --- /dev/null +++ b/src/Utils/UILogToScript/ObjectModule.bsl @@ -0,0 +1,1282 @@ +Var CreatedInWindowAndFormVariables; +Var Indent; + +Function Convert(TextToConvert) Export + + Reader = New XMLReader(); + Reader.SetString(TextToConvert); + + CreatedProcedures = New Array(); + CreatedInWindowAndFormVariables = New Map(); + + Writer = New TextDocument; + + Reader.MoveToContent(); + Indent = 0; + + // Converting the file + If Reader.NodeType = XMLNodeType.StartElement And + Reader.Name = "uilog" Then + + ConvertIntoScenario(Reader, Writer); + + EndIf; + + Return Writer.GetText(); + +EndFunction + +//////////////////////////////////////////////////////////////////////////////// +// AUXILIARY PROCEDURES AND FUNCTIONS +Procedure AddLine(Writer, OutputString, AddGoTo = False) + + // Adding required number of spaces to the string from the left + Result = ""; + For Index = 1 To Indent Do + Result = Result + " "; + EndDo; + Result = Result + OutputString; + + // Adding the string to the end of the result + Writer.AddLine(Result); + If AddGoTo Then + Writer.AddLine(""); + EndIf; + +EndProcedure + +Procedure InsertLine(Writer, LineNumber, OutputString) + + // Adding required number of spaces to the string from the left + Result = ""; + For Index = 1 To Indent Do + Result = Result + " "; + EndDo; + Result = Result + OutputString; + + // Adding the string to the result + Writer.InsertLine(LineNumber, Result); + +EndProcedure + +Function DoubleQuotationMarks(OutputString) + + // Doubling quotation marks for correctness during export to a file. + Return StrReplace(OutputString, """", """"""); + +EndFunction + +Function SearchValuesForTitle(Title, Name, Val SearchType) + + // Search 'by title' or 'by name and title' + If SearchType = 0 Or SearchType = 2 Then + If Not Title = Undefined Then + Return """" + DoubleQuotationMarks(Title) + """"; + EndIf; + If SearchType = 2 And Name = Undefined Then + Raise NStr("en = 'Specify the title or name of the object'; ru = 'У объекта должны быть заполнены заголовок или имя'"); + EndIf; + Return ""; + // Search 'by name' + ElsIf SearchType = 1 Then + If Name = Undefined Then + Return """" + DoubleQuotationMarks(Title) + """"; + EndIf; + Return ""; + // Search 'by name and title' + Else + Raise NStr("en = 'Unexpected object search type: '; ru = 'Неожиданный тип поиска объектов: '") + ObjectSearch; + EndIf; + +EndFunction + +Function SearchValuesForName(Title, Name, Val SearchType, TitleEmpty) + + If (SearchType = 0 And TitleEmpty) Then + SearchType = 1; + EndIf; + + // Search 'by title' + If SearchType = 0 Then + Return ""; + // Search 'by name' or 'by name and title' + ElsIf SearchType = 1 Or SearchType = 2 Then + If Not Name = Undefined Then + Return """" + Name + """"; + EndIf; + If SearchType = 2 And Title = Undefined Then + Raise NStr("en = 'Specify the title or name of the object'; ru = 'У объекта должны быть заполнены заголовок или имя'"); + EndIf; + Return ""; + Else + Raise NStr("en = 'Unexpected object search type: '; ru = 'Неожиданный тип поиска объектов: '") + ObjectSearch; + EndIf; + +EndFunction + +Function ConvertTitleIntoVariableName(ObjectType, ObjectTitle) + + // Variable name starts with a type name + If ObjectType = "ClientApplicationWindow" Then + + VariableName = ? (ScriptVariant = "en", "ClientWindow", "ОкноПриложения"); + ElsIf ObjectType = "Form" Then + VariableName = ? (ScriptVariant = "en", "Form", "Форма"); + ElsIf ObjectType = "FormField" Then + VariableName = ? (ScriptVariant = "en", "Field", "Поле"); + ElsIf ObjectType = "FormButton" Then + VariableName = ? (ScriptVariant = "en", "Button", "Кнопка"); + ElsIf ObjectType = "FormGroup" Then + VariableName = ? (ScriptVariant = "en", "Group", "Группа"); + ElsIf ObjectType = "FormTable" Then + VariableName = ? (ScriptVariant = "en", "Table", "Таблица"); + ElsIf ObjectType = "FormDecoration" Then + VariableName = ? (ScriptVariant = "en", "Decoration", "Декорация"); + ElsIf ObjectType = "CommandInterface" Then + VariableName = ? (ScriptVariant = "en", "CommandInterface", "КомандныйИнтерфейс"); + ElsIf ObjectType = "CommandInterfaceGroup" Then + VariableName = ? (ScriptVariant = "en", "CommandInterfaceGroup", "ГруппаКомандногоИнтерфейса"); + ElsIf ObjectType = "CommandInterfaceButton" Then + VariableName = ? (ScriptVariant = "en", "CommandInterfaceButton", "КнопкаКомандногоИнтерфейса"); + Else + Raise NStr("en = 'Unknown node: '; ru = 'Неопознанный узел '") + ObjectType; + EndIf; + + // Cutting characters except letters and digits + PreviousCharIsSpace = True; + StringLength = StrLen(ObjectTitle); + For Index = 1 To StringLength Do + NextChar = Mid(ObjectTitle,Index, 1); + If IsLetter(NextChar) Or IsDigit(NextChar) Then + VariableName = VariableName + ? (PreviousCharIsSpace, Upper(NextChar), NextChar); + PreviousCharIsSpace = False; + Else + PreviousCharIsSpace = True; + EndIf; + EndDo; + + Return VariableName; + +EndFunction + +Function IsDigit(Char) + + Code = CharCode(Char); + Return Code >= 48 And Code <= 57; + +EndFunction + +Function IsLetter(Char) + + // All non-literal character codes are considered equal + Return CharCode(Lower(Char)) <> CharCode(Upper(Char)); + +EndFunction + +//////////////////////////////////////////////////////////////////////////////// +// Convert procedures +Procedure ConvertIntoScenario(Reader, Writer) + + If GenerateClientConnectionScript Then + + AddLine(Writer, ? (ScriptVariant = "en", "&AtClient", "&НаКлиенте")); + AddLine(Writer, ? (ScriptVariant = "en", "Procedure ", "Процедура ") + MainProcedureName + "()", True); + + Indent = Indent + 1; + + AddLine(Writer, ? (ScriptVariant = "en", "TestApplication = New TestedApplication();", "ТестовоеПриложение = Новый ТестируемоеПриложение();")); + AddLine(Writer, ? (ScriptVariant = "en", "TimeOut = CurrentDate() + 60;", "ВремяОкончанияОжидания = ТекущаяДата() + 60;")); + AddLine(Writer, ? (ScriptVariant = "en", "Connected = False;", "Подключен = Ложь;")); + AddLine(Writer, ? (ScriptVariant = "en", "ConnectionErrorDescription = """";", "ОписаниеОшибкиСоединения = """";")); + AddLine(Writer, ? (ScriptVariant = "en", "While Not CurrentDate() >= TimeOut Do", "Пока Не ТекущаяДата() >= ВремяОкончанияОжидания Цикл")); + AddLine(Writer, ? (ScriptVariant = "en", " Try", " Попытка")); + AddLine(Writer, ? (ScriptVariant = "en", " TestApplication.Connect();", " ТестовоеПриложение.УстановитьСоединение();")); + AddLine(Writer, ? (ScriptVariant = "en", " Connected = True;", " Подключен = Истина;")); + AddLine(Writer, ? (ScriptVariant = "en", " Break;", " Прервать;")); + AddLine(Writer, ? (ScriptVariant = "en", " Except", " Исключение")); + AddLine(Writer, ? (ScriptVariant = "en", " ConnectionErrorDescription = ErrorDescription();", " ОписаниеОшибкиСоединения = ОписаниеОшибки();")); + AddLine(Writer, ? (ScriptVariant = "en", " EndTry;", " КонецПопытки;")); + AddLine(Writer, ? (ScriptVariant = "en", "EndDo;", "КонецЦикла;")); + AddLine(Writer, ? (ScriptVariant = "en", "If Not Connected Then", "Если Не Подключен Тогда")); + AddLine(Writer, ? (ScriptVariant = "en", " TestApplication = Undefined;", " ТестовоеПриложение = Неопределено;")); + AddLine(Writer, ? (ScriptVariant = "en", " Message(""Connection cannot be established. "" + Chars.LF + ConnectionErrorDescription);", " Сообщить(""Не смогли установить соединение! "" + Символы.ПС + ОписаниеОшибкиСоединения);")); + AddLine(Writer, ? (ScriptVariant = "en", " Return;", " Возврат;")); + AddLine(Writer, ? (ScriptVariant = "en", "EndIf;", "КонецЕсли;"), True); + + Indent = Indent - 1; + + Else + + AddLine(Writer, ? (ScriptVariant = "en", "&AtClient", "&НаКлиенте")); + AddLine(Writer, ? (ScriptVariant = "en", "Procedure ", "Процедура ") + MainProcedureName + ? (ScriptVariant = "en", "(TestApplication)", "(ТестовоеПриложение)"), True); + + EndIf; + + Reader.Read(); + + LocalWriter = Writer; + If SplitScriptIntoProcedures Then + LocalWriter = New TextDocument(); + EndIf; + + While Reader.NodeType <> XMLNodeType.EndElement Do + + If Reader.Name = "ClientApplicationWindow" Then + + LocalProcedureName = ""; + ConvertWindow(Reader, LocalWriter, LocalProcedureName); + + If SplitScriptIntoProcedures Then + + Indent = Indent + 1; + AddLine(Writer, LocalProcedureName + ? (ScriptVariant = "en", "(TestApplication);", "(ТестовоеПриложение);")); + Indent = Indent - 1 ; + + EndIf; + + ElsIf Reader.Name = "Form" Then + + AddLine(Writer, ""); + + Indent = Indent + 1; + + WindowBeingProcessed = ""; + CreatedInWindowAndFormVariables.Insert(WindowBeingProcessed, New Map()); + ConvertForm(Reader, Writer, ? (ScriptVariant = "en", "TestApplication", "ТестовоеПриложение")); + + Indent = Indent - 1; + + Else + + Raise NStr("en = 'Unknown node '; ru = 'Неопознанный узел '") + Reader.Name + ": " + Reader.Value; + + EndIf; + + EndDo; + + If SplitScriptIntoProcedures Then + AddLine(Writer, ""); + EndIf; + AddLine(Writer, ? (ScriptVariant = "en", "EndProcedure", "КонецПроцедуры")); + + If SplitScriptIntoProcedures Then + AddLine(Writer, LocalWriter.GetText()); + EndIf; + +EndProcedure + +Procedure ConvertWindow(Reader, Writer, LocalProcedureName) + + ObjectType = Reader.Name; + ObjectTitle = ""; + IsMainWindow = False; + While Reader.ReadAttribute() Do + If Reader.Name = "caption" Then + ObjectTitle = Reader.Value; + ElsIf Reader.Name = "isMain" Then + IsMainWindow = Boolean(Reader.Value); + EndIf; + EndDo; + + VariableName = ConvertTitleIntoVariableName(ObjectType, ? (IsMainWindow, ? (ScriptVariant = "en", "Main", "Основное"), ObjectTitle)); + + WindowBeingProcessed = VariableName; + + If SplitScriptIntoProcedures Then + LineCountBeforeProcess = Writer.LineCount(); + EndIf; + + Indent = Indent + 1; + + If CreatedInWindowAndFormVariables.Get(WindowBeingProcessed) = Undefined Then + + CreatedInWindowAndFormVariables.Insert(WindowBeingProcessed, New Map()); + + If IsMainWindow Then + AddLine(Writer, ""); + AddLine(Writer, VariableName + ? (ScriptVariant = "en", " = Undefined;", " = Неопределено;")); + AddLine(Writer, ? (ScriptVariant = "en", "ClientWindowsOfApplicationBeingTested = TestApplication.GetChildObjects();", "КлиентсткиеОкнаТестируемогоПриложения = ТестовоеПриложение.ПолучитьПодчиненныеОбъекты();")); + AddLine(Writer, ? (ScriptVariant = "en", "For Each WindowBeingTested In ClientWindowsOfApplicationBeingTested Do", "Для Каждого ТестируемоеОкно Из КлиентсткиеОкнаТестируемогоПриложения Цикл")); + AddLine(Writer, ? (ScriptVariant = "en", " If WindowBeingTested.IsMain Then", " Если ТестируемоеОкно.Основное Тогда")); + AddLine(Writer, " " + VariableName + ? (ScriptVariant = "en", " = WindowBeingTested;", " = ТестируемоеОкно;")); + AddLine(Writer, ? (ScriptVariant = "en", " Break;", " Прервать;")); + AddLine(Writer, ? (ScriptVariant = "en", " EndIf;", " КонецЕсли;")); + AddLine(Writer, ? (ScriptVariant = "en", "EndDo;", "КонецЦикла;")); + Else + + AddLine(Writer, VariableName + ? (ScriptVariant = "en", " = TestApplication.FindObject(Type(""TestedClientApplicationWindow""), """, " = ТестовоеПриложение.НайтиОбъект(Тип(""ТестируемоеОкноКлиентскогоПриложения""), """) + DoubleQuotationMarks(ObjectTitle) + """, , 30);"); + + EndIf; + + EndIf; + WindowClosed = False; + + Reader.Read(); + While Reader.NodeType <> XMLNodeType.EndElement Do + + If Reader.Name = "Form" Then + ConvertForm(Reader, Writer, VariableName); + ElsIf Reader.Name = "CommandInterface" Then + ConvertWindowCommandInterface(Reader, Writer, VariableName); + ElsIf Not ConvertCommand(Reader, Writer, VariableName) Then + Raise NStr("en = 'Unknown node '; ru = 'Неопознанный узел '") + Reader.Name + ": " + Reader.Value; + EndIf; + + EndDo; + + Indent = Indent - 1; + Reader.Read(); + + If WindowClosed Or SplitScriptIntoProcedures Then + CreatedInWindowAndFormVariables.Delete(WindowBeingProcessed); + EndIf; + + If SplitScriptIntoProcedures Then + + ProcedureCount = 0; + While True Do + LocalProcedureName = VariableName + LastProcessedControl + LastProcessedCommand + ? (ProcedureCount = 0, "", ProcedureCount); + Prologue = ? (ScriptVariant = "en", "Procedure ", "Процедура ") + LocalProcedureName + ? (ScriptVariant = "en", "(TestApplication)", "(ТестовоеПриложение)"); + If CreatedProcedures.Find(Prologue) = Undefined Then + CreatedProcedures.Add(Prologue); + Break; + EndIf; + ProcedureCount = ProcedureCount + 1; + EndDo; + + InsertLine(Writer, LineCountBeforeProcess, Prologue); + InsertLine(Writer, LineCountBeforeProcess, ? (ScriptVariant = "en", "&AtClient", "&НаКлиенте")); + InsertLine(Writer, LineCountBeforeProcess, ""); + + AddLine(Writer, ? (ScriptVariant = "en", "EndProcedure", "КонецПроцедуры"), True); + + EndIf; + +EndProcedure + +Procedure ConvertWindowCommandInterface(Reader, Writer, ParentVariable) + + ObjectType = Reader.Name; + ObjectTitle = ""; + + While Reader.ReadAttribute() Do + If Reader.Name = "title" Then + ObjectTitle = Reader.Value; + EndIf; + EndDo; + + LastProcessedControl = ConvertTitleIntoVariableName(ObjectType, ObjectTitle); + VariableName = ParentVariable + "CommandInterface"; + + + WindowForms = CreatedInWindowAndFormVariables.Get(WindowBeingProcessed); + If WindowForms.Get(FormBeingProcessed) = Undefined Then + + WindowForms.Insert(FormBeingProcessed, New Array()); + + AddLine(Writer, VariableName + " = " + ParentVariable + ? (ScriptVariant = "en", ".GetCommandInterface();", ".ПолучитьКомандныйИнтерфейс();")); + + EndIf; + + Reader.Read(); + + While Reader.NodeType <> XMLNodeType.EndElement Do + If Reader.Name = "CommandInterfaceButton" Then + ConvertCommandInterfaceButton(Reader, Writer, VariableName); + ElsIf Reader.Name = "CommandInterfaceGroup" Then + ConvertCommandInterfaceGroup(Reader, Writer, VariableName); + ElsIf Not ConvertCommand(Reader, Writer, VariableName) Then + Raise NStr("en = 'Unknown node '; ru = 'Неопознанный узел '") + Reader.Name + ": " + Reader.Value; + EndIf; + + EndDo; + + Reader.Read(); + +EndProcedure + +Procedure ConvertCommandInterfaceButton(Reader, Writer, ParentVariable) + + ObjectType = Reader.Name; + ObjectTitle = ""; + + While Reader.ReadAttribute() Do + If Reader.Name = "title" Then + ObjectTitle = Reader.Value; + EndIf; + EndDo; + + LastProcessedControl = ConvertTitleIntoVariableName(ObjectType, ObjectTitle); + VariableName = ? (SplitScriptIntoProcedures, "", ParentVariable) + LastProcessedControl; + + LineCountBeforeProcess = Writer.LineCount(); + + Reader.Read(); + + CommandConverted = False; + While Reader.NodeType <> XMLNodeType.EndElement Do + + If ConvertCommand(Reader, Writer, VariableName) Then + CommandConverted = True; + Else + Raise NStr("en = 'Unknown node '; ru = 'Неопознанный узел '") + Reader.Name + ": " + Reader.Value; + EndIf; + + EndDo; + + If CommandConverted Or GetFullHierarchy Then + InsertLine(Writer, LineCountBeforeProcess + 1, VariableName + " = " + ParentVariable + ? (ScriptVariant = "en", ".FindObject(Type(""TestedCommandInterfaceButton""), """, ".НайтиОбъект(Тип(""ТестируемаяКнопкаКомандногоИнтерфейса""), """) + DoubleQuotationMarks(ObjectTitle) + """);"); + EndIf; + + Reader.Read(); + +EndProcedure + +Procedure ConvertCommandInterfaceGroup(Reader, Writer, ParentVariable) + + ObjectType = Reader.Name; + ObjectTitle = ""; + + While Reader.ReadAttribute() Do + If Reader.Name = "title" Then + ObjectTitle = Reader.Value; + EndIf; + EndDo; + + LastProcessedControl = ConvertTitleIntoVariableName(ObjectType, ObjectTitle); + VariableName = ? (SplitScriptIntoProcedures, "", ParentVariable) + LastProcessedControl; + + LineCountBeforeProcess = Writer.LineCount(); + + Reader.Read(); + + While Reader.NodeType <> XMLNodeType.EndElement Do + + If Reader.Name = "CommandInterfaceButton" Then + ConvertCommandInterfaceButton(Reader, Writer, ? (GetFullHierarchy, VariableName, ParentVariable)); + ElsIf Reader.Name = "CommandInterfaceGroup" Then + ConvertCommandInterfaceGroup(Reader, Writer, ? (GetFullHierarchy, VariableName, ParentVariable)); + Else + Raise NStr("en = 'Unknown node '; ru = 'Неопознанный узел '") + Reader.Name + ": " + Reader.Value; + EndIf; + + EndDo; + + If GetFullHierarchy Then + InsertLine(Writer, LineCountBeforeProcess + 1, VariableName + " = " + ParentVariable + ? (ScriptVariant = "en", ".FindObject(Type(""TestedCommandInterfaceGroup""), """, ".НайтиОбъект(Тип(""ТестируемаяГруппаКомандногоИнтерфейса""), """) + DoubleQuotationMarks(ObjectTitle) + """);"); + EndIf; + + Reader.Read(); + +EndProcedure + +Procedure ConvertForm(Reader, Writer, ParentVariable) + + ObjectType = Reader.Name; + ObjectTitle = ""; + + While Reader.ReadAttribute() Do + If Reader.Name = "title" Then + ObjectTitle = Reader.Value; + EndIf; + EndDo; + + LastProcessedControl = ConvertTitleIntoVariableName(ObjectType, ObjectTitle); + VariableName = ParentVariable + LastProcessedControl; + FormBeingProcessed = VariableName; + + WindowForms = CreatedInWindowAndFormVariables.Get(WindowBeingProcessed); + If WindowForms.Get(FormBeingProcessed) = Undefined Then + + WindowForms.Insert(FormBeingProcessed, New Array()); + + AddLine(Writer, VariableName + " = " + ParentVariable + ? (ScriptVariant = "en", ".FindObject(Type(""TestedForm""), """, ".НайтиОбъект(Тип(""ТестируемаяФорма""), """) + DoubleQuotationMarks(ObjectTitle) + """);"); + + EndIf; + + Reader.Read(); + + While Reader.NodeType <> XMLNodeType.EndElement Do + If Reader.Name = "FormField" Then + ConvertField(Reader, Writer, VariableName); + ElsIf Reader.Name = "FormTable" Then + ConvertTable(Reader, Writer, VariableName); + ElsIf Reader.Name = "FormDecoration" Then + ConvertDecoration(Reader, Writer, VariableName); + ElsIf Reader.Name = "FormButton" Then + ConvertButton(Reader, Writer, VariableName); + ElsIf Reader.Name = "FormGroup" Then + ConvertGroup(Reader, Writer, VariableName); + ElsIf Not ConvertCommand(Reader, Writer, VariableName) Then + Raise NStr("en = 'Unknown node '; ru = 'Неопознанный узел '") + Reader.Name + ": " + Reader.Value; + EndIf; + + EndDo; + + Reader.Read(); + +EndProcedure + +Procedure ConvertTable(Reader, Writer, ParentVariable) + + ObjectType = Reader.Name; + ObjectName = Undefined; + ObjectTitle = Undefined; + While Reader.ReadAttribute() Do + If Reader.Name = "name" Then + ObjectName = Reader.Value; + ElsIf Reader.Name = "title" Then + ObjectTitle = Reader.Value; + EndIf; + EndDo; + + LastProcessedControl = ConvertTitleIntoVariableName(ObjectType, ? (ObjectTitle = Undefined, ObjectName, ObjectTitle)); + + VariableName = ? (SplitScriptIntoProcedures, "", ParentVariable) + LastProcessedControl; + + LineCountBeforeProcess = Writer.LineCount(); + Reader.Read(); + + CommandConverted = False; + While Reader.NodeType <> XMLNodeType.EndElement Do + + If Reader.Name = "FormField" Then + ConvertField(Reader, Writer, ? (GetFullHierarchy, VariableName, ParentVariable)); + + ElsIf Reader.Name = "FormGroup" Then + ConvertGroup(Reader, Writer, ? (GetFullHierarchy, VariableName, ParentVariable)); + ElsIf ConvertCommand(Reader, Writer, VariableName, ObjectType) Then + CommandConverted = True; + Else + Raise NStr("en = 'Unknown node '; ru = 'Неопознанный узел '") + Reader.Name + ": " + Reader.Value; + EndIf; + + EndDo; + + If CommandConverted Or GetFullHierarchy Then + ConvertFieldInsertFindObjectLine(LineCountBeforeProcess, ObjectName, ObjectTitle, ParentVariable, VariableName, Writer, "TestedFormTable", "ТестируемаяТаблицаФормы"); + EndIf; + + Reader.Read(); + +EndProcedure + +Procedure ConvertField(Reader, Writer, ParentVariable) + + ObjectType = Reader.Name; + ObjectName = Undefined; + ObjectTitle = Undefined; + While Reader.ReadAttribute() Do + If Reader.Name = "name" Then + ObjectName = Reader.Value; + ElsIf Reader.Name = "title" Then + ObjectTitle = Reader.Value; + EndIf; + EndDo; + + LastProcessedControl = ConvertTitleIntoVariableName(ObjectType, ? (ObjectTitle = Undefined, ObjectName, ObjectTitle)); + VariableName = ? (SplitScriptIntoProcedures, "", ParentVariable) + LastProcessedControl; + + LineCountBeforeProcess = Writer.LineCount(); + + Reader.Read(); + + CommandConverted = False; + While Reader.NodeType <> XMLNodeType.EndElement Do + + If Reader.Name = "FormField" Then + ConvertField(Reader, Writer, ? (GetFullHierarchy, VariableName, ParentVariable)); + ElsIf ConvertCommand(Reader, Writer, VariableName) Then + CommandConverted = True; + Else + Raise NStr("en = 'Unknown node'; ru = 'Неопознанный узел '") + Reader.Name + ": " + Reader.Value; + EndIf; + + EndDo; + + If CommandConverted Or GetFullHierarchy Then + ConvertFieldInsertFindObjectLine(LineCountBeforeProcess, ObjectName, ObjectTitle, ParentVariable, VariableName, Writer, "TestedFormField", "ТестируемоеПолеФормы"); + EndIf; + + Reader.Read(); + +EndProcedure + +Procedure ConvertFieldInsertFindObjectLine(LineCountBeforeProcess, ObjectName, ObjectTitle, ParentVariable, VariableName, Writer, TypeNameEn, TypeNameRu) + + TitleValue = SearchValuesForTitle(ObjectTitle, ObjectName, ObjectSearch); + NameValue = SearchValuesForName(ObjectTitle, ObjectName, ObjectSearch, TitleValue = ""); + InsertLine(Writer, LineCountBeforeProcess + 1, + VariableName + + " = " + + ParentVariable + + ? (ScriptVariant = "en", ".FindObject(Type(""" + TypeNameEn + """), ", ".НайтиОбъект(Тип(""" + TypeNameRu + """), ") + + ? (TitleValue <> "" Or NameValue <> "", TitleValue, "") + + ? (NameValue <> "", ", " + NameValue, "") + + ");"); + +EndProcedure + +Procedure ConvertButton(Reader, Writer, ParentVariable) + + ObjectType = Reader.Name; + ObjectName = Undefined; + ObjectTitle = Undefined; + While Reader.ReadAttribute() Do + If Reader.Name = "name" Then + ObjectName = Reader.Value; + ElsIf Reader.Name = "title" Then + ObjectTitle = Reader.Value; + EndIf; + EndDo; + + LastProcessedControl = ConvertTitleIntoVariableName(ObjectType, ? (ObjectTitle = Undefined, ObjectName, ObjectTitle)); + VariableName = ? (SplitScriptIntoProcedures, "", ParentVariable) + LastProcessedControl; + + LineCountBeforeProcess = Writer.LineCount(); + + Reader.Read(); + + CommandConverted = False; + While Reader.NodeType <> XMLNodeType.EndElement Do + + If ConvertCommand(Reader, Writer, VariableName) Then + CommandConverted = True; + Else + Raise NStr("en = 'Unknown node '; ru = 'Неопознанный узел '") + Reader.Name + ": " + Reader.Value; + EndIf; + + EndDo; + + If CommandConverted Or GetFullHierarchy Then + ConvertFieldInsertFindObjectLine(LineCountBeforeProcess, ObjectName, ObjectTitle, ParentVariable, VariableName, Writer, "TestedFormButton", "ТестируемаяКнопкаФормы"); + EndIf; + + Reader.Read(); + +EndProcedure + +Procedure ConvertDecoration(Reader, Writer, ParentVariable) + + ObjectType = Reader.Name; + ObjectName = Undefined; + ObjectTitle = Undefined; + While Reader.ReadAttribute() Do + If Reader.Name = "name" Then + ObjectName = Reader.Value; + ElsIf Reader.Name = "title" Then + ObjectTitle = Reader.Value; + EndIf; + EndDo; + + LastProcessedControl = ConvertTitleIntoVariableName(ObjectType, ? (ObjectTitle = Undefined, ObjectName, ObjectTitle)); + VariableName = ? (SplitScriptIntoProcedures, "", ParentVariable) + LastProcessedControl; + + LineCountBeforeProcess = Writer.LineCount(); + + Reader.Read(); + + CommandConverted = False; + While Reader.NodeType <> XMLNodeType.EndElement Do + + If ConvertCommand(Reader, Writer, VariableName) Then + CommandConverted = True; + Else + Raise NStr("en = 'Unknown node '; ru = 'Неопознанный узел '") + Reader.Name + ": " + Reader.Value; + EndIf; + + EndDo; + + If CommandConverted Or GetFullHierarchy Then + ConvertFieldInsertFindObjectLine(LineCountBeforeProcess, ObjectName, ObjectTitle, ParentVariable, VariableName, Writer, "TestedFormDecoration", "ТестируемаяДекорацияФормы"); + EndIf; + + Reader.Read(); + +EndProcedure + +Procedure ConvertGroup(Reader, Writer, ParentVariable) + + ObjectType = Reader.Name; + ObjectName = Undefined; + ObjectTitle = Undefined; + While Reader.ReadAttribute() Do + If Reader.Name = "name" Then + ObjectName = Reader.Value; + ElsIf Reader.Name = "title" Then + ObjectTitle = Reader.Value; + EndIf; + EndDo; + + LastProcessedControl = ConvertTitleIntoVariableName(ObjectType, ? (ObjectTitle = Undefined, ObjectName, ObjectTitle)); + VariableName = ? (SplitScriptIntoProcedures, "", ParentVariable) + LastProcessedControl; + + LineCountBeforeProcess = Writer.LineCount(); + + Reader.Read(); + + CommandConverted = False; + While Reader.NodeType <> XMLNodeType.EndElement Do + + If Reader.Name = "FormField" Then + ConvertField(Reader, Writer, ? (GetFullHierarchy, VariableName, ParentVariable)); + ElsIf Reader.Name = "FormTable" Then + ConvertTable(Reader, Writer, ? (GetFullHierarchy, VariableName, ParentVariable)); + ElsIf Reader.Name = "FormDecoration" Then + ConvertDecoration(Reader, Writer, ? (GetFullHierarchy, VariableName, ParentVariable)); + ElsIf Reader.Name = "FormButton" Then + ConvertButton(Reader, Writer, ? (GetFullHierarchy, VariableName, ParentVariable)); + ElsIf Reader.Name = "FormGroup" Then + ConvertGroup(Reader, Writer, ? (GetFullHierarchy, VariableName, ParentVariable)); + ElsIf ConvertCommand(Reader, Writer, VariableName, ObjectType) Then + CommandConverted = True; + Else + Raise NStr("en = 'Unknown node '; ru = 'Неопознанный узел '") + Reader.Name + ": " + Reader.Value; + EndIf; + + EndDo; + + If CommandConverted Or GetFullHierarchy Then + ConvertFieldInsertFindObjectLine(LineCountBeforeProcess, ObjectName, ObjectTitle, ParentVariable, VariableName, Writer, "TestedFormGroup", "ТестируемаяГруппаФормы"); + EndIf; + + Reader.Read(); + +EndProcedure + +Function ConvertCommand(Reader, Writer, VariableName, ObjectType = "") + + If Reader.Name = "activate" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".Activate();", ".Активизировать();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "Activate", "Активизировать"); + Reader.Read(); + + ElsIf Reader.Name = "inputText" Then + OutputText = ""; + While Reader.ReadAttribute() Do + If Reader.Name = "text" Then + OutputText = Reader.Value; + Else + Raise NStr("en = 'Unknown attribute '; ru = 'Неопознанный атрибут '") + Reader.Name + ": " + Reader.Value; + EndIf; + EndDo; + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".InputText(""", ".ВвестиТекст(""") + DoubleQuotationMarks(OutputText) + """);", True); + LastProcessedCommand = ? (ScriptVariant = "en", "InputText", "ВвестиТекст"); + Reader.Read(); + + ElsIf Reader.Name = "click" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".Click();", ".Нажать();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "Click", "Нажать"); + Reader.Read(); + + ElsIf Reader.Name = "clear" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".Clear();", ".Очистить();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "Clear", "Очистить"); + Reader.Read(); + + ElsIf Reader.Name = "create" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".Create();", ".Создать();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "Create", "Создать"); + Reader.Read(); + + ElsIf Reader.Name = "cancel" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".CancelEdit();", ".ОтменитьРедактирование();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "CancelEdit", "ОтменитьРедактирование"); + Reader.Read(); + + ElsIf Reader.Name = "open" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".Open();", ".Открыть();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "Open", "Открыть"); + Reader.Read(); + + ElsIf Reader.Name = "startChoosing" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".StartChoosing();", ".Выбрать();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "StartChoosing", "Выбрать"); + Reader.Read(); + + ElsIf Reader.Name = "startChoosingFromChoiceList" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".StartChoosingFromChoiceList();", ".ВыбратьИзСпискаВыбора();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "StartChoosingFromChoiceList", "ВыбратьИзСпискаВыбора"); + Reader.Read(); + + ElsIf Reader.Name = "executeChoiceFromChoiceList" Then + Presentation = ""; + While Reader.ReadAttribute() Do + If Reader.Name = "presentation" Then + Presentation = Reader.Value; + Else + Raise NStr("en = 'Unknown attribute '; ru = 'Неопознанный атрибут '") + Reader.Name + ": " + Reader.Value; + EndIf; + EndDo; + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".WaitForDropDownListGeneration();", ".ОжидатьФормированияВыпадающегоСписка();"), True); + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".ExecuteChoiceFromChoiceList(""", ".ВыполнитьВыборИзСпискаВыбора(""") + DoubleQuotationMarks(Presentation) + """);", True); + LastProcessedCommand = ? (ScriptVariant = "en", "ExecuteChoiceFromChoiceList", "ВыполнитьВыборИзСпискаВыбора"); + Reader.Read(); + + ElsIf Reader.Name = "openDropList" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".OpenDropList();", ".ОткрытьВыпадающийСписок();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "OpenDropList", "ОткрытьВыпадающийСписок"); + Reader.Read(); + + ElsIf Reader.Name = "closeDropList" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".CloseDropList();", ".ЗакрытьВыпадающийСписок();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "CloseDropList", "ЗакрытьВыпадающийСписок"); + Reader.Read(); + + ElsIf Reader.Name = "executeChoiceFromDropList" Then + Presentation = ""; + While Reader.ReadAttribute() Do + If Reader.Name = "presentation" Then + Presentation = Reader.Value; + Else + Raise NStr("en = 'Unknown attribute '; ru = 'Неопознанный атрибут '") + Reader.Name + ": " + Reader.Value; + EndIf; + EndDo; + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".WaitForDropDownListGeneration();", ".ОжидатьФормированияВыпадающегоСписка();"), True); + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".ExecuteChoiceFromDropList(""", ".ВыполнитьВыборИзВыпадающегоСписка(""") + DoubleQuotationMarks(Presentation) + """);", True); + LastProcessedCommand = ? (ScriptVariant = "en", "ExecuteChoiceFromDropList", "ВыполнитьВыборИзВыпадающегоСписка"); + Reader.Read(); + + ElsIf Reader.Name = "increaseValue" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".IncreaseValue();", ".УвеличитьЗначение();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "IncreaseValue", "УвеличитьЗначение"); + Reader.Read(); + + ElsIf Reader.Name = "decreaseValue" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".DecreaseValue();", ".УменьшитьЗначение();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "DecreaseValue", "УменьшитьЗначение"); + Reader.Read(); + + ElsIf Reader.Name = "setCheck" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".SetCheck();", ".УстановитьОтметку();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "SetCheck", "УстановитьОтметку"); + Reader.Read(); + + ElsIf Reader.Name = "selectOption" Then + Presentation = ""; + While Reader.ReadAttribute() Do + If Reader.Name = "presentation" Then + Presentation = Reader.Value; + Else + Raise NStr("en = 'Unknown attribute '; ru = 'Неопознанный атрибут '") + Reader.Name + ": " + Reader.Value; + EndIf; + EndDo; + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".SelectOption(""", ".ВыбратьВариант(""") + DoubleQuotationMarks(Presentation) + """);", True); + LastProcessedCommand = ? (ScriptVariant = "en", "SelectOption", "ВыбратьВариант"); + Reader.Read(); + + ElsIf Reader.Name = "gotoValue" Then + Presentation = ""; + While Reader.ReadAttribute() Do + If Reader.Name = "value" Then + Presentation = Reader.Value; + Else + Raise NStr("en = 'Unknown attribute '; ru = 'Неопознанный атрибут '") + Reader.Name + ": " + Reader.Value; + EndIf; + EndDo; + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".GotoValue(""", ".ПерейтиКЗначению(""") + DoubleQuotationMarks(Presentation) + """);", True); + LastProcessedCommand = ? (ScriptVariant = "en", "GotoValue", "ПерейтиКЗначению"); + Reader.Read(); + + ElsIf Reader.Name = "gotoNextMonth" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".GotoNextMonth();", ".ПерейтиНаМесяцВперед();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "GotoNextMonth", "ПерейтиНаМесяцВперед"); + Reader.Read(); + + ElsIf Reader.Name = "gotoPreviousMonth" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".GotoPreviousMonth();", ".ПерейтиНаМесяцНазад();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "GotoPreviousMonth", "ПерейтиНаМесяцНазад"); + Reader.Read(); + + ElsIf Reader.Name = "gotoNextYear" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".GotoNextYear();", ".ПерейтиНаГодВперед();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "GotoNextYear", "ПерейтиНаГодВперед"); + Reader.Read(); + + ElsIf Reader.Name = "gotoPreviousYear" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".GotoPreviousYear();", ".ПерейтиНаГодНазад();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "GotoPreviousYear", "ПерейтиНаГодНазад"); + Reader.Read(); + + ElsIf Reader.Name = "gotoDate" Then + Presentation = ""; + While Reader.ReadAttribute() Do + If Reader.Name = "date" Then + Presentation = Reader.Value; + Else + Raise NStr("en = 'Unknown attribute '; 'ru = 'Неопознанный атрибут '") + Reader.Name + ": " + Reader.Value; + EndIf; + EndDo; + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".GotoDate(XMLValue(Type(""Date""), """, ".ПерейтиКДате(XMLЗначение(Тип(""Дата""), """) + Presentation + """));", True); + LastProcessedCommand = ? (ScriptVariant = "en", "GoToDate", "ПерейтиКДате"); + Reader.Read(); + + ElsIf Reader.Name = "setCurrentArea" Then + Area = ""; + While Reader.ReadAttribute() Do + If Reader.Name = "area" Then + Area = Reader.Value; + Else + Raise NStr("en = 'Unknown attribute '; ru = 'Неопознанный атрибут '") + Reader.Name + ": " + Reader.Value; + EndIf; + EndDo; + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".SetCurrentArea(""", ".УстановитьТекущуюОбласть(""") + Area + """);", True); + LastProcessedCommand = ? (ScriptVariant = "en", "SetCurrentArea", "УстановитьТекущуюОбласть"); + Reader.Read(); + + ElsIf Reader.Name = "beginEditingCurrentArea" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".BeginEditingCurrentArea();", ".НачатьРедактированиеТекущейОбласти();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "BeginEditingCurrentArea", "НачатьРедактированиеТекущейОбласти"); + Reader.Read(); + + ElsIf Reader.Name = "finishEditingCurrentArea" Then + CancelFlag = ""; + While Reader.ReadAttribute() Do + If Reader.Name = "cancel" Then + CancelFlag = Reader.Value; + Else + Raise NStr("en = 'Unknown attribute '; ru = 'Неопознанный атрибут '") + Reader.Name + ": " + Reader.Value; + EndIf; + EndDo; + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".EndEditingCurrentArea(", ".ЗавершитьРедактированиеТекущейОбласти(") + CancelFlag + ");", True); + LastProcessedCommand = ? (ScriptVariant = "en", "EndEditingCurrentArea", "ЗавершитьРедактированиеТекущейОбласти"); + Reader.Read(); + + ElsIf Reader.Name = "gotoNextItem" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".GotoNextItem();", ".ПерейтиКСледующемуЭлементу();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "GotoNextItem", "ПерейтиКСледующемуЭлементу"); + Reader.Read(); + + ElsIf Reader.Name = "gotoPreviousItem" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".GotoPreviousItem();", ".ПерейтиКПредыдущемуЭлементу();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "GotoPreviousItem", "ПерейтиКПредыдущемуЭлементу"); + Reader.Read(); + + ElsIf Reader.Name = "goOneLevelUp" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".GoOneLevelUp();", ".ПерейтиНаУровеньВверх();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "GoOneLevelUp", "ПерейтиНаУровеньВверх"); + Reader.Read(); + + ElsIf Reader.Name = "goOneLevelDown" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".GoOneLevelDown();", ".ПерейтиНаУровеньВниз();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "GoOneLevelDown", "ПерейтиНаУровеньВниз"); + Reader.Read(); + + ElsIf Reader.Name = "gotoNextRow" Then + ConvertCommandPartGotoSpecificRow(Reader, VariableName, Writer, "GotoNextRow", "ПерейтиКСледующейСтроке"); + + ElsIf Reader.Name = "gotoPreviousRow" Then + ConvertCommandPartGotoSpecificRow(Reader, VariableName, Writer, "GotoPreviousRow", "ПерейтиКПредыдущейСтроке"); + + ElsIf Reader.Name = "gotoFirstRow" Then + ConvertCommandPartGotoSpecificRow(Reader, VariableName, Writer, "GotoFirstRow", "ПерейтиКПервойСтроке"); + + ElsIf Reader.Name = "gotoLastRow" Then + ConvertCommandPartGotoSpecificRow(Reader, VariableName, Writer, "GotoLastRow", "ПерейтиКПоследнейСтроке"); + + ElsIf Reader.Name = "gotoRow" Then + Direction = ""; + While Reader.ReadAttribute() Do + If Reader.Name = "direction" Then + Direction = ? (ScriptVariant = "en", ? (Reader.Value = "up", "RowGotoDirection.Up", "RowGotoDirection.Down"), ? (Reader.Value = "up", "НаправлениеПереходаКСтроке.Вверх", "НаправлениеПереходаКСтроке.Вниз")); + Else + Raise NStr("en = 'Unknown attribute '; ru = 'Неопознанный атрибут '") + Reader.Name + ": " + Reader.Value; + EndIf; + EndDo; + Reader.Read(); + ConvertCommandPartRowDescriptionPartInt(Reader, Writer); + AddLine(Writer, + VariableName + ? (ScriptVariant = "en", ".GotoRow(RowDescription", ".ПерейтиКСтроке(ОписаниеСтроки") + ? (Direction = "", "", ", " + Direction) + ");", + True); + LastProcessedCommand = ? (ScriptVariant = "en", "GotoRow", "ПерейтиКСтроке"); + + ElsIf Reader.Name = "setOrder" Then + ColumnTitle = ""; + While Reader.ReadAttribute() Do + If Reader.Name = "columnTitle" Then + ColumnTitle = Reader.Value; + Else + Raise NStr("en = 'Unknown attribute '; ru = 'Неопознанный атрибут '") + Reader.Name + ": " + Reader.Value; + EndIf; + EndDo; + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".SetOrder(""", ".УстановитьПорядок(""") + DoubleQuotationMarks(ColumnTitle) + """);", True); + LastProcessedCommand = ? (ScriptVariant = "en", "SetOrder", "УстановитьПорядок"); + Reader.Read(); + + ElsIf Reader.Name = "choose" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".Choose();", ".Выбрать();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "Choose", "Выбрать"); + Reader.Read(); + + ElsIf Reader.Name = "selectAllRows" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".SelectAllRows();", ".ВыделитьВсеСтроки();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "SelectAllRows", "ВыделитьВсеСтроки"); + Reader.Read(); + + ElsIf Reader.Name = "changeRow" Then + AddLine(Writer, VariableName +? (ScriptVariant = "en", ".ChangeRow();", ".ИзменитьСтроку();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "ChangeRow", "ИзменитьСтроку"); + Reader.Read(); + + ElsIf Reader.Name = "endEditRow" Then + CancelFlag = ""; + While Reader.ReadAttribute() Do + If Reader.Name = "cancel" Then + CancelFlag = Reader.Value; + Else + Raise NStr("en = 'Unknown attribute '; ru = 'Неопознанный атрибут '") + Reader.Name + ": " + Reader.Value; + EndIf; + EndDo; + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".EndEditRow(", ".ЗакончитьРедактированиеСтроки(") + CancelFlag + ");", True); + LastProcessedCommand = ? (ScriptVariant = "en", "EndEditRow", "ЗакончитьРедактированиеСтроки"); + Reader.Read(); + + ElsIf Reader.Name = "addRow" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".AddRow();", ".ДобавитьСтроку();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "AddRow", "ДобавитьСтроку"); + Reader.Read(); + + ElsIf Reader.Name = "deleteRow" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".DeleteRow();", ".УдалитьСтроку();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "DeleteRow", "УдалитьСтроку"); + Reader.Read(); + + ElsIf Reader.Name = "switchRowDeleteMark" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".SwitchRowDeleteMark();", ".ПереключитьПометкуУдаленияСтроки();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "SwitchRowDeleteMark", "ПереключитьПометкуУдаленияСтроки"); + Reader.Read(); + + ElsIf Reader.Name = "expand" Then + If ObjectType = "FormGroup" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".Expand();", ".Развернуть();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "Expand", "Развернуть"); + Reader.Read(); + Else + ConvertCommandPartRowDescription(Reader, VariableName, Writer, "Expand", "Развернуть"); + Endif; + LastProcessedCommand = ? (ScriptVariant = "en", "Expand", "Развернуть"); + + ElsIf Reader.Name = "collapse" Then + If ObjectType = "FormGroup" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".Collapse();", ".Свернуть();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "Collapse", "Свернуть"); + Reader.Read(); + Else + ConvertCommandPartRowDescription(Reader, VariableName, Writer, "Collapse", "Свернуть"); + EndIf; + LastProcessedCommand = ? (ScriptVariant = "en", "Collapse", "Свернуть"); + + ElsIf Reader.Name = "close" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".Close();", ".Закрыть();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "Close", "Закрыть"); + WindowClosed = True; + Reader.Read(); + + ElsIf Reader.Name = "chooseUserMessage" Then + MessageText = ""; + While Reader.ReadAttribute() Do + If Reader.Name = "messageText" Then + MessageText = Reader.Value; + Else + Raise NStr("en = 'Unknown attribute '; ru = 'Неопознанный атрибут '") + Reader.Name + ": " + Reader.Value; + EndIf; + EndDo; + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".ChooseUserMessage(""", ".ВыбратьСообщениеПользователю(""") + MessageText + """);", True); + LastProcessedCommand = ? (ScriptVariant = "en", "ChooseUserMessage", "ВыбратьСообщениеПользователю"); + Reader.Read(); + + ElsIf Reader.Name = "closeUserMessagesPanel" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".CloseUserMessagesPanel();", ".ЗакрытьПанельСообщенийПользователю();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "CloseUserMessagesPanel", "ЗакрытьПанельСообщенийПользователю"); + WindowClosed = True; + Reader.Read(); + + ElsIf Reader.Name = "gotoStartPage" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".GotoStartPage();", ".ПерейтиКНачальнойСтранице();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "GotoStartPage", "ПерейтиКНачальнойСтранице"); + WindowClosed = True; + Reader.Read(); + + ElsIf Reader.Name = "gotoNextWindow" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".GotoNextWindow();", ".ПерейтиКСледующемуОкну();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "GotoNextWindow", "ПерейтиКСледующемуОкну"); + WindowClosed = True; + Reader.Read(); + + ElsIf Reader.Name = "gotoPreviousWindow" Then + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".GotoPreviousWindow();", ".ПерейтиКПредыдущемуОкну();"), True); + LastProcessedCommand = ? (ScriptVariant = "en", "GotoPreviousWindow", "ПерейтиКПредыдущемуОкну"); + WindowClosed = True; + Reader.Read(); + + ElsIf Reader.Name = "executeCommand" Then + CommandRef = ""; + While Reader.ReadAttribute() Do + If Reader.Name = "url" Then + CommandRef = Reader.Value; + Else + Raise NStr("en = 'Unknown attribute '; ru = 'Неопознанный атрибут '") + Reader.Name + ": " + Reader.Value; + EndIf; + EndDo; + AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".ExecuteCommand(""", ".ВыполнитьКоманду(""") + CommandRef + """);", True); + LastProcessedCommand = ? (ScriptVariant = "en", "ExecureCommand", "ВыполнитьКоманду"); + Reader.Read(); + + Else + Return False; + EndIf; + + Reader.Read(); + + Return True; + +EndFunction + +Procedure ConvertCommandPartGotoSpecificRow(Val Reader, Val VariableName, Val Writer, Val TermInt, Val TermRus) + + SwitchSelection = ""; + While Reader.ReadAttribute() Do + If Reader.Name = "switchSelection" Then + SwitchSelection = Reader.Value; + Else + Raise NStr("en = 'Unknown attribute '; ru = 'Неопознанный атрибут '") + Reader.Name + ": " + Reader.Value; + EndIf; + EndDo; + AddLine(Writer, VariableName + ? (ScriptVariant = "en", "." + TermInt + "(", "." + TermRus + "(") + SwitchSelection + ");", True); + LastProcessedCommand = ? (ScriptVariant = "en", TermInt, TermRus); + Reader.Read(); + +EndProcedure + +Procedure ConvertCommandPartRowDescription(Val Reader, Val VariableName, Val Writer, Val TermInt, Val TermRus) + + Reader.Read(); + If Reader.NodeType = XMLNodeType.StartElement And Reader.Name = "Field" Then + ConvertCommandPartRowDescriptionPartInt(Reader, Writer); + AddLine(Writer, VariableName + ? (ScriptVariant = "en", "." + TermInt + "(RowDescription);", "." + TermRus + "(ОписаниеСтроки);"), True); + Else + AddLine(Writer, VariableName + ? (ScriptVariant = "en", "." + TermInt +"();", "." + TermRus + "();"), True); + EndIf; + +EndProcedure + +Procedure ConvertCommandPartRowDescriptionPartInt(Val Reader, Val Writer) + + AddLine(Writer, ? (ScriptVariant = "en", "RowDescription = New Map();", "ОписаниеСтроки = Новый Соответствие();")); + + While Reader.NodeType <> XMLNodeType.EndElement Do + If Reader.Name = "Field" Then + ColumnTitle = ""; + CellText = ""; + While Reader.ReadAttribute() Do + If Reader.Name = "title" Then + ColumnTitle = Reader.Value; + ElsIf Reader.Name = "cellText" Then + CellText = Reader.Value; + Else + Raise NStr("en = 'Unknown attribute '; ru = 'Неопознанный атрибут '") + Reader.Name + ": " + Reader.Value; + EndIf; + EndDo; + AddLine(Writer, ? (ScriptVariant = "en", "RowDescription.Insert(""", "ОписаниеСтроки.Вставить(""") + + ColumnTitle + """, """ + DoubleQuotationMarks(CellText) + """);"); + Reader.Read(); + Else + Raise NStr("en = 'Unknown node '; ru = 'Неопознанный узел '") + Reader.Name + ": " + Reader.Value; + EndIf; + Reader.Read(); + EndDo; + +EndProcedure + +// { xUnitFor1C + +Функция Initialization() + + TempFilesDir = TempFilesDir(); + + BinaryDataUnpacker = GetTemplate("UnpackV8"); + BinaryDataDLL=ThisObject.GetTemplate("zlib1"); + BinaryDataUnpacker.Write(TempFilesDir+"UnpackV8.exe"); + BinaryDataDLL.Write(TempFilesDir+"zlib1.dll"); + FileUnpackApplication = Новый File(TempFilesDir+"UnpackV8.exe"); + FileDLL=Новый File(TempFilesDir+"zlib1.dll"); + + Возврат FileUnpackApplication; + +КонецФункции + +Функция CreateDataProcessor(TextToConvert) Экспорт + + TextProcedure = Convert(TextToConvert); + TextProcedure = StrReplace(TextProcedure, """", """"""); + + FileUnpackApplication = Initialization(); + + GlobalKey = "" + Новый UUID; + + localPathToExternalDataProcessor = TempFilesDir() + GlobalKey; + File = Новый File(GetTempFileName()); + + GetTemplate("ШаблонТеста_ВнешняяОбработка").Write(File.FullName); + + TempFile = GetTempFileName("epf"); + + StringCommand = """"+FileUnpackApplication.FullName+""" -parse """+File.FullName+""" """+localPathToExternalDataProcessor+""""; + RunApp(StringCommand, , Истина); + + ParsedFiles = НайтиФайлы(localPathToExternalDataProcessor, "*.*"); + Если ParsedFiles.Количество() = 0 Тогда + NewMessage = New UserMessage(); + NewMessage.Text = NStr("ru = 'Не удалось разобрать макет внешней обработки теста командой <"+StringCommand+">'"); + NewMessage.Message(); + Возврат ""; + КонецЕсли; + + // Replace text + FileTextModule = Новый File(localPathToExternalDataProcessor + "\8401ee62-68b8-43ea-8738-0c08cbc8c901.0"); + TextDocumentModule = Новый TextDocument; + TextDocumentModule.Прочитать(FileTextModule.FullName); + TextModule = TextDocumentModule.GetText(); + + TextModule = СтрЗаменить(TextModule, "Процедура НазваниеПроцедуры_ТестовыйСценарий(тестовоеПриложение) КонецПроцедуры", Chars.LF); + TextModule = СтрЗаменить(TextModule, "НазваниеПроцедуры_Тест_ГУИ_83", "Тест_"+MainProcedureName); + TextModule = СтрЗаменить(TextModule, "НазваниеПроцедуры_ТестовыйСценарий", MainProcedureName); + TextModule = СтрЗаменить(TextModule, "//ЗАМЕНИТЬТЕСТОВОЙПРОЦЕДУРОЙ", TextProcedure); + + TextDocumentModule.SetText(TextModule); + TextDocumentModule.Write(FileTextModule.FullName); + + // Сохраним в макет наш файл. + + TextWriter = Новый TextWriter; + TextWriter.Open(localPathToExternalDataProcessor + "\1b3a3d0f-5dc6-47e8-bad6-38c097bc00d4.0"); + TextWriter.Write(TextToConvert); + TextWriter.Close(); + + // Replace names + FileTextHeaders = Новый File(localPathToExternalDataProcessor + "\4e93fd08-5eda-44dd-92ef-b84867283b1e"); + TextDocumentHeaders = Новый TextDocument; + TextDocumentHeaders.Read(FileTextHeaders.FullName); + Text = TextDocumentHeaders.GetText(); + Text = StrReplace(Text, "ИмяВнешнейОбработки", "Тест"+MainProcedureName); + TextDocumentHeaders.SetText(Text); + TextDocumentHeaders.Write(FileTextHeaders.FullName); + + // Pack + TempFile = GetTempFileName("epf"); + + StringCommand = """"+FileUnpackApplication.FullName+""" -build """+localPathToExternalDataProcessor+""" """+TempFile+""""; + RunApp(StringCommand, , Истина); + + ResultString = ""; + File = Новый File(TempFile); + Если File.Exist() Тогда + BinaryData = Новый BinaryData(File.FullName); + ResultString = Base64String(BinaryData); + КонецЕсли; + + Возврат ResultString; + +КонецФункции + +// } xUnitFor1C \ No newline at end of file diff --git a/src/Utils/UILogToScript/maps.txt b/src/Utils/UILogToScript/maps.txt new file mode 100644 index 00000000..20a42f2a --- /dev/null +++ b/src/Utils/UILogToScript/maps.txt @@ -0,0 +1,4 @@ +Form\DefaultForm\Форма.bsl-->adfd948b-4804-4f26-9f93-cb3f704b8dc0.0 (1 695, 1 994) +Макеты\UnpackV8.txt-->6810777b-4151-4eba-b50d-4a2a08b5be5a.0 +Макеты\zlib1.txt-->b6e7785c-aad2-4c34-8c75-d98a7963dbaf.0 +Макеты\ШаблонТеста_ВнешняяОбработка.txt-->0b790809-ec18-47a5-9ea4-f803fe85b870.0 diff --git a/src/Utils/UILogToScript/renames.txt b/src/Utils/UILogToScript/renames.txt new file mode 100644 index 00000000..8276b37d --- /dev/null +++ b/src/Utils/UILogToScript/renames.txt @@ -0,0 +1,17 @@ +0b790809-ec18-47a5-9ea4-f803fe85b870-->und\0b790809-ec18-47a5-9ea4-f803fe85b870 +0b790809-ec18-47a5-9ea4-f803fe85b870.0-->und\0b790809-ec18-47a5-9ea4-f803fe85b870.0 +6344d70f-6d22-465c-b456-63013e6bc378.0\info-->und\6344d70f-6d22-465c-b456-63013e6bc378.0\info +6344d70f-6d22-465c-b456-63013e6bc378.0\text-->ObjectModule.bsl +6344d70f-6d22-465c-b456-63013e6bc378.1-->und\6344d70f-6d22-465c-b456-63013e6bc378.1 +6810777b-4151-4eba-b50d-4a2a08b5be5a-->und\6810777b-4151-4eba-b50d-4a2a08b5be5a +6810777b-4151-4eba-b50d-4a2a08b5be5a.0-->und\6810777b-4151-4eba-b50d-4a2a08b5be5a.0 +9e7b2a13-3bf6-401a-be4a-0dbf0d48a43b-->und\9e7b2a13-3bf6-401a-be4a-0dbf0d48a43b +adfd948b-4804-4f26-9f93-cb3f704b8dc0-->und\adfd948b-4804-4f26-9f93-cb3f704b8dc0 +adfd948b-4804-4f26-9f93-cb3f704b8dc0.0-->und\adfd948b-4804-4f26-9f93-cb3f704b8dc0.0 +adfd948b-4804-4f26-9f93-cb3f704b8dc0.1-->und\adfd948b-4804-4f26-9f93-cb3f704b8dc0.1 +b6e7785c-aad2-4c34-8c75-d98a7963dbaf-->und\b6e7785c-aad2-4c34-8c75-d98a7963dbaf +b6e7785c-aad2-4c34-8c75-d98a7963dbaf.0-->und\b6e7785c-aad2-4c34-8c75-d98a7963dbaf.0 +copyinfo-->und\copyinfo +root-->und\root +version-->und\version +versions-->und\versions diff --git a/src/Utils/UILogToScript/und/0b790809-ec18-47a5-9ea4-f803fe85b870 b/src/Utils/UILogToScript/und/0b790809-ec18-47a5-9ea4-f803fe85b870 new file mode 100644 index 00000000..ecffb085 --- /dev/null +++ b/src/Utils/UILogToScript/und/0b790809-ec18-47a5-9ea4-f803fe85b870 @@ -0,0 +1,6 @@ +{1, +{2,1, +{1, +{0,0,0b790809-ec18-47a5-9ea4-f803fe85b870},"ШаблонТеста_ВнешняяОбработка", +{1,"ru","Шаблон теста внешняя обработка"},"",0,0} +},0} \ No newline at end of file diff --git a/src/Utils/UILogToScript/und/0b790809-ec18-47a5-9ea4-f803fe85b870.0 b/src/Utils/UILogToScript/und/0b790809-ec18-47a5-9ea4-f803fe85b870.0 new file mode 100644 index 00000000..795967d5 --- /dev/null +++ b/src/Utils/UILogToScript/und/0b790809-ec18-47a5-9ea4-f803fe85b870.0 @@ -0,0 +1,1604 @@ +{1, +{#base64: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 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0KMDAwMDAwNjAgMDAwMDAw +NjAgN2ZmZmZmZmYgDQoQZRGCe0ICABBlEYJ7QgIAAAAAADQAZQA5ADMAZgBkADAA +OAAtADUAZQBkAGEALQA0ADQAZABkAC0AOQAyAGUAZgAtAGIAOAA0ADgANgA3ADIA +OAAzAGIAMQBlAAAAAAANCjAwMDAwMTk0IDAwMDAwMjAwIDdmZmZmZmZmIA0KlZI9 +jpQxDIb7lfYSW3+W7NhJnOPEjnMAJKrVSIiKDomKijOwBRL/XCFzEq5AZgeoKBYr +slK8fvzGzs8vP+7puL25l2g8ByrkGB1ExoCWYoKpaKlJ2ShOx6PUWZnCFYaODDIb +g/aUYDabPbByqvOiu3KPIZFzMMO0OkFUAsxnhdTLKLVmJsaDiBLmaqDJDaROByOb +0F1GJgs1tAsO/4LxwEPFSYkUahUBoUrbb5kQBbM0sYTKp+NuvV1fz6/Xm/VtfTi/ +uuT1ab1bD+cX6/16WN/PL9fn9fHuir579vzuySX/Ad9+T7c3p+0ZKaIkKGoKwtFB +Kyugo7q5esNtYut/B/wj/YnTIRfTyTwmDgJsSkA0CljbcMSMtjfSWx67+0XKo0dH +KlCaVZAYAk0yA6XaiLimGeVIBxl3HjghDy97HaFgfWNZHVs1RxxyzFk4JlXwXnGz +kkBXGuDM7KkWJ5LHpiMbxv5XkHIZsN/v0JwL7Hr0Pof2sls+aTKPvPBiliOD1b6F +o+5beIOSlbD20prP67Sv5xcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCjAwMDAwMDYwIDAwMDAwMDYw +IDdmZmZmZmZmIA0KEGURgntCAgAQZRGCe0ICAAAAAAA4ADQAMAAxAGUAZQA2ADIA +LQA2ADgAYgA4AC0ANAAzAGUAYQAtADgANwAzADgALQAwAGMAMAA4AGMAYgBjADgA +YwA5ADAAMQAAAAAADQowMDAwMDBhNyAwMDAwMDIwMCA3ZmZmZmZmZiANCpVPQQoC +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 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCjAw +MDAwMDI4IDAwMDAwMDI4IDdmZmZmZmZmIA0KEGURgntCAgAQZRGCe0ICAAAAAAB2 +AGUAcgBzAGkAbwBuAHMAAAAAAA0KMDAwMDAxYTYgMDAwMDAyMDAgN2ZmZmZmZmYg +DQqNkkuKHTEMRfdS41LQz7a8HEuWoSf9QncIhJCVZZAlZQvRm2T8JgWGsnzOvfr7 ++89Puonv67p10ZidDWieAerJsGQKIJnvg/P4pPsilyUbD7QdHXSkga/dQSxwDg/E +rdedq0sMddDWA3SGgLdZA20QelstXV6b9QWvG0V2TdwQ4gy6+gI7vuvTpouq5cD7 +0pxyNhq03AtU94bJecBNrQ82ccrr9kE8ZW3wI4UXDcHEGKbQQe6hyEVmipTZGbq5 +gUrWi0MMMNDCw2IilaX1mDI34DnF70pgaAta+FYOEdz82qynpTCZLh/AXU8FNwfM +PRgyqSdzqEaRxePrj7f387hu5mZ1gyCLApR1gJcb7FC3g5V+j/sqMslDA2INBE3W +KoGeUYoEjx5E1ZdQYLc9YVBVpUQdLFs1ob3KcsIxXpz1NOmqK31RQZ0ik0GwanlA +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 +p9By3C68i69+42t3v96S6enRyrj1lUWiL+NynIavtrVFJDZdrq7q0Nj6pdd83L2s +yd2m/MZr1kK9TaQ8ky4F7g4zCY673zYyk5zCWQwejTr1but1zxyN8yWGVXoancyn +1C2JdCtPb/ZbSRrw2Ho2lKue2ZizrESEaYWSLHZbpXZpzSrOirzTdgUKLF759hnz +7VXEhsbCE6mda6Sye3bmVLlekP3i8vHiVa8QjkQfpixW3EU9Es+HI+5sgYI2CPbw +xvtnhcKLB7IVcvdqSNzjuhDXfJq78uXbotHufct7X3G2NrdErxtoHZ/Kf+3hG9m1 +7LlI5aGdsiXf+kNz/EKNi8SG7NiP+Xvxzj/TZnWz58Twz6dS4z2znada5r0pGxpo +InsGONI/N3O3W0eybKnKZ9akyLpnfBdxatxs7Gn6KtRXd6NXU3a3XVunG2ev/ph2 +h7pVdnlWTWpZz4GGPOOR+UKC5JeKipiq0meExHyrG1cLZLCkxtJE1vbnq216rO+7 +d0qvDXfLL95IqWaS8HA4o+Anr17JWXA5juuRRC/WLnaUSRH1fwOihPhhZ5LyIytF +BZYamuuGydD90Rl2258kGZizx3Q+NS2raooZHp2p65x8w2VeeHtzRHZhnGJkaoNk +ylFLgaqNfNKdVi3+k3tOG4xStrVnrxUaKlRvL0yRTIqKxO5IkTgsloVceDWjmHO+ +jpTl4BA6JEmjzffqGbSm8tg9vyITdfaNcNpJvFFeBiU0q/JG//D4u8aJYZnInkfU +vJqum9kODh/SjAxX1Xv7ec757872JmqO2snj1+DYOH00JAUmSEa9eWwOjwOs/T8R +qN6T3yfky+5VEa+EJEgeV01nO/WjPE20NDaKJ6wna6XGaJ7OfNhEUKXJsNd+iRoD +HfkeW6x52JhhhPPIUUXzqseS1q8wMcJn9Mt4YiOHpW9UdWrc565J1zCbLFsen5HE +8SIpVhCH1NubENs3nHCe8X1m1R9q7VBWKkxLv9qmF3ssmScpwSKlvYc/q/5J80z/ +x8S6ma/27c6BUkNh3j2F1vppUeY7bAV4RMSlhXm7/DVkLhhIkzO856hDdkP7VuLq +bFw1GrdczU7ADKTFiC2vz1BxmiuXv9svc+dzo16BYqRAGi0PF31LxqT2vbBV42qj +iB8eodSBb2F6SkUmMqRgCZyUmrwAy5dyq035sSZb/XuoYcTRCKefE0Pv7lfN/dyX +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 ++fGw5fCVB/zDZ+s23818Fl+T9rR27+NaTv7xekO24OfRPusbHrQsecFUophwN0n/ +lM9s6GmFdWsTR1aJJ93QvZjsan3r7Ir3X870HaxJK38ylRpxp+GihmDSpZmwyymF +fjLnQrGCF4hlG89PNO2PPa5GOLnJkS2Ou39XfMMJz5iDlz6eWPf91XEW08PHHksX +Rp53PXbYluf+waU5Q4e6u5qiEuutj1jecDkqKqYV/TKQO2ugMT0TX5p8043lxa1r +vtPZH/bsu7taYNMdv9sCt+88XpkxfkjshsoHpWsh23ZfL9IzSJ9aXX1Za/3E1X1z +N69UJl8qrA5qLGAVf3dPP6Oy6PDz43nPX3Hl8+Zq55ryOuecoG4ra1/hUSps4lhs +9Y21JOEisbwnpqBCsi/yvt2ursoU1U8LvxFf7k69iXt6QqDw7ud452Qb9Z4x5ZXe +jt2X2jVKagpWje5nN4/xq+hzbcccxWxsu1/8xavjdV9vqIqtC992C3GbtOHrhJkZ +vjShdbenAnr3Pnjq/iTjTkgg+/rnL/xkz9454K/ILyasd63ox1GxxtQlDcNyV4Li +1+U8xt9mDzeuTVe+qysW93Qnh7Z7Yd5RpFHJQsMz+aMj15EdYwPkt8lHqdFHm15r +9RU0xJvbhaqs0ns/yBe91Tb0jf6nDu4py/seYwpTl02S06rtVhDkB1JtzA+Y+n17 +8pU98aV+xn6f2QdiammNW2KlixTSksRq5OQPpJfOGYszGeD38U3Gn840Gf5+QciW +LJ2pZ0uUOnXv+OXvLUK7G7xuP8vkrTzA1s/6yClqV7p/85CkaNFkVvEOM+Fenaaq +d0c8Iw727a1T4nkUauJdx817JSjX4wmF5cnqzuJ0M0O/lK+zLfOnPrtZRGzvUpfg +KZHbfA+rv+pazuhjSa5jVw+9ylmi6d5+QKF5T0Ki77JJbdnvzJHnT7klKOkdW51o ++6nA0Mmaa4qNuHRzZu+N8YbSn6d7PxqtLT5ufUHU/aOcP1PAmElZrZlSz6vpgwSX +De+2eeulX2yJfDL9kOQhGhbDGzjooF5n32+RvcV6Xv/bcMrK7BPHgkTUR0VYDutP +levKXVo+skzm3LY9Bif62u+q2Oc8+7Tjnva2t027jC0icuY/ir901l5O6zpqhHuq +PPLOPy7u8KpPqa2nLKdzDw9ud9SyJWplxOMil6n4DnFHP2Qv1LrhU6Hffw07G/1Q +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 +RlhFWEPQJ/zzhP5/Hf4X} +} \ No newline at end of file diff --git a/src/Utils/UILogToScript/und/6344d70f-6d22-465c-b456-63013e6bc378.0/info b/src/Utils/UILogToScript/und/6344d70f-6d22-465c-b456-63013e6bc378.0/info new file mode 100644 index 00000000..c70b5f39 --- /dev/null +++ b/src/Utils/UILogToScript/und/6344d70f-6d22-465c-b456-63013e6bc378.0/info @@ -0,0 +1 @@ +{3,1,0,"",0} \ No newline at end of file diff --git a/src/Utils/UILogToScript/und/6344d70f-6d22-465c-b456-63013e6bc378.1 b/src/Utils/UILogToScript/und/6344d70f-6d22-465c-b456-63013e6bc378.1 new file mode 100644 index 00000000..cab3f676 --- /dev/null +++ b/src/Utils/UILogToScript/und/6344d70f-6d22-465c-b456-63013e6bc378.1 @@ -0,0 +1,207 @@ +{5,2,"en", +{#base64:77u/PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBU +cmFuc2l0aW9uYWwvL0VOIj48aHRtbD48aGVhZD48bWV0YSBjb250ZW50PSJ0ZXh0 +L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSI+ +PC9tZXRhPjxtZXRhIG5hbWU9IkdFTkVSQVRPUiIgY29udGVudD0iTVNIVE1MIDEx +LjAwLjEwNTg2LjQ5NCI+PC9tZXRhPjwvaGVhZD48Ym9keT7vu788bGluayByZWw9 +InN0eWxlc2hlZXQiIHR5cGU9IlRleHQvY3NzIiBocmVmPSJ2OGhlbHA6Ly9zZXJ2 +aWNlX2Jvb2svc2VydmljZV9zdHlsZSI+PC9saW5rPjxtZXRhIG5hbWU9IkdFTkVS +QVRPUiIgY29udGVudD0iTVNIVE1MIDEwLjAwLjkyMDAuMTY1MjEiPjwvbWV0YT48 +aDE+VXNlciBhY3Rpb24gbG9nIGNvbnZlcnRvcjwvaDE+DQo8cD7CoDwvcD4NCjxk +aXY+DQo8cD5UaGUgZGF0YSBwcm9jZXNzb3IgY29udmVydHMgdGhlIHVzZXIgYWN0 +aW9uIGxvZyByZWNvcmRlZCBieSAxQzpFbnRlcnByaXNlIGludG8gYSAxQzpFbnRl +cnByaXNlIHNjcmlwdCBzY2VuYXJpby48L3A+DQo8cD7CoDwvcD4NCjxwPjxiPlRv +IHJlY29yZCBhIGxvZzwvYj48L3A+DQo8cD4xLlN0YXJ0IHRoZSBhcHBsaWNhdGlv +biBpbiBEZXNpZ25lciBtb2RlLjwvcD4NCjxwPjIuT24gdGhlIDxiPlRvb2xzPC9i +PiBtZW51LCBjbGljayA8Yj5SdW4gdG8gcmVjb3JkIHVzZXIgYWN0aW9ucyBsb2c8 +L2I+Ljxicj5UaGlzIHN0YXJ0cyB0aGUgYXBwbGljYXRpb24gaW4gMUM6RW50ZXJw +cmlzZSBtb2RlLjwvcD4NCjxwPjMuSW4gMUM6RW50ZXJwcmlzZSBtb2RlLCBpbiB0 +aGUgbWFpbiB3aW5kb3cgdGl0bGUgYmFyLCBjbGljayB0aGUgPGI+U3RhcnQgbG9n +Z2luZyB1c2VyIGFjdGlvbnM8L2I+IGJ1dHRvbiA8aW1nIHNyYz0iMDM4YjVjODUt +ZmIxYy00MDgyLTljNGMtZTY5Zjg5MjhiZjNhX2ZpbGVzL0RhdGFQcm9jZXNzb3Iu +VXNlckFjdGlvbkxvZ0NvbnZlcnNpb24uSGVscC5TdGFydC5wbmcxLnBuZyIgd2lk +dGg9IjE2IiBoZWlnaHQ9IjE2Ij48L2ltZz4uPC9wPg0KPHA+NC5QZXJmb3JtIHRo +ZSBhY3Rpb25zIHRoYXQgeW91IHdhbnQgcmVjb3JkZWQgYW5kIHRoZW4gY2xpY2sg +dGhlIDxiPlN0b3AgbG9nZ2luZyB1c2VyIGFjdGlvbnM8L2I+IGJ1dHRvbiA8Yj48 +aW1nIHNyYz0iMDM4YjVjODUtZmIxYy00MDgyLTljNGMtZTY5Zjg5MjhiZjNhX2Zp +bGVzL0RhdGFQcm9jZXNzb3IuVXNlckFjdGlvbkxvZ0NvbnZlcnNpb24uSGVscC5T +dG9wLnBuZzEucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjwvaW1nPjwvYj4u +PC9wPg0KPHA+NS5PbiB0aGUgbWFpbiBtZW51LCBwb2ludCB0byA8Yj5GaWxlPC9i +PiwgY2xpY2sgPGI+U2F2ZSBBczwvYj4sIGFuZCBzcGVjaWZ5IHRoZSBmaWxlIG5h +bWUuPC9wPg0KPHA+PGI+PC9iPsKgPC9wPg0KPHA+PGI+VG8gY29udmVydCBhIGxv +ZzwvYj48L3A+DQo8cD7CoDEuUnVuIHRoZSA8Yj5Vc2VyIGFjdGlvbiBsb2cgY29u +dmVydG9yIDwvYj5kYXRhIHByb2Nlc3Nvci48L3A+DQo8cD7CoDIuU3BlY2lmeSB0 +aGUgZm9sbG93aW5nIHNldHRpbmdzOjwvcD4NCjxwPsKgwqAgwrc8Yj5HZW5lcmF0 +ZSB0aGUgc2NlbmFyaW8gaW4gdGhlIHNlbGVjdGVkIDFDOkVudGVycHJpc2Ugc2Ny +aXB0IGxhbmd1YWdlPC9iPi4gVGhlIHJlc3VsdCBzY2VuYXJpbyB3aWxsIGJlIGdl +bmVyYXRlZCBpbiB0aGUgc2VsZWN0ZWQgMUM6RW50ZXJwcmlzZSBzY3JpcHQgbGFu +Z3VhZ2UgKEVuZ2xpc2ggb3IgUnVzc2lhbikuwqA8L3A+DQo8cD7CoMKgIMK3PGI+ +TWFpbiBwcm9jZWR1cmU8L2I+LiBUaGUgbmFtZSBvZiB0aGUgcHJvY2VkdXJlIHRo +YXQgd2lsbCBzZXJ2ZSBhcyB0aGUgZW50cnkgcG9pbnQgb2YgdGhlIHNjZW5hcmlv +LjwvcD4NCjxwPsKgwqAgwrc8Yj5HZW5lcmF0ZSBjbGllbnQgY29ubmVjdGlvbiBz +Y3JpcHQ8L2I+LiBTaG93cyB3aGV0aGVyIHlvdXIgc2NlbmFyaW8gd2lsbCBpbmNs +dWRlIGVzdGFibGlzaGluZyBjbGllbnQgY29ubmVjdGlvbnMuPC9wPg0KPHA+wqDC +oCDCtzxiPlNwbGl0IHRoZSBzY2VuYXJpbyBpbnRvIHByb2NlZHVyZXMgYnkgYXBw +bGljYXRpb24gd2luZG93czwvYj4uIFNob3dzIHdoZXRoZXIgYSBzZXBhcmF0ZSBw +cm9jZWR1cmUgd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIGVhY2ggYXBwbGljYXRpb24g +d2luZG93LjwvcD4NCjxwPsKgwqDCoMK3PGI+R2V0IGZ1bGwgaGllcmFyY2h5PC9i +Pi4gU2hvd3Mgd2hldGhlciB0aGUgZW50aXJlIHBhdGggdG8gYSBmb3JtIGVsZW1l +bnQgaW4gdGhlIHRyZWUgb2YgZm9ybSBlbGVtZW50cyBpcyBzdG9yZWQgaW4gdGhl +IHNjZW5hcmlvLjwvcD4NCjxwPsKgwqAgwrc8Yj5Db252ZXJ0PC9iPi4gVGhlIGxv +ZyBzb3VyY2UuIFNlbGVjdCBvbmUgb2YgdGhlIGZvbGxvd2luZzo8L3A+DQo8cD7C +oMKgIMK3PGI+RmlsZTwvYj4uIEluIHRoZSA8Yj5Tb3VyY2UgZmlsZTwvYj4gYm94 +LCBzcGVjaWZ5IHRoZSBzb3VyY2UgbG9nIGZpbGUuIEluIHRoZSA8Yj5UYXJnZXQg +ZmlsZTwvYj4gYm94LCBzcGVjaWZ5IHRoZSB0YXJnZXQgc2NlbmFyaW8gZmlsZS48 +L3A+DQo8cD7CoMKgIMK3PGI+VGV4dDwvYj4uIENvcHkgdGhlIGxvZyB0byB0aGUg +PGI+VXNlciBhY3Rpb24gbG9nPC9iPiBib3guIDwvcD4NCjxwPjMuQ2xpY2sgPGI+ +Q29udmVydDwvYj4uPGJyPjxicj5UaGUgZ2VuZXJhdGVkIHNjZW5hcmlvIGlzIHJl +Y29yZGVkIHRvIHRoZSB0YXJnZXQgZmlsZSBvciBkaXNwbGF5ZWQgaW4gdGhlIDxi +PlNjZW5hcmlvPC9iPiBib3guPC9wPjwvZGl2PjwvYm9keT48L2h0bWw+},"ru", +{#base64:77u/PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBU +cmFuc2l0aW9uYWwvL0VOIj48aHRtbD48aGVhZD48bWV0YSBjb250ZW50PSJ0ZXh0 +L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSI+ +PC9tZXRhPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhy +ZWY9InY4aGVscDovL3NlcnZpY2VfYm9vay9zZXJ2aWNlX3N0eWxlIj48L2xpbms+ +PG1ldGEgbmFtZT0iR0VORVJBVE9SIiBjb250ZW50PSJNU0hUTUwgMTEuMDAuMTA1 +ODYuNDk0Ij48L21ldGE+PC9oZWFkPjxib2R5Pg0KPGgxPtCf0YDQtdC+0LHRgNCw +0LfQvtCy0LDQvdC40LUg0LbRg9GA0L3QsNC70LAg0LTQtdC50YHRgtCy0LjQuSDQ +v9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0LLQviDQstGB0YLRgNC+0LXQvdC90YvQ +uSDRj9C30YvQujwvaDE+DQo8cD7QntCx0YDQsNCx0L7RgtC60LAg0L/RgNC10LTQ +vdCw0LfQvdCw0YfQtdC90LAg0LTQu9GPINC/0YDQtdC+0LHRgNCw0LfQvtCy0LDQ +vdC40Y8g0LbRg9GA0L3QsNC70LAg0LTQtdC50YHRgtCy0LjQuSDQv9C+0LvRjNC3 +0L7QstCw0YLQtdC70Y8g0LIg0L/RgNC+0LPRgNCw0LzQvNGDwqDQvdCwINCy0YHR +gtGA0L7QtdC90L3QvtC8INGP0LfRi9C60LUuPC9wPg0KPHA+0J7QsdGA0LDQsdC+ +0YLQutCwINC/0L7Qt9Cy0L7Qu9GP0LXRgiDQv9GA0LXQvtCx0YDQsNC30L7QstGL +0LLQsNGC0Ywg0YPQutCw0LfQsNC90L3Ri9C1INGE0LDQudC70Ysg0LjQu9C4INC9 +0LXQv9C+0YHRgNC10LTRgdGC0LLQtdC90L3QviDQstCy0LXQtNGR0L3QvdGL0Lkg +0YLQtdC60YHRgi4g0JLRi9Cx0LXRgNC40YLQtSDQvdGD0LbQvdGL0Lkg0LLQsNC8 +wqDQstCw0YDQuNCw0L3RgiDQsiDQv9C10YDQtdC60LvRjtGH0LDRgtC10LvQtSA8 +c3Ryb25nPiLQn9GA0LXQvtCx0YDQsNC30L7QstGL0LLQsNGC0YwiPC9zdHJvbmc+ +LjwvcD4NCjxwPtCk0L7RgNC80LjRgNC+0LLQsNC90LjQtSDQv9GA0L7Qs9GA0LDQ +vNC80Ysg0LLQvtC30LzQvtC20L3QviDQvdCwINCw0L3Qs9C70LjQudGB0LrQvtC8 +INC40LvQuCDRgNGD0YHRgdC60L7QvCDQstCw0YDQuNCw0L3RgtC1INCy0YHRgtGA +0L7QtdC90L3QvtCz0L4g0Y/Qt9GL0LrQsC4g0J/QviDRg9C80L7Qu9GH0LDQvdC4 +0Y4g0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINCy0LDRgNC40LDQvdGCINGP0LfR +i9C60LAg0LjRgdC/0L7Qu9GM0LfRg9C10LzRi9C5INCyINC60L7QvdGE0LjQs9GD +0YDQsNGG0LjQuC4g0J/RgNC4INC90LXQvtCx0YXQvtC00LjQvNC+0YHRgtC4INGB +0LPQtdC90LXRgNC40YDQvtCy0LDRgtGMINC/0YDQvtCz0YDQsNC80LzRgyDQsiDQ +tNGA0YPQs9C+0Lwg0LLQsNGA0LjQsNC90YLQtSDRg9C60LDQttC40YLQtSDQvdC1 +0L7QsdGF0L7QtNC40LzRi9C5INCyINC/0L7Qu9C1ICI8c3Ryb25nPtCT0LXQvdC1 +0YDQuNGA0L7QstCw0YLRjCDRgdGG0LXQvdCw0YDQuNC5INCyINCy0LDRgNC40LDQ +vdGC0LUg0LLRgdGC0YDQvtC10L3QvdC+0LPQviDRj9C30YvQutCwPC9zdHJvbmc+ +Ii48L3A+DQo8cD7QkiDQv9C+0LvQtSAiPHN0cm9uZz7QmNC80Y8g0L7RgdC90L7Q +stC90L7QuSDQv9GA0L7RhtC10LTRg9GA0Ys8L3N0cm9uZz4iINGD0LrQsNC30YvQ +stCw0LXRgtGB0Y8g0LjQvNGPINC/0YDQvtGG0LXQtNGD0YDRiywg0LrQvtGC0L7R +gNCw0Y8g0LHRg9C00LXRgiDRj9Cy0LvRj9GC0YzRgdGPINGC0L7Rh9C60L7QuSDQ +stGF0L7QtNCwwqDQsiDRgdGG0LXQvdCw0YDQuNC5LjwvcD4NCjxwPtCV0YHQu9C4 +INC/0LvQsNC90LjRgNGD0LXRgtGB0Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGM +INGB0LPQtdC90LXRgNC40YDQvtCy0LDQvdC90YPRjiDQv9GA0L7RhtC10LTRg9GA +0YMg0YHQsNC80L7RgdGC0L7Rj9GC0LXQu9GM0L3QviAo0L3QsNC/0YDQuNC80LXR +gCwg0LLQviDQstC90LXRiNC90LXQuSDQvtCx0YDQsNCx0L7RgtC60LUpLCDQuNC8 +0LXQtdGC0YHRjyDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINGB0LPQtdC90LXRgNC4 +0YDQvtCy0LDRgtGMINC60L7QtCDQv9C+0LTQutC70Y7Rh9C10L3QuNGPINC6INGC +0LXRgdGC0LjRgNGD0LXQvNC+0LzRgyDQutC70LjQtdC90YLRgywg0L7RgtC80LXR +gtC40LIg0YTQu9Cw0LbQvtC6ICI8c3Ryb25nPtCT0LXQvdC10YDQuNGA0L7QstCw +0YLRjCDQutC+0LQg0L/QvtC00LrQu9GO0YfQtdC90LjRjyDQuiDQutC70LjQtdC9 +0YLRgzwvc3Ryb25nPiIuINCSINC/0YDQvtGC0LjQstC90L7QvCDRgdC70YPRh9Cw +0LUg0LTQu9GPINC/0YDQvtGG0LXQtNGD0YDRiyDQsdGD0LTQtdGCINGB0YTQvtGA +0LzQuNGA0L7QstCw0L0g0L/QsNGA0LDQvNC10YLRgCA8c3Ryb25nPtCi0LXRgdGC +0LjRgNGD0LXQvNC+0LXQn9GA0LjQu9C+0LbQtdC90LjQtTwvc3Ryb25nPiwg0LIg +0LrQvtGC0L7RgNGL0Lkg0L/RgNC4INCy0YvQt9C+0LLQtSDQsdGD0LTQtdGCINC9 +0LXQvtCx0YXQvtC00LjQvNC+INC/0LXRgNC10LTQsNGC0Ywg0YHRg9GJ0LXRgdGC +0LLRg9GO0YnQuNC5INC+0LHRitC10LrRgiDRgtC40L/QsCDQotC10YHRgtC40YDR +g9C10LzQvtC10J/RgNC40LvQvtC20LXQvdC40LUsINC60L7RgtC+0YDRi9C5INGD +0LbQtSDRg9GB0YLQsNC90L7QstC40Lsg0YHQvtC10LTQuNC90LXQvdC40LUg0YEg +0YLQtdGB0YLQuNGA0YPQtdC80YvQvCDQutC70LjQtdC90YLQvtC8LjwvcD4NCjxw +PtCU0LvRjyDRg9C/0YDQvtGJ0LXQvdC40Y8g0YfRgtC10L3QuNGPINC/0L7Qu9GD +0YfQsNC10LzQvtCz0L4g0LrQvtC00LAg0YHQs9C10L3QtdGA0LjRgNC+0LLQsNC9 +0L3QsNGPINC/0YDQvtCz0YDQsNC80LzQsCDRgNCw0LfQsdC40LLQsNC10YLRgdGP +INC/0L4gItCz0YDQsNC90LjRhtCw0LwiINC+0LrQvtC9INC/0YDQuNC70L7QttC1 +0L3QuNGPINC90LAg0L/QvtC00L/RgNC+0LPRgNCw0LzQvNGLLiDQldGB0LvQuCDQ +vtGC0LzQtdGC0LjRgtGMINGE0LvQsNC20L7QuiAiPHN0cm9uZz7QoNCw0LfQsdC4 +0LLQsNGC0Ywg0YDQtdC30YPQu9GM0YLQsNGCINC90LAg0L/RgNC+0YbQtdC00YPR +gNGLINC/0L4gItCz0YDQsNC90LjRhtCw0LwiINC+0LrQvtC9PC9zdHJvbmc+IiDQ +sdGD0LTQtdGCINGB0YTQvtGA0LzQuNGA0L7QstCw0L3QsCDQvtC00L3QsCDQsdC+ +0LvRjNGI0LDRjyDQv9GA0L7RhtC10LTRg9GA0LAuPC9wPg0KPHA+0J7RgtC80LXR +gtC60LAg0YTQu9Cw0LbQutCwICI8c3Ryb25nPtCT0LXQvdC10YDQuNGA0L7QstCw +0YLRjCDQv9C+0LvRg9GH0LXQvdC40LUg0YDQvtC00LjRgtC10LvRjNGB0LrQuNGF +INC+0LHRitC10LrRgtC+0LIg0LIg0LjQtdGA0LDRgNGF0LjQuDwvc3Ryb25nPiIg +0L/QvtC30LLQvtC70Y/QtdGCINC/0YDQuCDQstGL0LfQvtCy0LUg0LzQtdGC0L7Q +tNCwINC60LDQutC+0LPQvi3Qu9C40LHQviDQvtCx0YrQtdC60YLQsCDRgdCz0LXQ +vdC10YDQuNGA0L7QstCw0YLRjCDQv9C+0LvRg9GH0LXQvdC40LUg0LLRgdC10YUg +0YDQvtC00LjRgtC10LvRjNGB0LrQuNGFINGC0LXRgdGC0LjRgNGD0LXQvNGL0YUg +0L7QsdGK0LXQutGC0L7Qsiwg0LrQvtGC0L7RgNGL0LUg0L3QsNGF0L7QtNGP0YLR +gdGPINC80LXQttC00YPCoNGC0LXQutGD0YnQuNC8INGC0LXRgdGC0LjRgNGD0LXQ +vNGL0Lwg0L7QsdGK0LXQutGC0L7QvMKg0Lgg0YTQvtGA0LzQvtC5LiDQldGB0LvQ +uCDRhNC70LDQttC+0Log0YHQsdGA0L7RiNC10L0gLSDQs9C10L3QtdGA0LjRgNGD +0LXRgtGB0Y8g0L/QvtC40YHQuiDQvtCx0YrQtdC60YLQvtCyINC90LXQv9C+0YHR +gNC10LTRgdGC0LLQtdC90L3QvsKg0YfQtdGA0LXQtyDQvtCx0YrQtdC60YIg0YLQ +tdGB0YLQuNGA0YPQtdC80L7QucKg0YTQvtGA0LzRiy48L3A+PC9ib2R5PjwvaHRt +bD4=},4,"DataProcessor.UserActionLogConversion.Help.Start.png.png",1, +{#base64:iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAA7EAAAO +xAGVKw4bAAAAB3RJTUUH3QkGBzIqeYsT3gAAAAd0RVh0QXV0aG9yAKmuzEgAAAAM +dEVYdERlc2NyaXB0aW9uABMJISMAAAAKdEVYdENvcHlyaWdodACsD8w6AAAADnRF +WHRDcmVhdGlvbiB0aW1lADX3DwkAAAAJdEVYdFNvZnR3YXJlAF1w/zoAAAALdEVY +dERpc2NsYWltZXIAt8C0jwAAAAh0RVh0V2FybmluZwDAG+aHAAAAB3RFWHRTb3Vy +Y2UA9f+D6wAAAAh0RVh0Q29tbWVudAD2zJa/AAAABnRFWHRUaXRsZQCo7tInAAAB +AElEQVR4nJVSO2tUYRA93+Pem21iFslCcPMoVDQQBBVJGgOyjf9C7P0d/gRLCzvL +lDYpI1EUBJN1BQM+EyUhrjew3/1mzlhsFLWIOs0wzBnOOcNxL7e28T8VSW69ePaP +6ItLl6OqklxZWe6ejidA3+/LxsZjUiPJJqXulPDrDlx0vkAo4QIAmEIbY4ZJd2q2 +SUmVUZWiCoqpuliOjuT12qO6P4jBn1q8MH/zetnypgqKqJKMJFUEFAdLddq8e6/4 +vDtp2goBex/e9vtzd26VLQNFRZT0pIoImOHcYG293PvUMelE1/bW1qb9ZXe4vgkA +zCJCVa+kiEAbZ3b49PmkyWQMlffBB0l2iwAAAM9JREFUuQCU0sRXAweDNiKiZKRS +RIzZtInOtUIonPv1P4XRtDlmID3JnDOY0QzblxZ9VeHngXOurOLieTTfwJxzptLr +Dw82OpjvLeXOjFYVQkAIbqIVzswWV+ZtdDBmUOqxJGi20f5Epd3bveHGjn/zrog+ +nl0ors05v2+jQ+iCiFAZlaoisIxmaJrKop5encaNWcCgyZqPNqqhCZZ1zFDXRyml +wXDmXOfqn3ko4Camx4YGw5mUUl0fRQCqev/Bw78F78m4RQDLq73fVnbChO+NUUSG +AiGQFAAAAABJRU5ErkJggg==},"DataProcessor.UserActionLogConversion.Help.Start.png1.png",1, +{#base64:iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAA7EAAAO +xAGVKw4bAAAAB3RJTUUH3QkGBzIqeYsT3gAAAAd0RVh0QXV0aG9yAKmuzEgAAAAM +dEVYdERlc2NyaXB0aW9uABMJISMAAAAKdEVYdENvcHlyaWdodACsD8w6AAAADnRF +WHRDcmVhdGlvbiB0aW1lADX3DwkAAAAJdEVYdFNvZnR3YXJlAF1w/zoAAAALdEVY +dERpc2NsYWltZXIAt8C0jwAAAAh0RVh0V2FybmluZwDAG+aHAAAAB3RFWHRTb3Vy +Y2UA9f+D6wAAAAh0RVh0Q29tbWVudAD2zJa/AAAABnRFWHRUaXRsZQCo7tInAAAB +AElEQVR4nJVSO2tUYRA93+Pem21iFslCcPMoVDQQBBVJGgOyjf9C7P0d/gRLCzvL +lDYpI1EUBJN1BQM+EyUhrjew3/1mzlhsFLWIOs0wzBnOOcNxL7e28T8VSW69ePaP +6ItLl6OqklxZWe6ejidA3+/LxsZjUiPJJqXulPDrDlx0vkAo4QIAmEIbY4ZJd2q2 +SUmVUZWiCoqpuliOjuT12qO6P4jBn1q8MH/zetnypgqKqJKMJFUEFAdLddq8e6/4 +vDtp2goBex/e9vtzd26VLQNFRZT0pIoImOHcYG293PvUMelE1/bW1qb9ZXe4vgkA +zCJCVa+kiEAbZ3b49PmkyWQMlffBB0l2iwAAAM9JREFUuQCU0sRXAweDNiKiZKRS +RIzZtInOtUIonPv1P4XRtDlmID3JnDOY0QzblxZ9VeHngXOurOLieTTfwJxzptLr +Dw82OpjvLeXOjFYVQkAIbqIVzswWV+ZtdDBmUOqxJGi20f5Epd3bveHGjn/zrog+ +nl0ors05v2+jQ+iCiFAZlaoisIxmaJrKop5encaNWcCgyZqPNqqhCZZ1zFDXRyml +wXDmXOfqn3ko4Camx4YGw5mUUl0fRQCqev/Bw78F78m4RQDLq73fVnbChO+NUUSG +AiGQFAAAAABJRU5ErkJggg==},"DataProcessor.UserActionLogConversion.Help.Stop.png.png",1, +{#base64:iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAA7EAAAO +xAGVKw4bAAAAB3RJTUUH3QkGBzQTcNQ8UAAAAAd0RVh0QXV0aG9yAKmuzEgAAAAM +dEVYdERlc2NyaXB0aW9uABMJISMAAAAKdEVYdENvcHlyaWdodACsD8w6AAAADnRF +WHRDcmVhdGlvbiB0aW1lADX3DwkAAAAJdEVYdFNvZnR3YXJlAF1w/zoAAAALdEVY +dERpc2NsYWltZXIAt8C0jwAAAAh0RVh0V2FybmluZwDAG+aHAAAAB3RFWHRTb3Vy +Y2UA9f+D6wAAAAh0RVh0Q29tbWVudAD2zJa/AAAABnRFWHRUaXRsZQCo7tInAAAB +AElEQVR4nI1Sv2uTURQ9Nk90CBga0iYQ3QKCIkYaMejSYi1SERwEQSkRhAy6+lc4 +uOggFBTdiiB0c2qdoq3g4C8IaBanaNCWD+z73j3nOXxpEIfUu9zL4VwO556778PH +T9itiL3LSfr8/t1/MAHg6PG6Iymp2TxTLbox1G8D63ReU3SSUu+rBdOvrwAm8lMz +92ZHvLd315T0AVQLR1LvRTmSRkIWzQOICgAWmrMAXnbWokKGQ2bkUIFmkE3kJwFA +KYCgMJRQuosbzUQ5SmYGhUedp8tvVgBUSlOBaTY07l8CcPvsjZuNJTOT5ESZGZi2 +G1cgrvbWK+WSpwcwPVVk5NXafKu+vsm4YQAAALxJREFUCKZmRspRNLOooJ+9duMy +Il/01svTJUX1+4NrtflW/SIHX3KTx8xMmYcQAhTizpZ+/G7PLCLyee8VgOu1862T +F/i9CxoUQgiUHDn0kCseBgD69qkFRDuQ2986MQf6XKECAAqWmZZoZmBoLN8ZnT9/ +6CCAh5urI2Tz1hMzo+hI0QzR/s412dr5N+pozEwnSeK9726XN5YejHmN7nbZe58k +iQNA8vGzlTFsAMBG1hyA0+fmhrJ7LQH4A6srMkd3rLpzAAAAAElFTkSuQmCC},"DataProcessor.UserActionLogConversion.Help.Stop.png1.png",1, +{#base64:iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAA7EAAAO +xAGVKw4bAAAAB3RJTUUH3QkGBzQTcNQ8UAAAAAd0RVh0QXV0aG9yAKmuzEgAAAAM +dEVYdERlc2NyaXB0aW9uABMJISMAAAAKdEVYdENvcHlyaWdodACsD8w6AAAADnRF +WHRDcmVhdGlvbiB0aW1lADX3DwkAAAAJdEVYdFNvZnR3YXJlAF1w/zoAAAALdEVY +dERpc2NsYWltZXIAt8C0jwAAAAh0RVh0V2FybmluZwDAG+aHAAAAB3RFWHRTb3Vy +Y2UA9f+D6wAAAAh0RVh0Q29tbWVudAD2zJa/AAAABnRFWHRUaXRsZQCo7tInAAAB +AElEQVR4nI1Sv2uTURQ9Nk90CBga0iYQ3QKCIkYaMejSYi1SERwEQSkRhAy6+lc4 +uOggFBTdiiB0c2qdoq3g4C8IaBanaNCWD+z73j3nOXxpEIfUu9zL4VwO556778PH +T9itiL3LSfr8/t1/MAHg6PG6Iymp2TxTLbox1G8D63ReU3SSUu+rBdOvrwAm8lMz +92ZHvLd315T0AVQLR1LvRTmSRkIWzQOICgAWmrMAXnbWokKGQ2bkUIFmkE3kJwFA +KYCgMJRQuosbzUQ5SmYGhUedp8tvVgBUSlOBaTY07l8CcPvsjZuNJTOT5ESZGZi2 +G1cgrvbWK+WSpwcwPVVk5NXafKu+vsm4YQAAALxJREFUCKZmRspRNLOooJ+9duMy +Il/01svTJUX1+4NrtflW/SIHX3KTx8xMmYcQAhTizpZ+/G7PLCLyee8VgOu1862T +F/i9CxoUQgiUHDn0kCseBgD69qkFRDuQ2986MQf6XKECAAqWmZZoZmBoLN8ZnT9/ +6CCAh5urI2Tz1hMzo+hI0QzR/s412dr5N+pozEwnSeK9726XN5YejHmN7nbZe58k +iQNA8vGzlTFsAMBG1hyA0+fmhrJ7LQH4A6srMkd3rLpzAAAAAElFTkSuQmCC} +} \ No newline at end of file diff --git a/src/Utils/UILogToScript/und/6810777b-4151-4eba-b50d-4a2a08b5be5a b/src/Utils/UILogToScript/und/6810777b-4151-4eba-b50d-4a2a08b5be5a new file mode 100644 index 00000000..e0e0efe2 --- /dev/null +++ b/src/Utils/UILogToScript/und/6810777b-4151-4eba-b50d-4a2a08b5be5a @@ -0,0 +1,6 @@ +{1, +{2,1, +{0, +{0,0,6810777b-4151-4eba-b50d-4a2a08b5be5a},"UnpackV8", +{1,"ru","Unpack v8"},""} +},0} \ No newline at end of file diff --git a/src/Utils/UILogToScript/und/6810777b-4151-4eba-b50d-4a2a08b5be5a.0 b/src/Utils/UILogToScript/und/6810777b-4151-4eba-b50d-4a2a08b5be5a.0 new file mode 100644 index 00000000..91178556 --- /dev/null +++ b/src/Utils/UILogToScript/und/6810777b-4151-4eba-b50d-4a2a08b5be5a.0 @@ -0,0 +1,1368 @@ +{1, +{#base64:TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAA2AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5v +dCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAADecsL/mhOsrJoTrKyaE6ys +cgymrM8TrKwZD6KsiROsrJ8f8ayZE6ysmhOtrNwTrKz4DL+smBOsrHIMp6yLE6ys +UmljaJoTrKwAAAAAAAAAAAAAAAAAAAAAUEUAAEwBAwBR4vBHAAAAAAAAAADgAA8B +CwEGAACwAAAAUAAAAAAAADlWAAAAEAAAAMAAAAAAQAAAEAAAABAAAAQAAAAAAAAA +BAAAAAAAAAAAEAEAABAAAAAAAAADAAAAAAAQAAAQAAAAABAAABAAAAAAAAAQAAAA +AAAAAAAAAABwywAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AMAAABgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAudGV4dAAAAKauAAAAEAAA +ALAAAAAQAAAAAAAAAAAAAAAAAAAgAABgLnJkYXRhAAB6EQAAAMAAAAAgAAAAwAAA +AAAAAAAAAAAAAAAAQAAAQC5kYXRhAAAAmCkAAADgAAAAIAAAAOAAAAAAAAAAAAAA +AAAAAEAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAIoN+PVAALABhMh1CArIiA349UAA6QcAAACQkJCQkJCQ +aDAQQADoEzMAAFnDkJCQkMOQkJCQkJCQkJCQkJCQkJCLwTPJxwAYwUAAiUgUiUgc +xkAgAcOQkJCQkJCQkJCQkFaL8egYAAAA9kQkCAF0CVboXy0AAIPEBIvGXsIEAJCQ +Vovxi0YUxwYYwUAAhcB0CVDoPi0AAIPEBItGHIXAdB2LSPyNcPxowBBAAFFqOFDo +yjIAAFboGi0AAIPEBF7DkFaL8YsGhcB0CVDoBS0AAIPEBItGCIXAdAlQ6PUsAACD +xASNThDolv///17DkJCQkItEJARTVldoVOBAAIvZUOjkMwAAi/CDxAiF9nULX164 +uf///1vCCACLTCQUaFDgQABR6MEzAACL+IPECIX/dRRW6DwzAACDxAS4uP///19e +W8IIAFdWi8vo8wEAAFaL2OgdMwAAV+gXMwAAg8QIg/v9dQtfXri3////W8IIAIvD +X/fYG8BeJLpbwggAkJCQkItEJARTVldoVOBAAIvZUOhUMwAAi/CDxAiF9nULX164 +zf///1vCCACLTCQUaFDgQABR6DEzAACL+IPECIX/dRRW6KwyAACDxAS4zP///19e +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 +yf8zwPKu99FJi9mLyjvTcgKLy79M5kAAi/UzwPOmdAUbwIPY/4XAdRE703INO9MP +lcCFwA+E1QAAAGiw6UAAaIjgQADomRgAAGiw6UAAaAjmQADoihgAAGiw6UAAaIjg +QADoexgAAGiw6UAAaNDlQADobBgAAGiw6UAAaIjgQADoXRgAAGiw6UAAaMTlQADo +ThgAAGiw6UAAaJTlQADoPxgAAGiw6UAAaGDlQADoMBgAAIPEQGiw6UAAaCzlQADo +HhgAAGiw6UAAaPjkQADoDxgAAGiw6UAAaOjkQADoABgAAGiw6UAAaODkQADo8RcA +AGiw6UAAaLDkQADo4hcAAGiw6UAAaHzkQADp0AAAAGiw6UAAaIjgQADoxBcAAGiw +6UAAaIjgQADotRcAAGiw6UAAaHTkQADophcAAGiw6UAAaDDkQADolxcAAGiw6UAA +aNjjQADoiBcAAGiw6UAAaITjQADoeRcAAGiw6UAAaIjgQADoahcAAGiw6UAAaIjg +QADoWxcAAIPEQGiw6UAAaHzjQADoSRcAAGiw6UAAaCDjQADoOhcAAGiw6UAAaMzi +QADoKxcAAGiw6UAAaITiQADoHBcAAGiw6UAAaIjgQADoDRcAAGiw6UAAaIjgQADo +/hYAAItMJESDxDCFyQ+ENgIAAIpB/4TAdB48/3Qa/shfXohB/10zwFuLTCRYZIkN +AAAAAIPEZMNJUehFBgAAg8QEM8BfXl1bi0wkWGSJDQAAAACDxGTDjUwkIOiQ2P// +i1MMi0MIagBSUI1MJCzGRCR8Bug48v//i/DGRCRwAI1MJCDrS0lR6PgFAACDxASL +xl9eXVuLTCRYZIkNAAAAAIPEZMONTCQg6EPY//+LSwyLUwhqAFFSjUwkLMZEJHwF +6Ovr//+L8MZEJHAAjUwkIOhb2P//i0wkFIXJdLKKQf+EwHShPP90nf7IX4hB/4vG +Xl1bi0wkWGSJDQAAAACDxGTDjUwkIOjl1///i0MMi0sIUFGNTCQoxkQkeATo7+f/ +/41MJCCL8MZEJHAA6P/X//+LTCQUhckPhFL///+KQf+EwA+EPf///zz/D4Q1//// +65aNTCRE6JXX//+LUxCLQwyLSwhqAVJQUY1MJFTGhCSAAAAAA+g24v//jUwkRIvw +xkQkcADoptf//2oBjUwkFMdEJHT/////6IMBAACLxl9eXVuLTCRYZIkNAAAAAIPE +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 +9zPLA/AD+YPx/4Pw/zPPM8aDwgSB4QABAYF1HCUAAQGBdNMlAAEBAXUIgeYAAACA +dcReX1szwMOLQvw42HQ2hMB07zjcdCeE5HTnwegQONh0FYTAdNw43HQGhOR01OuW +Xl+NQv9bw41C/l5fW8ONQv1eX1vDjUL8Xl9bw/8lJMBAAMzMzMzMzMzMzMzMzMzM +i0XsUOhrgP//WcO4UMhAAOkajP//zMzMzMzMzMzMzMyLhaz8//9Q6EiA//9Zw7h4 +yEAA6feL///MzMzMzMzMzIuF0Pz//1DoKID//1nDuKDIQADp14v//8zMzMzMzMzM +jU2c6eh7//+NTazpsFL//41NrOmoUv//jU2s6aBS//+NTdDpmFL//41N0OmQUv// +jU3Q6YhS//+4yMhAAOmNi///zMzMzMzMzMzMzMzMzMy4IMlAAOl1i///zMyNTeDp +jHv//7j4yUAA6WGL///MzItN7OnMmf//uCDKQADpTYv//8zMi03w6biZ//+4aMpA +AOk5i///zMyLTfDppJn//7iQykAA6SWL///MzItN8OmQmf//uLjKQADpEYv//8zM +jU3g6Sh7//+4IMtAAOn9iv//zMyLTfDpaJn//7hIy0AA6emK//8AAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +6s4AAFLRAABA0QAALtEAAB7RAAAO0QAAHs0AACzNAAA4zQAARM0AAFDNAABezQAA +cs0AAIbNAACWzQAAqs0AALbNAADOzQAA6M0AAPjNAAAKzgAAGs4AACzOAAA6zgAA +TM4AAFjOAABmzgAAcs4AAH7OAACMzgAAms4AAKjOAAC4zgAAyM4AANrOAAD4zgAA +Cs8AAB7PAAA2zwAATM8AAGLPAAByzwAAgs8AAJ7PAAC0zwAAzs8AAOjPAAAA0AAA +GtAAADjQAABI0AAAXNAAAGrQAAB80AAAjNAAAJzQAACo0AAAstAAAL7QAADY0AAA +6tAAAPzQAAAAAAAABM0AAPrMAADszAAA3MwAANLMAADEzAAAAAAAAGAQQAA4x0AA +1z9AAJ0+QAC6P0AAc3RyaW5nIHRvbyBsb25nAHDHQAAEP0AAnT5AAKo+QAD///// +AAAAAAAAAADAx0AAv0BAAJ0+QACiQEAAaW52YWxpZCBzdHJpbmcgcG9zaXRpb24A +/////wAAAADmQ0AAAAAAAP////86REAARERAAAAAAAD/////AAAAANhIQAAuY29t +AAAAAC5iYXQAAAAALmNtZAAAAAAuZXhlAAAAAC4vXAA/KgAAAAAAAP/////5VkAA +DVdAAPDHQABhV0AAGlhAAFVua25vd24gZXhjZXB0aW9uAAAAOMhAADxYQAAAAAAA +Y3Nt4AEAAAAAAAAAAAAAAAMAAAAgBZMZAAAAAAAAAAD/////AAAAAIVhQAAAAAAA +cWFAAHVhQAD/////AAAAANthQAAAAAAAx2FAAMthQAD/////iHpAAJJ6QAAAAAAA +/////wAAAAD4e0AAAAAAANZ7QADge0AA/////yh+QAAsfkAAAAAAAP////+KfkAA +k35AAAYAAAYAAQAAEAADBgAGAhAERUVFBQUFBQU1MABQAAAAACAoOFBYBwgANzAw +V1AHAAAgIAgAAAAACGBoYGBgYAAAcHB4eHh4CAcIAAAHAAgICAAACAAIAAcIAAAA +KABuAHUAbABsACkAAAAAAChudWxsKQAAAAAAAAAAAAD/////TZBAAFGQQAD///// +AZFAAAWRQABydW50aW1lIGVycm9yIAAADQoAAFRMT1NTIGVycm9yDQoAAABTSU5H +IGVycm9yDQoAAAAARE9NQUlOIGVycm9yDQoAAFI2MDI4DQotIHVuYWJsZSB0byBp +bml0aWFsaXplIGhlYXANCgAAAABSNjAyNw0KLSBub3QgZW5vdWdoIHNwYWNlIGZv +ciBsb3dpbyBpbml0aWFsaXphdGlvbg0KAAAAAFI2MDI2DQotIG5vdCBlbm91Z2gg +c3BhY2UgZm9yIHN0ZGlvIGluaXRpYWxpemF0aW9uDQoAAAAAUjYwMjUNCi0gcHVy +ZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwNCgAAAFI2MDI0DQotIG5vdCBlbm91Z2gg +c3BhY2UgZm9yIF9vbmV4aXQvYXRleGl0IHRhYmxlDQoAAAAAUjYwMTkNCi0gdW5h +YmxlIHRvIG9wZW4gY29uc29sZSBkZXZpY2UNCgAAAABSNjAxOA0KLSB1bmV4cGVj +dGVkIGhlYXAgZXJyb3INCgAAAABSNjAxNw0KLSB1bmV4cGVjdGVkIG11bHRpdGhy +ZWFkIGxvY2sgZXJyb3INCgAAAABSNjAxNg0KLSBub3QgZW5vdWdoIHNwYWNlIGZv +ciB0aHJlYWQgZGF0YQ0KAA0KYWJub3JtYWwgcHJvZ3JhbSB0ZXJtaW5hdGlvbg0K +AAAAAFI2MDA5DQotIG5vdCBlbm91Z2ggc3BhY2UgZm9yIGVudmlyb25tZW50DQoA +UjYwMDgNCi0gbm90IGVub3VnaCBzcGFjZSBmb3IgYXJndW1lbnRzDQoAAABSNjAw +Mg0KLSBmbG9hdGluZyBwb2ludCBub3QgbG9hZGVkDQoAAAAATWljcm9zb2Z0IFZp +c3VhbCBDKysgUnVudGltZSBMaWJyYXJ5AAAAAAoKAABSdW50aW1lIEVycm9yIQoK +UHJvZ3JhbTogAAAALi4uADxwcm9ncmFtIG5hbWUgdW5rbm93bj4AAFN1bk1vblR1 +ZVdlZFRodUZyaVNhdAAAAEphbkZlYk1hckFwck1heUp1bkp1bEF1Z1NlcE9jdE5v +dkRlYwAAAABUWgAAAAAAAP/////zr0AA969AAEdldExhc3RBY3RpdmVQb3B1cAAA +R2V0QWN0aXZlV2luZG93AE1lc3NhZ2VCb3hBAHVzZXIzMi5kbGwAAP////+ouEAA +rLhAAP////8XuUAAG7lAAADpQAAAAAAAAAAAAP////8AAAAAAAAAABjpQAABAAAA +AAAAAP////8AAAAAAAAAADjpQAACAAAAAAAAAP////8AAAAAAAAAAADHQADoxkAA +0MZAAAAAAAAAAAAAAAAAAAMAAAAYx0AAAAAAAAAAAAAAAAAAOOlAACjHQAAAAAAA +6MZAANDGQAAAAAAAAAAAAAAAAAAAAAAAAgAAAFDHQAAAAAAAAAAAAAAAAAAY6UAA +YMdAAAAAAABY6UAAAgAAAAAAAAD/////AAAAAAAAAACIx0AA6MZAANDGQAAAAAAA +AAAAAAAAAAADAAAAoMdAAAAAAAAAAAAAAAAAAFjpQACwx0AA0MZAAAAAAAAAAAAA +AAAAAAAAAAABAAAA1MdAAAAAAAAAAAAAAAAAAADpQADgx0AAAAAAABjsQAAAAAAA +AAAAAP////8AAAAAAAAAAAjIQAAAAAAAAAAAAAAAAAABAAAAIMhAAAAAAAAAAAAA +AAAAABjsQAAoyEAAAAAAACAFkxkBAAAAcMhAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +/////2C9QAAgBZMZAQAAAJjIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////+AvUAA +IAWTGQEAAADAyEAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////oL1AACAFkxkHAAAA +6MhAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////8C9QAAAAAAA8L1AAAAAAADovUAA +AAAAAOC9QAAAAAAA2L1AAAAAAADQvUAAAAAAAMi9QAAgBZMZAgAAAEDJQAABAAAA +UMlAAAAAAAAAAAAAAAAAAP////8AAAAA/////wAAAAAAAAAAAAAAAAEAAAABAAAA +aMlAAAAAAAAAAAAAAAAAAAAAAABZPEAAAAAAAADpQAAAAAAA/////wAAAAAMAAAA +uldAAAAAAAAAAAAAGOlAAAAAAAD/////AAAAABwAAAAgP0AAAAAAAAAAAAA46UAA +AAAAAP////8AAAAAHAAAAPM/QAAAAAAAAwAAALjJQACYyUAAeMlAAAAAAAB9P0AA +AAAAANjJQAAgBZMZAQAAABjKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8cvkAA +IAWTGQEAAABAykAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////ML5AAAIAAACYyUAA +eMlAAAAAAAAAAAAAxz5AAAAAAABIykAAIAWTGQEAAACIykAAAAAAAAAAAAAAAAAA +AAAAAAAAAAD/////RL5AACAFkxkBAAAAsMpAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +/////1i+QAAgBZMZAQAAANjKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////9svkAA +AAAAAFjpQAAAAAAA/////wAAAAAcAAAA20BAAAAAAAADAAAA4MpAAJjJQAB4yUAA +AAAAAGVAQAAAAAAAAMtAACAFkxkBAAAAQMtAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +/////4C+QAAgBZMZAQAAAGjLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////+UvkAA +qMwAAAAAAAAAAAAAFM0AAPzAAACsywAAAAAAAAAAAABs0QAAAMAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAA6s4AAFLRAABA0QAALtEAAB7RAAAO0QAAHs0AACzNAAA4zQAA +RM0AAFDNAABezQAAcs0AAIbNAACWzQAAqs0AALbNAADOzQAA6M0AAPjNAAAKzgAA +Gs4AACzOAAA6zgAATM4AAFjOAABmzgAAcs4AAH7OAACMzgAAms4AAKjOAAC4zgAA +yM4AANrOAAD4zgAACs8AAB7PAAA2zwAATM8AAGLPAAByzwAAgs8AAJ7PAAC0zwAA +zs8AAOjPAAAA0AAAGtAAADjQAABI0AAAXNAAAGrQAAB80AAAjNAAAJzQAACo0AAA +stAAAL7QAADY0AAA6tAAAPzQAAAAAAAABM0AAPrMAADszAAA3MwAANLMAADEzAAA +AAAAAAgAZGVmbGF0ZUVuZAAABQBkZWZsYXRlAAkAZGVmbGF0ZUluaXQyXwAoAGlu +ZmxhdGVFbmQAACMAaW5mbGF0ZQApAGluZmxhdGVJbml0Ml8AemxpYjEuZGxsAKIB +SGVhcFJlQWxsb2MAmQFIZWFwQWxsb2MAnwFIZWFwRnJlZQAALwJSdGxVbndpbmQA +fQBFeGl0UHJvY2VzcwCeAlRlcm1pbmF0ZVByb2Nlc3MAAPcAR2V0Q3VycmVudFBy +b2Nlc3MAGgFHZXRMYXN0RXJyb3IAAC0AQ3JlYXRlRGlyZWN0b3J5QQAAkABGaW5k +Q2xvc2UAigBGaWxlVGltZVRvU3lzdGVtVGltZQAAiQBGaWxlVGltZVRvTG9jYWxG +aWxlVGltZQAEAUdldERyaXZlVHlwZUEAlABGaW5kRmlyc3RGaWxlQQAAnQBGaW5k +TmV4dEZpbGVBAMoAR2V0Q29tbWFuZExpbmVBAHQBR2V0VmVyc2lvbgAACwJSYWlz +ZUV4Y2VwdGlvbgAAowFIZWFwU2l6ZQAAGwBDbG9zZUhhbmRsZQDfAldyaXRlRmls +ZQAYAlJlYWRGaWxlAACdAUhlYXBEZXN0cm95AJsBSGVhcENyZWF0ZQAAvwJWaXJ0 +dWFsRnJlZQC7AlZpcnR1YWxBbGxvYwAAuAFJc0JhZFdyaXRlUHRyAG0CU2V0SGFu +ZGxlQ291bnQAAFIBR2V0U3RkSGFuZGxlAAAVAUdldEZpbGVUeXBlAFABR2V0U3Rh +cnR1cEluZm9BABYBR2V0RnVsbFBhdGhOYW1lQQAA9QBHZXRDdXJyZW50RGlyZWN0 +b3J5QQAA0gJXaWRlQ2hhclRvTXVsdGlCeXRlAOQBTXVsdGlCeXRlVG9XaWRlQ2hh +cgC/AUxDTWFwU3RyaW5nQQAAwAFMQ01hcFN0cmluZ1cAAK0CVW5oYW5kbGVkRXhj +ZXB0aW9uRmlsdGVyAAAkAUdldE1vZHVsZUZpbGVOYW1lQQAAsgBGcmVlRW52aXJv +bm1lbnRTdHJpbmdzQQCzAEZyZWVFbnZpcm9ubWVudFN0cmluZ3NXAAYBR2V0RW52 +aXJvbm1lbnRTdHJpbmdzAAgBR2V0RW52aXJvbm1lbnRTdHJpbmdzVwAAiwJTZXRV +bmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIAfAJTZXRTdGRIYW5kbGUAAKoARmx1c2hG +aWxlQnVmZmVycwAANABDcmVhdGVGaWxlQQBqAlNldEZpbGVQb2ludGVyAAC1AUlz +QmFkUmVhZFB0cgAAsgFJc0JhZENvZGVQdHIAAL8AR2V0Q1BJbmZvALkAR2V0QUNQ +AAAxAUdldE9FTUNQAABwAUdldFRpbWVab25lSW5mb3JtYXRpb24AAFMBR2V0U3Ry +aW5nVHlwZUEAAFYBR2V0U3RyaW5nVHlwZVcAAD4BR2V0UHJvY0FkZHJlc3MAAMIB +TG9hZExpYnJhcnlBAABhAlNldEVuZE9mRmlsZQAAIQBDb21wYXJlU3RyaW5nQQAA +IgBDb21wYXJlU3RyaW5nVwAAYgJTZXRFbnZpcm9ubWVudFZhcmlhYmxlQQBLRVJO +RUwzMi5kbGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAAPAvQACAPUAA +jUJAAAAAAAAAAAAAT0NAAJVOQAC8pkAA6ppAAAAAAAAAAAAAOk9AAAAAAAAAAAAA ++5pAAAAAAAAAAAAAAAAAAHdiAAByYgAAMS4yLjMAAABVbnBhY2tUb0ZvbGRlci4g +RXJyb3IgaW4gY3JlYXRpbmcgZmlsZSEACgAAAGRhdGEAAAAAJXNcJXMuJXMAAAAA +aGVhZGVyAAAuAAAAfAAAAFByb2dyZXNzICg1MCBwb2ludHMpOiAAAFVucGFja1Rv +Rm9sZGVyLiBFcnJvciBpbiBjcmVhdGluZyBmaWxlIQoAAAAAJXNcJXMAAABGaWxl +SGVhZGVyAABVbnBhY2tUb0ZvbGRlci4gRXJyb3IgaW4gY3JlYXRpbmcgZGlyZWN0 +b3J5IQoAAABVbnBhY2tUb0ZvbGRlci4gVGhpcyBpcyBub3QgVjggZmlsZSEKAAAA +VW5wYWNrVG9Gb2xkZXIuIEVycm9yIGluIHJlYWRpbmcgZmlsZSEKAFVucGFja1Rv +Rm9sZGVyLiBOb3QgZW5vdWdoIG1lbW9yeSEKAFVucGFja1RvRm9sZGVyLiBJbnB1 +dCBmaWxlIG5vdCBmb3VuZCEKAABSZWFkQmxvY2tEYXRhLiBCbG9ja0RhdGEgPT0g +TlVMTC4AAAAuZGF0YQAAACVzXCouaGVhZGVyACVzXEZpbGVIZWFkZXIAAAAlMDh4 +AAAAAExvYWRGaWxlOiBvawoAAABTYXZlRmlsZS4gRXJyb3IgaW4gY3JlYXRpbmcg +ZmlsZSEAAAAlc1wqAAAAAFBhY2s6IG9rCgAAAExvYWRGaWxlRnJvbUZvbGRlcjog +b2sKAFY4VW5wYWNrLmV4ZSAtcGFjayAgICAgICAgMUN2OC51bmQgICAgICAgICAg +ICAgICAgICAgICAgICAxQ3Y4X25ldy5jZgoAAFY4VW5wYWNrLmV4ZSAtZGVmbGF0 +ZSAgICAgMUN2OC51bnBcbWV0YWRhdGFfbmV3LmRhdGEudW5kICAxQ3Y4LnVucFxt +ZXRhZGF0YS5kYXRhCgAAAFY4VW5wYWNrLmV4ZSAtcGFjayAgICAgICAgMUN2OC51 +bnBcbWV0YWRhdGEudW5wICAgICAgICAgICAxQ3Y4LnVucFxtZXRhZGF0YV9uZXcu +ZGF0YS51bmQKAAAAUEFDSwoAAABWOFVucGFjay5leGUgLXVucGFjayAgICAgIDFD +djgudW5wXG1ldGFkYXRhLmRhdGEudW5kICAgICAgMUN2OC51bnBcbWV0YWRhdGEu +dW5wCgAAAABWOFVucGFjay5leGUgLXVuZGVmbGF0ZSAgIDFDdjgudW5wXG1ldGFk +YXRhLmRhdGEgICAgICAgICAgMUN2OC51bnBcbWV0YWRhdGEuZGF0YS51bmQKAAAA +VjhVbnBhY2suZXhlIC11bnBhY2sgICAgICAxQ3Y4LmNmICAgICAgICAgICAgICAg +ICAgICAgICAgIDFDdjgudW5wCgBVTlBBQ0sKACAgLUJbVUlMRF0gICAgICBpbl9k +aXJuYW1lICAgICAgICAgb3V0X2ZpbGVuYW1lCgAAAAAgIC1QW0FSU0VdICAgICAg +aW5fZmlsZW5hbWUgICAgICAgIG91dF9kaXJuYW1lCgAgIC1CQVQKACAgLUVbWEFN +UExFXQoAAAAgIC1EW0VGTEFURV0gICAgaW5fZmlsZW5hbWUgICAgICAgIGZpbGVu +YW1lLmRhdGEKAAAAICAtSVtORkxBVEVdICAgIGluX2ZpbGVuYW1lLmRhdGEgICBv +dXRfZmlsZW5hbWUKAAAAACAgLVBBW0NLXSAgICAgICBpbl9kaXJuYW1lICAgICAg +ICAgb3V0X2ZpbGVuYW1lLmNmCgAgIC1VW05QQUNLXSAgICAgaW5fZmlsZW5hbWUu +Y2YgICAgIG91dF9kaXJuYW1lCgBWOFVOUEFDSwoAAABVbnBhY2ssIHBhY2ssIGRl +ZmxhdGUgYW5kIGluZmxhdGUgMUMgdjggZmlsZSAoKi5jZikKAAAAAFY4VXBhY2sg +VmVyc2lvbiAyLjAwIENvcHlyaWdodCAoYykgMjAwOCBEZW5pcyBEZW1pZG92IDIw +MDgtMDMtMzAKAAAALWUAAC1leGFtcGxlAAAAADpFTkQKAAAAVjhVbnBhY2suZXhl +IC1wYWNrICAgICAgICAlMi51bnAgICAgICAgICAgICAgICAgICAgICAgICAgJTIu +bmV3LmNmCgBWOFVucGFjay5leGUgLWRlZmxhdGUgICAgICUyLnVucFxtZXRhZGF0 +YV9uZXcuZGF0YS51bmQgICAlMi51bnBcbWV0YWRhdGEuZGF0YQoAAFY4VW5wYWNr +LmV4ZSAtcGFjayAgICAgICAgJTIudW5wXG1ldGFkYXRhLnVucCAgICAgICAgICAg +ICUyLnVucFxtZXRhZGF0YV9uZXcuZGF0YS51bmQKAAA6UEFDSwoAAEdPVE8gRU5E +CgAAAFY4VW5wYWNrLmV4ZSAtdW5wYWNrICAgICAgJTIudW5wXG1ldGFkYXRhLmRh +dGEudW5kICAgICAgICAlMi51bnBcbWV0YWRhdGEudW5wCgAAVjhVbnBhY2suZXhl +IC11bmRlZmxhdGUgICAlMi51bnBcbWV0YWRhdGEuZGF0YSAgICAgICAgICAgICUy +LnVucFxtZXRhZGF0YS5kYXRhLnVuZAoAVjhVbnBhY2suZXhlIC11bnBhY2sgICAg +ICAlMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUyLnVucAoAAAA6VU5Q +QUNLCgAAAABpZiAlMSA9PSBwIEdPVE8gUEFDSwoAAABpZiAlMSA9PSBQIEdPVE8g +UEFDSwoAAAAtYmF0AAAAAC1iAAAtYnVpbGQAAC1wAAAtcGFyc2UAAC1wYQAtcGFj +awAAAC11bnAAAAAALXUAAC11bnBhY2sALWQAAC1kZWZsYXRlAAAAAC11bmRlZmxh +dGUAAC11bmQAAAAALWkAAC1pbmZsYXRlAAAAAAAAAAAIwkAAAAAAAC4/QVZleGNl +cHRpb25AQAAIwkAAAAAAAC4/QVZsb2dpY19lcnJvckBzdGRAQAAAAAjCQAAAAAAA +Lj9BVmxlbmd0aF9lcnJvckBzdGRAQAAACMJAAAAAAAAuP0FWb3V0X29mX3Jhbmdl +QHN0ZEBAAAAAAAAAAAAAACAFkxkAAAAAAAAAAAAAAACA+UAAAAAAAID5QAABAQAA +AAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +Yk1AAAEAAAAIwkAAAAAAAC4/QVZ0eXBlX2luZm9AQACkmkAAAAAAAAAAAAAAAAAA +NGFAADRhQAAQAAAA+AMAAKSaQAAAAAAAAAAAAAAAAAAQw0AAAMNAAAEAAAAWAAAA +AgAAAAIAAAADAAAAAgAAAAQAAAAYAAAABQAAAA0AAAAGAAAACQAAAAcAAAAMAAAA +CAAAAAwAAAAJAAAADAAAAAoAAAAHAAAACwAAAAgAAAAMAAAAFgAAAA0AAAAWAAAA +DwAAAAIAAAAQAAAADQAAABEAAAASAAAAEgAAAAIAAAAhAAAADQAAADUAAAACAAAA +QQAAAA0AAABDAAAAAgAAAFAAAAARAAAAUgAAAA0AAABTAAAADQAAAFcAAAAWAAAA +WQAAAAsAAABsAAAADQAAAG0AAAAgAAAAcAAAABwAAAByAAAACQAAAAYAAAAWAAAA +gAAAAAoAAACBAAAACgAAAIIAAAAJAAAAgwAAABYAAACEAAAADQAAAJEAAAApAAAA +ngAAAA0AAAChAAAAAgAAAKQAAAALAAAApwAAAA0AAAC3AAAAEQAAAM4AAAACAAAA +1wAAAAsAAAAYBwAADAAAAP////8ACgAA4u1AAOLtQAAAACAAIAAgACAAIAAgACAA +IAAgACgAKAAoACgAKAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAA +IABIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAIQAhACEAIQAhACEAIQA +hACEAIQAEAAQABAAEAAQABAAEACBAIEAgQCBAIEAgQABAAEAAQABAAEAAQABAAEA +AQABAAEAAQABAAEAAQABAAEAAQABAAEAEAAQABAAEAAQABAAggCCAIIAggCCAIIA +AgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAEAAQABAA +IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAALgAAAAEAAAAFAADACwAAAAAAAAAdAADA +BAAAAAAAAACWAADABAAAAAAAAACNAADACAAAAAAAAACOAADACAAAAAAAAACPAADA +CAAAAAAAAACQAADACAAAAAAAAACRAADACAAAAAAAAACSAADACAAAAAAAAACTAADA +CAAAAAAAAAADAAAABwAAAAoAAACMAAAAAgAAAJzFQAAIAAAAcMVAAAkAAABExUAA +CgAAACDFQAAQAAAA9MRAABEAAADExEAAEgAAAKDEQAATAAAAdMRAABgAAAA8xEAA +GQAAABTEQAAaAAAA3MNAABsAAACkw0AAHAAAAHzDQAB4AAAAbMNAAHkAAABcw0AA +egAAAEzDQAD8AAAASMNAAP8AAAA4w0AAAAAAAAAAAACGtEAAhrRAAIa0QACGtEAA +hrRAAIa0QAAAAAAAAAAAAAECBAgAAAAApAMAAGCCeYIhAAAAAAAAAKbfAAAAAAAA +oaUAAAAAAACBn+D8AAAAAEB+gPwAAAAAqAMAAMGj2qMgAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAACB/gAAAAAAAED+AAAAAAAAtQMAAMGj2qMgAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAACB/gAAAAAAAEH+AAAAAAAAtgMAAM+i5KIaAOWi6KJbAAAAAAAAAAAA +AAAAAAAAAACB/gAAAAAAAEB+of4AAAAAUQUAAFHaXtogAF/aatoyAAAAAAAAAAAA +AAAAAAAAAACB09je4PkAADF+gf4AAAAAAAAAAAAAAACAcAAAAQAAAPDx//9QU1QA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAUERUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADzyQAB88kAAAAAAAP////8AAAAA +AAAAAAAAAAD/////AAAAAAAAAAD/////HgAAADsAAABaAAAAeAAAAJcAAAC1AAAA +1AAAAPMAAAARAQAAMAEAAE4BAABtAQAA/////x4AAAA6AAAAWQAAAHcAAACWAAAA +tAAAANMAAADyAAAAEAEAAC8BAABNAQAAbAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAA==} +} \ No newline at end of file diff --git a/src/Utils/UILogToScript/und/9e7b2a13-3bf6-401a-be4a-0dbf0d48a43b b/src/Utils/UILogToScript/und/9e7b2a13-3bf6-401a-be4a-0dbf0d48a43b new file mode 100644 index 00000000..5674eb0e --- /dev/null +++ b/src/Utils/UILogToScript/und/9e7b2a13-3bf6-401a-be4a-0dbf0d48a43b @@ -0,0 +1,285 @@ +{1, +{9e7b2a13-3bf6-401a-be4a-0dbf0d48a43b},1, +{c3831ec8-d8d5-4f93-8a22-f9bfae07327f, +{1, +{4,d2dcbcfb-d38e-4fa3-996c-ad9a927c7fab,e3fdc662-3b52-4d4f-b198-43b1f3f83ca7, +{0, +{1, +{0,0,6344d70f-6d22-465c-b456-63013e6bc378},"ПреобразованиеЖурналаДействийПользователя", +{2,"en","User action log convertor","ru","Преобразование журнала действий пользователя"},"",0,0} +},adfd948b-4804-4f26-9f93-cb3f704b8dc0,"",00000000-0000-0000-0000-000000000000},4, +{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, +{3daea016-69b7-4ed4-9453-127911372fe6,3,6810777b-4151-4eba-b50d-4a2a08b5be5a,b6e7785c-aad2-4c34-8c75-d98a7963dbaf,0b790809-ec18-47a5-9ea4-f803fe85b870}, +{d5b0e5ed-256d-401c-9c36-f630cafd8a62,1,adfd948b-4804-4f26-9f93-cb3f704b8dc0}, +{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,13, +{ +{0, +{27, +{2, +{1, +{0,0,ceb7f683-ec55-40fd-9da8-480000eb15f5},"CreatedProcedures", +{1,"en","Created procedures"},"",0,0}, +{"Pattern"} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0,0,0} +},0}, +{ +{0, +{27, +{2, +{1, +{0,0,1084a52f-b263-4bad-bca8-2d48eafad789},"WindowBeingProcessed", +{2,"en","Window being processed","ru","Обрабатываемое окно"},"",0,0}, +{"Pattern"} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0,0,0} +},0}, +{ +{0, +{27, +{2, +{1, +{0,0,041cb4e4-4871-42ac-a075-aa023eb1a696},"FormBeingProcessed", +{2,"en","Form being processed","ru","Обрабатываемая форма"},"",0,0}, +{"Pattern"} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0,0,0} +},0}, +{ +{0, +{27, +{2, +{1, +{0,0,d3e43529-0485-42b9-a24d-7c5b7df30073},"WindowClosed", +{2,"en","Window was closed","ru","Окно было закрыто"},"",0,0}, +{"Pattern", +{"B"} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0,0,0} +},0}, +{ +{0, +{27, +{2, +{1, +{0,0,9c35bc11-cc16-4c0a-8167-c524ac76224e},"LastProcessedCommand", +{2,"en","Last processed command","ru","Последняя обработанная команда"},"",0,0}, +{"Pattern", +{"S"} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0,0,0} +},0}, +{ +{0, +{27, +{2, +{1, +{0,0,2582396a-ffac-40ab-98b1-7062bda70ce7},"LastProcessedControl", +{2,"en","Last processed control","ru","Последний обработанный элемент управления"},"",0,0}, +{"Pattern", +{"S"} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0,0,0} +},0}, +{ +{0, +{27, +{2, +{1, +{0,0,12f65fa1-7e15-400a-8c44-b82b33aecd38},"MainProcedureName", +{2,"en","Main procedure name","ru","Имя основной процедуры"},"",0,0}, +{"Pattern", +{"S"} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,1, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0,0,0} +},0}, +{ +{0, +{27, +{2, +{1, +{0,0,a279c684-5737-425e-9c57-6acbaf6562d0},"GenerateClientConnectionScript", +{2,"en","Generate client connection script","ru","Гененировать код подключения к клиенту"},"",0,0}, +{"Pattern", +{"B"} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0,0,0} +},0}, +{ +{0, +{27, +{2, +{1, +{0,0,c42244c7-9637-4401-b886-46a5bf0fdc45},"ScriptVariant", +{2,"ru","Генерировать сценарий в варианте встроенного языка","en","1C:Enterprise script language"},"",0,0}, +{"Pattern", +{"S"} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,1, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0,0,0} +},0}, +{ +{0, +{27, +{2, +{1, +{0,0,fe21d66e-455d-4720-9717-d5cd14c68919},"ConversionVariant", +{2,"en","Convert","ru","Преобразовывать"},"",0,0}, +{"Pattern", +{"N",1,0,1} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0,0,0} +},0}, +{ +{0, +{27, +{2, +{1, +{0,0,9fd05663-44d9-4da2-a3fd-c2b908dfa029},"SplitScriptIntoProcedures", +{2,"en","Split scenario into procedures by application windows","ru","Разбивать результат на процедуры по ""границам"" окон"},"",0,0}, +{"Pattern", +{"B"} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0,0,0} +},0}, +{ +{0, +{27, +{2, +{1, +{0,0,6e0161b1-e831-4142-a631-88f3086e3712},"GetFullHierarchy", +{2,"en","Get full object hierarchy","ru","Генерировать получение родительских объектов в иерархии"},"",0,0}, +{"Pattern", +{"B"} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0,0,0} +},0}, +{ +{0, +{27, +{2, +{1, +{0,0,6660de3e-89b7-4bca-af70-d32b6032fb9d},"ObjectSearch", +{2,"en","Object search","ru","Поиск объектов"},"",0,0}, +{"Pattern", +{"N",1,0,1} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0,0,0} +},0} +} +} +} +} \ No newline at end of file diff --git a/src/Utils/UILogToScript/und/adfd948b-4804-4f26-9f93-cb3f704b8dc0 b/src/Utils/UILogToScript/und/adfd948b-4804-4f26-9f93-cb3f704b8dc0 new file mode 100644 index 00000000..eb3c9d1b --- /dev/null +++ b/src/Utils/UILogToScript/und/adfd948b-4804-4f26-9f93-cb3f704b8dc0 @@ -0,0 +1,15 @@ +{1, +{1, +{0, +{12, +{1, +{0,0,adfd948b-4804-4f26-9f93-cb3f704b8dc0},"DefaultForm", +{2,"en","Default form","ru","Основная форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1, +{2, +{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, +{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} +} +}, +{0} +} +},0} \ No newline at end of file diff --git a/src/Utils/UILogToScript/und/adfd948b-4804-4f26-9f93-cb3f704b8dc0.0 b/src/Utils/UILogToScript/und/adfd948b-4804-4f26-9f93-cb3f704b8dc0.0 new file mode 100644 index 00000000..ec63eafc --- /dev/null +++ b/src/Utils/UILogToScript/und/adfd948b-4804-4f26-9f93-cb3f704b8dc0.0 @@ -0,0 +1,2164 @@ +{3, +{42,0,0,0,0,1,0,1,00000000-0000-0000-0000-000000000000,1, +{1,0},0,0,1,1,1,0,1,0, +{3,3ccc650e-f631-4cae-8e33-3eaac610b5f9,"OnOpen",9f2e5ddb-3492-4f5d-8f0d-416b8d1d5c5b,"OnCreateAtServer",e73d6384-49d2-4885-a752-a674d6ff7742,"FillCheckProcessingAtServer",0,0}, +{0},1, +{21, +{-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},9,"FormCommandBar", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{0,0,0},2,a9f3b1ac-f51b-431e-b102-55a69acdecad, +{28, +{10,02023637-7868-4a5f-8576-835a76e0c9ba},0,1, +{0, +{0, +{"B",1},0} +},0,"Convert", +{1,0},1, +{1,409b9a53-7f7e-4178-86c1-33176c7c7a7a}, +{0},2,1,0,0,2,2,0,0,0, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,1,0, +{0},1,100}, +{0,0,0},0, +{4,0, +{0},"",-1,-1,1,0,""},1, +{"Pattern"},"",2,0,1, +{10, +{48,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},0,"ConvertExtendedToolTip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3}, +{"U"},1,0,0,1,0,0,0,3,3,3,0,0,0,0},a9f3b1ac-f51b-431e-b102-55a69acdecad, +{28, +{44,02023637-7868-4a5f-8576-835a76e0c9ba},0,1, +{0, +{0, +{"B",1},0} +},0,"FormHelp", +{1,0},1, +{0,39bb0fe9-771d-4dd5-8a6e-2d16984523af}, +{0},3,0,0,0,2,2,0,0,0, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},0, +{4,0, +{0},"",-1,-1,1,0,""},1, +{"Pattern"},"",2,0,1, +{10, +{49,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},0,"HelpFormExtendedToolTip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3}, +{"U"},1,0,0,1,0,0,0,3,3,3,0,0,0,0},1,0,0,0,3,3},4,cd5394d0-7dda-4b56-8927-93ccbe967a01, +{21, +{12,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},5,"ConversionParameters", +{1,2, +{"en","Conversion parameters"}, +{"ru","Параметры преобразования"} +}, +{1,2, +{"en","Conversion parameters"}, +{"ru","Параметры преобразования"} +},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{23,0,0,1,1, +{0}, +{1,0}, +{"Pattern"},"", +{3,4, +{0} +},0,0,0,1, +{1,0},0,0,3,3,2,0,1,0},6,77ffcc29-7f2d-4223-b22f-19666e7250ba, +{33, +{26,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},2,"ScriptVariant",1,0, +{1,0}, +{1,0}, +{2, +{1}, +{0,c42244c7-9637-4401-b886-46a5bf0fdc45} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{31, +{3,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2, +{"U"}, +{"U"},"",1, +{4,0, +{0},"",-1,-1,1,0,""},0,0,2,3,00000000-0000-0000-0000-000000000000, +{5004,0}, +{0,0},2, +{1,0}, +{1,0},2,1,0, +{"Pattern"},1, +{1,b50dc41b-c15a-4ebe-a17f-d01e51c47de6,"ScriptVariantClearing",0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100},1, +{3,0,0},0, +{1,0},2,0,2,0,1,0,0,1,0}, +{1,fe115cc8-9e33-4684-a166-bd5136fe7a9f,"ScriptVariantOnChange",0,0},1, +{21, +{27,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},8,"ScriptVariantContextMenu", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0,0,3,3},1, +{"Pattern"}, +{"Pattern"},"","", +{0},0,0,1, +{10, +{51,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},0,"ScriptVariantExtendedTooltip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},3,3},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{33, +{14,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},2,"MainProcedureName",1,0, +{1,0}, +{1,2, +{"en","Name of the procedure required for starting the scenario."}, +{"ru","Имя процедуры, которую необходимо вызвать для запуска сценария."} +}, +{2, +{1}, +{0,12f65fa1-7e15-400a-8c44-b82b33aecd38} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{31, +{3,0},0,0,2,2,1,2,2,2,2,2,2,2,2,2, +{"U"}, +{"U"},"",0, +{4,0, +{0},"",-1,-1,1,0,""},0,0,2,3,00000000-0000-0000-0000-000000000000, +{5004,0}, +{0,0},2, +{1,0}, +{1,0},2,1,0, +{"Pattern"},1, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100},1, +{3,0,0},0, +{1,0},2,0,2,0,1,0,0,1,0}, +{0,0,0},1, +{21, +{15,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},8,"MainProcedureNameContextMenu", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0,0,3,3},1, +{"Pattern"}, +{"Pattern"},"","", +{0},0,0,1, +{10, +{16,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},0,"MainProcedureNameExtendedToolTip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},3,3},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{33, +{23,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},3,"GenerateClientConnectionScript",1,0, +{1,0}, +{1,2, +{"en","Include the script to establish test client connection into the procedure."}, +{"ru","Вставлять процедуру код устанавливающий соединение с тестируемым клиентом."} +}, +{2, +{1}, +{0,a279c684-5737-425e-9c57-6acbaf6562d0} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{10,0, +{3,4, +{0} +}, +{3,4, +{0} +},0, +{1,0}, +{3,4, +{0} +}, +{7,3,0,1,100},0,0,0,2}, +{0,0,0},1, +{21, +{24,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},8,"GenerateClientConnectionScriptContextMenu", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0,0,3,3},1, +{"Pattern"}, +{"Pattern"},"","", +{0},0,0,1, +{10, +{53,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},0,"GenerateClientConnectionScriptEnhancedToolTip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},3,3},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{33, +{17,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},3,"SplitScriptIntoProcedures",1,0, +{1,0}, +{1,2, +{"en","Split the script scenario into procedures. Each procedure contains actions with a single window."}, +{"ru","Разделять сценарий на процедуры, в каждой из которых есть только действия относящиеся к одному окну."} +}, +{2, +{1}, +{0,9fd05663-44d9-4da2-a3fd-c2b908dfa029} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{10,0, +{3,4, +{0} +}, +{3,4, +{0} +},0, +{1,0}, +{3,4, +{0} +}, +{7,3,0,1,100},0,0,0,2}, +{0,0,0},1, +{21, +{18,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},8,"SplitScriptIntoProceduresContextMenu", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0,0,3,3},1, +{"Pattern"}, +{"Pattern"},"","", +{0},0,0,1, +{10, +{54,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},0,"SplitScriptIntoProceduresExtendedToolTip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},3,3},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{33, +{20,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},3,"GetFullHierarchy",1,0, +{1,0}, +{1,0}, +{2, +{1}, +{0,6e0161b1-e831-4142-a631-88f3086e3712} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{10,0, +{3,4, +{0} +}, +{3,4, +{0} +},0, +{1,0}, +{3,4, +{0} +}, +{7,3,0,1,100},0,0,0,2}, +{0,0,0},1, +{21, +{21,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},8,"GetFullHierarchyContextMenu", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0,0,3,3},1, +{"Pattern"}, +{"Pattern"},"","", +{0},0,0,1, +{10, +{22,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},0,"GetFullHierarchyExtendedToolTip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},3,3},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{33, +{46,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},5,"ObjectSearch",1,0, +{1,0}, +{1,0}, +{2, +{1}, +{0,6660de3e-89b7-4bca-af70-d32b6032fb9d} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{8, +{3,0},0, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +},0,0, +{3,4, +{0} +},0,0,2}, +{0,0,0},1, +{21, +{47,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},8,"ObjectSearchContextMenu", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0,0,3,3},1, +{"Pattern"}, +{"Pattern"},"","", +{0},0,0,1, +{10, +{56,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},0,"ObjectSearchExtendedTooltip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},3,3},1,0,1, +{10, +{50,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},0,"ConversionParametersExtendedToolTip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{33, +{29,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},5,"ConversionVariant",1,0, +{1,0}, +{1,0}, +{2, +{1}, +{0,fe21d66e-455d-4720-9717-d5cd14c68919} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{8, +{3,0},0, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +},0,0, +{3,4, +{0} +},0,0,2}, +{1,fe115cc8-9e33-4684-a166-bd5136fe7a9f,"ConversionVariantOnChange",0,0},1, +{21, +{30,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},8,"ConversionVariantContextMenu", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0,0,3,3},1, +{"Pattern"}, +{"Pattern"},"","", +{0},0,0,1, +{10, +{57,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},0,"ConversionVariantExtendedToolTip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},3,3},cd5394d0-7dda-4b56-8927-93ccbe967a01, +{21, +{42,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},3,"SourceData", +{1,2, +{"en","Source data"}, +{"ru","Исходные данные"} +}, +{1,1, +{"en","Source data"} +},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,0, +{0,0,0} +},3,cd5394d0-7dda-4b56-8927-93ccbe967a01, +{21, +{32,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},4,"SourceFiles", +{1,2, +{"en","Source files"}, +{"ru","Исходные файлы"} +}, +{1,2, +{"en","Source files"}, +{"ru","Исходные файлы"} +},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{16, +{4,0, +{0},"",-1,-1,1,0,""},0,0, +{0}, +{1,0},1, +{"Pattern"},"", +{3,4, +{0} +},0,0,3,3,0,0,0},2,77ffcc29-7f2d-4223-b22f-19666e7250ba, +{33, +{7,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},2,"SourceFile",1,0, +{1,0}, +{1,0}, +{1, +{2} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{31, +{3,0},0,0,2,2,1,2,2,2,2,2,1,2,2,1, +{"U"}, +{"U"},"",0, +{4,0, +{0},"",-1,-1,1,0,""},0,0,2,3,00000000-0000-0000-0000-000000000000, +{5004,0}, +{0,0},2, +{1,0}, +{1,0},2,1,0, +{"Pattern"},1, +{2,1960479b-4d89-4eba-8b39-0aa802020558,"SourceFileOnStartChoice",ac5a9c5a-5f1d-4fc5-b88c-a187038c16d1,"SourceFileOnOpen",0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100},1, +{3,0,0},0, +{1,0},2,0,2,0,1,0,0,1,0}, +{0,0,0},1, +{21, +{8,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},8,"SourceFileContextMenu", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0,0,3,3},1, +{"Pattern"}, +{"Pattern"},"","", +{0},0,0,1, +{10, +{60,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},0,"SourceFileExtendedToolTip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},3,3},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{33, +{4,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},2,"ResultFile",1,0, +{1,0}, +{1,0}, +{1, +{4} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{31, +{3,0},0,0,2,2,1,2,2,2,2,2,1,2,2,1, +{"U"}, +{"U"},"",0, +{4,0, +{0},"",-1,-1,1,0,""},0,0,2,3,00000000-0000-0000-0000-000000000000, +{5004,0}, +{0,0},2, +{1,0}, +{1,0},2,1,0, +{"Pattern"},1, +{2,1960479b-4d89-4eba-8b39-0aa802020558,"ResultFileOnStartChoice",ac5a9c5a-5f1d-4fc5-b88c-a187038c16d1,"ResultFileOnOpen",0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100},1, +{3,0,0},0, +{1,0},2,0,2,0,1,0,0,1,0}, +{0,0,0},1, +{21, +{5,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},8,"ResultFileContextMenu", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0,0,3,3},1, +{"Pattern"}, +{"Pattern"},"","", +{0},0,0,1, +{10, +{61,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},0,"ResultFileExtensionToolTip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},3,3},1,0,1, +{10, +{59,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},0,"SourceFilesExtendedToolTip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},cd5394d0-7dda-4b56-8927-93ccbe967a01, +{21, +{34,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},4,"SourceTexts", +{1,2, +{"en","Source texts"}, +{"ru","Исходные тексты"} +}, +{1,2, +{"en","Source texts"}, +{"ru","Исходные тексты"} +},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{16, +{4,0, +{0},"",-1,-1,1,0,""},1,0, +{0}, +{1,0},1, +{"Pattern"},"", +{3,4, +{0} +},0,0,3,3,0,0,1},2,77ffcc29-7f2d-4223-b22f-19666e7250ba, +{33, +{36,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},7,"SourceText",1,0, +{1,0}, +{1,0}, +{1, +{11} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{4,50,10,1,1,0, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100},1,0,0,1,0}, +{0,0,0},1, +{21, +{37,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},8,"SourceTextContextMenu", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0,0,3,3},1, +{"Pattern"}, +{"Pattern"},"","", +{0},0,0,1, +{10, +{63,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},0,"SourceTextExtendedToolTip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},3,3},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{33, +{39,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},7,"ResultText",1,0, +{1,0}, +{1,0}, +{1, +{12} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{4,50,10,1,1,0, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100},1,0,0,1,0}, +{0,0,0},1, +{21, +{40,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},8,"ResultTextContextMenu", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0,0,3,3},1, +{"Pattern"}, +{"Pattern"},"","", +{0},0,0,1, +{10, +{64,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},0,"ResultTextExtendedToolTip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},3,3},1,0,1, +{10, +{62,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},0,"SourceTextsExtendedToolTip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},cd5394d0-7dda-4b56-8927-93ccbe967a01, +{21, +{68,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},4,"GenerateFileByText", +{1,1, +{"ru","Generate file by text"} +}, +{1,1, +{"ru","Generate file by text"} +},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{16, +{4,0, +{0},"",-1,-1,1,0,""},1,0, +{0}, +{1,0},1, +{"Pattern"},"", +{3,4, +{0} +},0,0,3,3,0,0,1},2,77ffcc29-7f2d-4223-b22f-19666e7250ba, +{33, +{70,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},7,"SourceTextToDataProcessor",1,0, +{1,0}, +{1,0}, +{1, +{11} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{4,50,10,1,1,0, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100},1,0,0,1,0}, +{0,0,0},1, +{21, +{71,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},8,"SourceTextToDataProcessorКонтекстноеМеню", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0,0,3,3},1, +{"Pattern"}, +{"Pattern"},"","", +{0},0,0,1, +{10, +{72,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"SourceTextToDataProcessorРасширеннаяПодсказка", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},3,3},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{33, +{73,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},2,"ResultFileDataProcessor",1,0, +{1,0}, +{1,0}, +{1, +{4} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{31, +{3,0},0,0,2,2,1,2,2,2,2,2,1,2,2,1, +{"U"}, +{"U"},"",0, +{4,0, +{0},"",-1,-1,1,0,""},0,0,2,3,00000000-0000-0000-0000-000000000000, +{5004,0}, +{0,0},2, +{1,0}, +{1,0},2,1,0, +{"Pattern"},1, +{2,1960479b-4d89-4eba-8b39-0aa802020558,"ResultFileOnStartChoice",ac5a9c5a-5f1d-4fc5-b88c-a187038c16d1,"ResultFileOnOpen",0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100},1, +{3,0,0},0, +{1,0},2,0,2,0,1,0,0,1,0}, +{0,0,0},1, +{21, +{74,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},8,"ResultFileDataProcessorКонтекстноеМеню", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0,0,3,3},1, +{"Pattern"}, +{"Pattern"},"","", +{0},0,0,1, +{10, +{75,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ResultFileDataProcessorРасширеннаяПодсказка", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},3,3},1,0,1, +{10, +{69,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"GenerateFileByTextРасширеннаяПодсказка", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,0,1, +{10, +{43,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},0,"SourceDataExtendedToolTip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},3d3cb80c-508b-41fa-8a18-680cdf5f1712, +{10, +{65,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},0,"VersionCaption", +{1,3, +{"en","Version 1.0.3.3"}, +{"ru","Версия 1.0.3.1"}, +{"sys","Версия 1.0.3.1"} +}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},1, +{21, +{66,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,8,"VersionCaptionContextMenu", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0,0,3,3},1,2, +{1, +{1,3, +{"en","Version 1.0.3.3"}, +{"ru","Версия 1.0.3.1"}, +{"sys","Версия 1.0.3.1"} +},0},0,1, +{10, +{67,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"VersionCaptionExtendedTooltip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},1,0,0,1,0,3,3},"","",1, +{21, +{0},0,0,0,7,"Navigator", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},0,0,1,0,1, +{10, +{0},0,0,0,0,"NavigatorExtendedTooltip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,"",2,0,0,0,0,0,3,3,0,0,2}," +//////////////////////////////////////////////////////////////////////////////// +// FORM EVENT HANDLERS +&AtServer +Procedure OnCreateAtServer(Cancel, StandardProcessing) + + // Setting up initial values + Object.SplitScriptIntoProcedures = True; + + Object.ScriptVariant = ? (String(Metadata.ScriptVariant) = ""English"", ""en"", ""ru""); + + + Items.ScriptVariant.ChoiceList.Add(""en"", NStr(""en = 'English'; ru = 'Английский'"")); + Items.ScriptVariant.ChoiceList.Add(""ru"", NStr(""en = 'Russian'; ru = 'Русский'"")); + + Items.ObjectSearch.ChoiceList.Add(0, NStr(""en = 'By presentation'; ru = 'По представлению'"")); + Items.ObjectSearch.ChoiceList.Add(1, NStr(""en = 'By name'; ru = 'По имени'"")); + Items.ObjectSearch.ChoiceList.Add(2, NStr(""en = 'By name and presentation'; ru = 'По имени и представлению'"")); + + Items.ConversionVariant.ChoiceList.Add(0, NStr(""en = 'Log'; ru = 'Журнал'"")); + Items.ConversionVariant.ChoiceList.Add(1, NStr(""en = 'Text'; ru = 'Текст'"")); + + // { xUnitFor1C - Дополнительные команды + Items.ConversionVariant.ChoiceList.Add(2, NStr(""ru = 'Из журнала в обработку-тест для xUnitFor1C'"")); + Items.ConversionVariant.ChoiceList.Add(3, NStr(""ru = 'Из текста в обработку-тест для xUnitFor1C'"")); + // } xUnitFor1C - Дополнительные команды + +EndProcedure + +&AtClient +Procedure OnOpen(Cancel) + + Object.MainProcedureName = ?(Object.ScriptVariant = ""en"", ""TestScenario_"", ""ТестовыйСценарий_"") + ClearDate(Format(CurrentDate(), ""DLF=D"")); + + Items.SourceData.CurrentPage = ?(Object.ConversionVariant = 0,Items.SourceFiles, Items.SourceTexts); + + // { xUnitFor1C + SetVisibleOptionsForConvertionType(); + // } xUnitFor1C + +EndProcedure + +&AtServer +Procedure FillCheckProcessingAtServer(Cancel, AttributesToCheck) + + // Adding check fields according to the transform variant + If Object.ConversionVariant = 0 Then + + AttributesToCheck.Add(""SourceFile""); + AttributesToCheck.Add(""ResultFile""); + + Else + + If Not ValueIsFilled(SourceText.GetText()) Then + + Cancel = True; + + NewMessage = New UserMessage(); + NewMessage.Text = NStr(""en = 'User action log is not specified.'; ru = 'Поле """"Журнал действий пользователя"""" не заполнено.'""); + NewMessage.DataPath = ""SourceText""; + NewMessage.Message(); + + EndIf; + + EndIf; + +EndProcedure + +//////////////////////////////////////////////////////////////////////////////// +// CONTROL EVENT HANDLERS +&AtClient +Procedure ConversionVariantOnChange(Item) + + Items.SourceData.CurrentPage = ? (Object.ConversionVariant = 0, Items.SourceFiles, Items.SourceTexts); + + // { xUnitFor1C + SetVisibleOptionsForConvertionType(); + // } xUnitFor1C + +EndProcedure + +&AtClient +Procedure ScriptVariantClearing(Item, StandardProcessing) + + StandardProcessing = False; + +EndProcedure + +&AtClient +Procedure ScriptVariantOnChange(Item) + + Object.MainProcedureName = ? (Object.ScriptVariant = ""en"", ""TestScenario_"", ""ТестовыйСценарий_"") + ClearDate(Format(CurrentDate(), ""DLF=D"")); + +EndProcedure + +&AtClient +Procedure SourceFileOnStartChoice(Item, ChoiceData, StandardProcessing) + + StandardProcessing = False; + + Dialog = New FileDialog(FileDialogMode.Open); + + Dialog.FullFileName = SourceFile; + Dialog.Title = NStr(""en = 'Specify the user action log file.'; ru = 'Укажите файл журнала действий пользователя'""); + Dialog.Filter = NStr(""en = 'User action log file (*.uil,*.txt,*.xml)|*.uil;*.txt;*.xml|All files (*.*)|*.*'; ru = 'Файлы журнала действий пользователя (*.uil,*.txt,*.xml)|*.uil;*.txt;*.xml|Все файлы (*.*)|*.*'""); + Dialog.DefaultExt= ""uil""; + + If Dialog.Choose() Then + + SourceFile = Dialog.FullFileName; + + If Not ValueIsFilled(ResultFile) Then + + ResultFile = Left(Dialog.FullFileName, StrLen(Dialog.FullFileName) - StrLen(Dialog.DefaultExt)) + NStr(""en = 'ModuleText'; ru = 'ТекстМодуля'"") + "".txt"" + + EndIf; + + EndIf; + +EndProcedure + +&AtClient +Procedure SourceFileOnOpen(Item, StandardProcessing) + + StandardProcessing = False; + + DocumentToView = New TextDocument(); + DocumentToView.Read(SourceFile); + DocumentToView.Show(SourceFile); + +EndProcedure + +&AtClient +Procedure ResultFileOnStartChoice(Item, ChoiceData, StandardProcessing) + + StandardProcessing = False; + + Dialog = New FileDialog(FileDialogMode.Save); + + Dialog.FullFileName = ResultFile; + Dialog.Title = NStr(""en = 'Specify the file where the conversion result will be saved.'; ru = 'Укажите файл для сохранения результата преобразования'""); + Dialog.Filter= NStr(""en = 'Text files (*.txt)|*.txt|All files (*.*)|*.*'; ru = 'Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*'""); + + // { xUnitFor1C + If Object.ConversionVariant >= 2 Then + Dialog.Filter= NStr(""ru = 'Внешние обработки (*.epf)|*.epf|Все файлы (*.*)|*.*'""); + EndIf; + // { xUnitFor1C + + If Dialog.Choose() Then + + ResultFile = Dialog.FullFileName; + + EndIf; + +EndProcedure + +&AtClient +Procedure ResultFileOnOpen(Item, StandardProcessing) + + StandardProcessing = False; + + DocumentToView = New TextDocument(); + DocumentToView.Read(ResultFile); + DocumentToView.Show(ResultFile); + +EndProcedure + +//////////////////////////////////////////////////////////////////////////////// +// AUXILIARY PROCEDURES AND FUNCTIONS +&AtClient +Function IsDigit(Char) + + Code = CharCode (Char); + Return Code >= 48 And Code <= 57; + +EndFunction + +&AtClient +Function IsLetter(Char) + + // All non-literal character codes are considered equal + Return CharCode(Lower(Char)) <> CharCode(Upper(Char)); + +EndFunction + +&AtClient +Function ClearDate(DateToClear) + + Result = """"; + + StringLength = StrLen(DateToClear); + For Index = 1 To StringLength Do + NextChar = Mid(DateToClear,Index, 1); + If IsDigit(NextChar) Then + Result = Result + NextChar; + Else + Result = Result + ""_""; + EndIf; + EndDo; + + Return Result; + +EndFunction + +//////////////////////////////////////////////////////////////////////////////// +// Conversion procedures +&AtServer +Function ConvertAtServer(TextToConvert) + + ThisDataProcessor = FormAttributeToValue(""Object""); + + // { xUnitFor1C + If Object.ConversionVariant >= 2 Then + StringBase64 = ThisDataProcessor.CreateDataProcessor(TextToConvert); + Return StringBase64; + EndIf; + // } xUnitFor1C + + Return ThisDataProcessor.Convert(TextToConvert); + +EndFunction + +&AtClient +Procedure Convert(Command) + + // Preparing data to be converted + ClearMessages(); + If Not CheckFilling() Then + Return; + EndIf; + + TextToConvert = """"; + If Object.ConversionVariant = 0 Then + + Reader = New TextDocument(); + Reader.Read(SourceFile); + TextToConvert = Reader.GetText(); + Reader = Undefined; + + Else + + TextToConvert = SourceText.GetText(); + + EndIf; + + ConversionResult = ConvertAtServer(TextToConvert); + + If Not ValueIsFilled(ConversionResult) Then + Message(NStr(""en = 'Cannot convert data'; ru = 'Не удалось выполнить преобразование'"")); + Return; + EndIf; + + If Object.ConversionVariant = 0 Then + + Writer = New TextDocument(); + Writer.AddLine(ConversionResult); + Writer.Write(ResultFile); + Writer.Show(ResultFile); + + // { xUnitFor1C + ElsIf Object.ConversionVariant >= 2 Then + Try + BinaryData = Base64Value(ConversionResult); + BinaryData.Write(ResultFile); + Except + NewMessage = New UserMessage(); + NewMessage.Text = NStr(""ru = 'Не удалось сохранить base64 внешнией обработки в файл'; en = 'Can''t save base64 of data processor to file'""); + NewMessage.Message(); + EndTry; + // } xUnitFor1C + + Else + + ResultText.Clear(); + ResultText.AddLine(ConversionResult); + + EndIf; + +EndProcedure + +// { xUnitFor1C + +&AtClient +Procedure SetVisibleOptionsForConvertionType() + + // { xUnitFor1C - Настройка текущей страницы для доп. вариантов преобразования действий пользователя + If Object.ConversionVariant = 2 Then + Items.SourceData.CurrentPage = Items.SourceFiles; + ElsIf Object.ConversionVariant = 3 Then + Items.SourceData.CurrentPage = Items.GenerateFileByText; + EndIf; + StandartChoice = (Object.ConversionVariant < 2); + Object.GenerateClientConnectionScript = StandartChoice; + Items.GenerateClientConnectionScript.Enabled = StandartChoice; + // } xUnitFor1C - Настройка текущей страницы для доп. вариантов преобразования действий пользователя + +EndProcedure + +// } xUnitFor1C", +{4,5, +{9, +{1},0,"Object", +{1,0}, +{"Pattern", +{"#",d2dcbcfb-d38e-4fa3-996c-ad9a927c7fab} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,7, +{1, +{0,12f65fa1-7e15-400a-8c44-b82b33aecd38} +}, +{1, +{0,6660de3e-89b7-4bca-af70-d32b6032fb9d} +}, +{1, +{0,6e0161b1-e831-4142-a631-88f3086e3712} +}, +{1, +{0,9fd05663-44d9-4da2-a3fd-c2b908dfa029} +}, +{1, +{0,a279c684-5737-425e-9c57-6acbaf6562d0} +}, +{1, +{0,c42244c7-9637-4401-b886-46a5bf0fdc45} +}, +{1, +{0,fe21d66e-455d-4720-9717-d5cd14c68919} +} +},1,0,0,0, +{0,0}, +{0,0} +}, +{9, +{2},0,"SourceFile", +{1,2, +{"en","Source file"}, +{"ru","Преобразовывать журнал"} +}, +{"Pattern", +{"S"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,1, +{0} +},0,0,0,0, +{0,0}, +{0,0} +}, +{9, +{4},0,"ResultFile", +{1,2, +{"en","Result file"}, +{"ru","Сохранять результат в"} +}, +{"Pattern", +{"S"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,1, +{0} +},0,0,0,0, +{0,0}, +{0,0} +}, +{9, +{11},0,"SourceText", +{1,2, +{"en","User action log"}, +{"ru","Журнал действий пользователя"} +}, +{"Pattern", +{"#",ebf766b1-f32c-11d3-9851-008048da1252} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},0,0,0,0, +{0,0}, +{0,0} +}, +{9, +{12},0,"ResultText", +{1,2, +{"en","Scenario"}, +{"ru","Сценарий"} +}, +{"Pattern", +{"#",ebf766b1-f32c-11d3-9851-008048da1252} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},0,0,0,0, +{0,0}, +{0,0} +},0,0, +{#base64:77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxTZXR0 +aW5ncyB4bWxucz0iaHR0cDovL3Y4LjFjLnJ1LzguMS9kYXRhLWNvbXBvc2l0aW9u +LXN5c3RlbS9zZXR0aW5ncyIgeG1sbnM6ZGNzY29yPSJodHRwOi8vdjguMWMucnUv +OC4xL2RhdGEtY29tcG9zaXRpb24tc3lzdGVtL2NvcmUiIHhtbG5zOnN0eWxlPSJo +dHRwOi8vdjguMWMucnUvOC4xL2RhdGEvdWkvc3R5bGUiIHhtbG5zOnN5cz0iaHR0 +cDovL3Y4LjFjLnJ1LzguMS9kYXRhL3VpL2ZvbnRzL3N5c3RlbSIgeG1sbnM6djg9 +Imh0dHA6Ly92OC4xYy5ydS84LjEvZGF0YS9jb3JlIiB4bWxuczp2OHVpPSJodHRw +Oi8vdjguMWMucnUvOC4xL2RhdGEvdWkiIHhtbG5zOndlYj0iaHR0cDovL3Y4LjFj +LnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93ZWIiIHhtbG5zOndpbj0iaHR0cDovL3Y4 +LjFjLnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93aW5kb3dzIiB4bWxuczp4cz0iaHR0 +cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDov +L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} +}, +{0,0}, +{0,1, +{7, +{1,409b9a53-7f7e-4178-86c1-33176c7c7a7a},"Convert", +{1,2, +{"en","Convert"}, +{"ru","Преобразовать"} +}, +{1,2, +{"en","Convert the user action log into the 1C:Enterprise script scenario"}, +{"ru","Преобразовать журнал действий во встроенный язык"} +}, +{0, +{0, +{"B",1},0} +}, +{0,0,0}, +{4,1, +{0,0ce78048-0196-4f80-a781-9829cdb7f43e},"",-1,-1,1,0,""},"Convert",2,0,0, +{0,0},1,0} +}, +{0,0}, +{0,0},0,0} \ No newline at end of file diff --git a/src/Utils/UILogToScript/und/adfd948b-4804-4f26-9f93-cb3f704b8dc0.1 b/src/Utils/UILogToScript/und/adfd948b-4804-4f26-9f93-cb3f704b8dc0.1 new file mode 100644 index 00000000..8fb34555 --- /dev/null +++ b/src/Utils/UILogToScript/und/adfd948b-4804-4f26-9f93-cb3f704b8dc0.1 @@ -0,0 +1,21 @@ +{5,1,"en", +{#base64:77u/PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBU +cmFuc2l0aW9uYWwvL0VOIj48aHRtbD48aGVhZD48bWV0YSBjb250ZW50PSJ0ZXh0 +L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSI+ +PC9tZXRhPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhy +ZWY9InY4aGVscDovL3NlcnZpY2VfYm9vay9zZXJ2aWNlX3N0eWxlIj48L2xpbms+ +PG1ldGEgbmFtZT0iR0VORVJBVE9SIiBjb250ZW50PSJNU0hUTUwgMTEuMDAuMTA1 +ODYuNDk0Ij48L21ldGE+PC9oZWFkPjxib2R5Pg0KPHA+0JLQtdGA0YHQuNGPIDEu +MC4zLjM8L3A+DQo8cD4qINCY0YHQv9GA0LDQstC70LXQvdCwINC+0YjQuNCx0LrQ +sCDQuNC3LdC30LAg0LrQvtC0INGC0LXRgdGC0LAg0LTQu9GPINGD0LfQu9CwIHNl +dE9yZGVyINC90LUg0LPQtdC90LXRgNC40YDQvtCy0LDQu9GB0Y8uPC9wPg0KPHA+ +0JLQtdGA0YHQuNGPIDEuMC4zLjI8L3A+DQo8cD4qINCY0YHQv9GA0LDQstC70LXQ +vdCwINC+0YjQuNCx0LrQsCDQs9C10L3QtdGA0LDRhtC40Lgg0YHRhtC10L3QsNGA +0LjRjyDQuNC3LdC30LAg0LrQvtGC0L7RgNC+0Lkg0LPQtdC90LXRgNC40YDQvtCy +0LDQu9GB0Y8g0L3QtdC60L7RgNGA0LXQutGC0L3Ri9C5INC60L7QtCDQv9C+0LjR +gdC6INGN0LvQtdC80LXQvdGC0LAg0YPQv9GA0LDQstC70LXQvdC40Y8swqDQtdGB +0LvQuCDRgyDRg9C30LvQsCDQvtC/0LjRgdGL0LLQsNGO0YnQtdCz0L4g0Y3Qu9C1 +0LzQtdC90YIg0L/RgNC40YHRg9GC0YHRgtCy0L7QstCw0LvQviDRgtC+0LvRjNC6 +0L4g0LjQvNGPLCDQsCDRgtGA0LXQsdC+0LLQsNC70L7RgdGMINC40YHQutCw0YLR +jCDRgtC+0LvRjNC60L4g0L/QviDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjRji48 +L3A+PC9ib2R5PjwvaHRtbD4=},0} \ No newline at end of file diff --git a/src/Utils/UILogToScript/und/b6e7785c-aad2-4c34-8c75-d98a7963dbaf b/src/Utils/UILogToScript/und/b6e7785c-aad2-4c34-8c75-d98a7963dbaf new file mode 100644 index 00000000..9f7340ba --- /dev/null +++ b/src/Utils/UILogToScript/und/b6e7785c-aad2-4c34-8c75-d98a7963dbaf @@ -0,0 +1,6 @@ +{1, +{2,1, +{0, +{0,0,b6e7785c-aad2-4c34-8c75-d98a7963dbaf},"zlib1", +{1,"ru","Zlib1"},""} +},0} \ No newline at end of file diff --git a/src/Utils/UILogToScript/und/b6e7785c-aad2-4c34-8c75-d98a7963dbaf.0 b/src/Utils/UILogToScript/und/b6e7785c-aad2-4c34-8c75-d98a7963dbaf.0 new file mode 100644 index 00000000..b6fa4088 --- /dev/null +++ b/src/Utils/UILogToScript/und/b6e7785c-aad2-4c34-8c75-d98a7963dbaf.0 @@ -0,0 +1,1251 @@ +{1, +{#base64:TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAEAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5v +dCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAAAFd2a9QRYI7kEWCO5BFgju +Iwkb7kMWCO5BFgnuVxYI7i4JDO5CFgjuLgkC7kQWCO7CCgbuQBYI7kQaa+5MFgju +RBoH7kAWCO69NhruQBYI7kQaVO5AFgjurR1W7kAWCO5EGlLuQBYI7lJpY2hBFgju +AAAAAAAAAAAAAAAAAAAAAFBFAABMAQUA2h3eQgAAAAAAAAAA4AAOIQsBBwoAlAAA +AFIAAAAAAABGoQAAABAAAACwAAAAAAAQABAAAAACAAAEAAAAAAAAAAQAAAAAAAAA +ADABAAAEAACH9QAAAgAAAAAAEAAAEAAAAAAQAAAQAAAAAAAAEAAAAPDxAABdBAAA +ZPAAADwAAAAAEAEAmAMAAAAAAAAAAAAAAAAAAAAAAAAAIAEAsAIAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAABYAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALnRleHQAAAA/kgAAABAAAACUAAAABAAA +AAAAAAAAAAAAAAAAIAAAYC5yZGF0YQAATUYAAACwAAAASAAAAJgAAAAAAAAAAAAA +AAAAAEAAAEAuZGF0YQAAAHQAAAAAAAEAAAIAAADgAAAAAAAAAAAAAAAAAABAAADA +LnJzcmMAAACYAwAAABABAAAEAAAA4gAAAAAAAAAAAAAAAAAAQAAAQC5yZWxvYwAA +aAMAAAAgAQAABAAAAOYAAAAAAAAAAAAAAAAAAEAAAEIAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAItMJARTi1wkEFeL+cHvEIHh//8AAIP7AXUxi0QkEA+2 +EAPKgfnx/wAAcgaB6fH/AAAD+YH/8f8AAHIGge/x/wAAi8fB4BBfC8Fbw1aLdCQU +hfZ1CV5fuAEAAABbw4P7EHMzhdt0Cw+2BgPIRgP5S3X1gfnx/wAAcgaB6fH/AACL +xzPSvvH/AAD39l5fW4vCweAQC8HDgfuwFQAAD4LKAAAAuK+pbl7341WL6sHtC4v/ +geuwFQAAuFsBAADrA41JAA+2FgPKD7ZWAQP5A8oPtlYCA/kDyg+2VgMD+QPKD7ZW +BAP5A8oPtlYFA/kDyg+2VgYD+QPKD7ZWBwP5A8oPtlYIA/kDyg+2VgkD+QPKD7ZW +CgP5A8oPtlYLA/kDyg+2VgwD+QPKD7ZWDQP5A8oPtlYOA/kDyg+2Vg8D+QPKA/mD +xhBID4V3////i8Ez0rnx/wAA9/GLx7/x/wAAi8oz0vf3TYv6D4VG////XYXbD4TD +AAAAg/sQD4KRAAAAi8PB6AQPthYDyg+2VgED+QPKD7ZWAgP5A8oPtlYDA/kDyg+2 +VgQD+QPKD7ZWBQP5A8oPtlYGA/kDyg+2VgcD+QPKD7ZWCAP5A8oPtlYJA/kDyg+2 +VgoD+QPKD7ZWCwP5A8oPtlYMA/kDyg+2Vg0D+QPKD7ZWDgP5A8oPtlYPA/kDyoPr +EAP5g8YQSA+FdP///4XbdAsPtgYDyEYD+Ut19YvBM9K58f8AAPfxi8e+8f8AAIvK +M9L39ov6i8deweAQXwvBW8PMzMzMzMzMzMzMzMzMzMyD7DiLTCRIi1QkPItEJERT +i1wkRGo4aFiwABBqAGoIag+JTCQci0wkZGoIiVQkKIlEJByLA1GNVCQgUolEJDTH +RCREAAAAAMdEJEgAAAAAx0QkTAAAAADo5AMAAIPEIIXAdUlWjUQkCGoEUOiwCQAA +i/CDxAiD/gF0Ho1MJAhR6NwRAACDxASF9rj7////dBuLxl5bg8Q4w4tUJByNRCQI +UIkT6LgRAACDxAReW4PEOMPMzMzMzMzMzMzMzMzMzMyLRCQQi0wkDItUJAhq/1CL +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 +dAhfuP7///9ew4tACIXAdAtQi0YoUP9WJIPECItOHItBRIXAdAuLVihQUv9WJIPE +CItGHItAQIXAdAuLTihQUf9WJIPECItWHItCOIXAdAtQi0YoUP9WJIPECItOHItW +KFFS/1Ykg8QIM8CD/3EPlcBfx0YcAAAAAF5Ig+D9w7j+////XsPMzMzMzMzMzMzM +VVaLdCQQhfYPhJEBAACLbCQMhe0PhIUBAACLRhyFwIlEJBAPhHYBAABTV7kOAAAA +i/1owBYAAPOli0UoagFQ/1Ugi9iDxAyF2w+ERgEAAIt0JBiJXRy5sAUAAIv786WL +SyxqAokri1UoUVL/VSCJQziLQyyLTShqAlBR/1Ugi1NMagKJQ0CLRShSUP9VIIuL +nBYAAGoEiUNEi1UoUVL/VSCLeziDxDCF/4lDCA+E2gAAAItLQIXJD4TPAAAAi0tE +hckPhMQAAACFwA+EvAAAAItLLItUJBiLcjjR4YvpwekC86WLzYPhA/Oki3JAi0ss +i3tA0eGL6cHpAvOli82D4QPzpItyRItLTIt7RNHhi+nB6QLzpYvNg+ED86SLcgiL +SwyLewiL6cHpAvOli82D4QPzpIt6CItKEItzCCvPA86JSxCLi5wWAACL0dHqjQRQ +jRROA9GJg6QWAACJk5gWAACNg5QAAACNi4gJAACNk3wKAABfiYMYCwAAiYskCwAA +iZMwCwAAW14zwF3DVeie/f//g8QEX1teuPz///9dw164/v///13DzMzMzMzMzMzM +i0Isi0pM0eCJQjyLQkRTVjP2Zol0SP6LSkyNTAn+i9nB6QIzwFeLekTzq4vLg+ED +86qLgoQAAACNBEDB4AIPt4ia0AAQiYqAAAAAD7eImNAAEImKjAAAAA+3iJzQABCJ +ipAAAAAPt4Ce0AAQiUJ8uAIAAACJcmyJclyJcnSJQniJQmCJcmiJckjoE28AACUA +DwAAPQAGAABfG8lBXokNUAABEFvDzMzMzMzMzMzMzMyLTjiLRmxTihwIVYtsJAyK +FCkDwQPNOtNXjbgCAQAAD4WSAAAAilEBOlABD4WGAAAAg8ACg8ECilABilkBQEE6 +03VYilABilkBQEE603VMilABilkBQEE603VAilABilkBQEE603U0ilABilkBQEE6 +03UoilABilkBQEE603UcilABilkBQEE603UQilABilkBQEE603UEO8dynCvHBQIB +AACD+AN8EItOdDvBiW5wdgtfXYvBW8O4AgAAAF9dW8OD7AiLUyxVVolUJAxXjUkA +i3N0i0M8i0tsK8aLcyyNtDL6/v//K8E7znJvi3s4i8qL6cHpAo00F/Oli82D4QPz +pIt7cItzbItLXCv6K/Iryol7cIt7TIlLXItLRIlzbI00eQ+3Tv6D7gI7ynIEK8rr +AjPJT2aJDnXpi0tAi/qNNFEPt07+g+4CO8pyBCvK6wIzyU9miQ516QPCiyuLTQSF +yQ+E1wAAAItzbIt7dItLOAP+A/mLTQSL8TvwiXQkDHYGiUQkDIvwhfZ1BDPA62uL +RRwrzolNBItAGIP4AXUTi00Ai1UwVlFS6HPm//+DxAzrGoP4AnUci00AhcmLRTB1 +BDPA6wuL1ujU6f//i1QkEIlFMIvOi3UAi8HB6QLzpYvIi0QkDIPhA/Oki3UAi00I +A/ADyIl1AIlNCItLdAPIi/mD/wOJS3RyIItLbItDOI00AQ+2BotLWIlDSNPgD7ZO +ATPBI0NUiUNIgf8GAQAAcw2LA4tIBIXJD4WS/v//X15dg8QIw8zMzMzMzMzMzMzM +UVOLXCQMi0MMVYPA+z3//wAAVlfHRCQQ//8AAHMEiUQkEItDdIP4AXcQ6EH+//+L +Q3SFwA+EaQEAAItLbAPIi0QkEIlLbItLXItTbMdDdAAAAACNBAF0CDvQD4KWAAAA +K9CFyYlTdIlDbHwHi1M4A9HrAjPSK8FSM/+Ly+hvXQAAi0tsiwOJS1yLcByLVhSL +SBCDxAQ70XYCi9GF0nRKi3YQi3gMi8qL6cHpAvOli82D4QPzpIt4DItIHAP6iXgM +AVEQi2gUi3gQi0gcA+qJaBQr+ol4EClRFItAHItIFIXJdQaLUAiJUBCLA4tIEIXJ +D4SlAAAAi1Nci0Nsi0ssK8KB6QYBAAA7wQ+CE////4XSfAeLSzgDyusCM8lRM/+L +y+jKXAAAi1NsiwOJU1yLcByLVhSLSBCDxAQ70XYCi9GF0nRKi3YQi3gMi8qL6cHp +AvOli82D4QPzpIt4DItIHAP6iXgMAVEQi2gUi3gQi0gcA+qJaBQr+ol4EClRFItA +HItIFIXJdQaLSAiJSBCLE4tCEIXAD4WH/v//X15dM8BbWcOLbCQche108It7XIX/ +fAeLczgD9+sCM/aLQ2wzyYP9BA+UwSvHVov5i8voHlwAAItTbIsDg8QEiVNc6O7v +//+LA4tIEDPAhcl1EIP9BA+VwF9eXVtIg+ACWcOD/QQPlMBfXl1bjUQAAVnDzMzM +UVOLXCQMVVYz7VeJbCQQkItDdD0GAQAAcyPoQfz//4tDdD0GAQAAcwyLTCQchckP +hCQDAACFwA+EJAMAAIP4A3JRi0NIi0tYi1Nsi2tUi3M00+CLSzgPtkwRAjPBi0tE +I8WJQ0hmiwRBI/KLU0BmiQRyi0M0i0tsi1NAI8gPtyxKi0NIi0tEZotTbIlsJBBm +iRRBhe10bItDbItLLCvFgekGAQAAO8F3WouLiAAAAIP5AnQ3g/kDdDehUAABEIXA +VVN0CugGagAAg8QI6zKBezT/fwAAdAro82kAAIPECOsf6MpkAACDxAjrFYP5A3UT +g/gBdQ5Vi/Poo/r//4PEBIlDYItDYIP4A4uToBYAAA+CRQEAAIuzpBYAAIrIZotD +bGYrQ3CA6QNmiQRWi5OYFgAAi7OgFgAAiAwyi7ugFgAARw+2yYm7oBYAAA+2kejr +ABAF//8AAGb/hJOYBAAAZj0AAY2Mk5gEAABzDA+3wA+2gOjpABDrDQ+3yMHpBw+2 +gejqABBm/4SDiAkAAIuTnBYAAIuLoBYAAIt7dDPASjvKi5OAAAAAD5TAi/CLQ2Ar ++DvCiXt0i893boP5A3JpSIlDYItDbItLOIt7SECJQ2yL0A+2RAoCi0tY0+eLS1Qz +x4t7NCPBi0tEiUNIZosEQSP6i1NAZokEeotTNItLbItDSCPKi1NAD7csSotLRGaL +U2xmiRRBi0NgSIlsJBCJQ2B1oOmOAAAAi0tsA8iJS2yLwYtLOI0UCItLWMdDYAAA +AAAPtgKJQ0gPtlIB0+CLS1QzwiPBiUNI61+LQ2yLSziKBAiLi6QWAABmxwRRAACL +i6AWAACLk5gWAACIBAqLi6AWAABBD7bQiYugFgAAZv+Ek5QAAACNhJOUAAAAi4Oc +FgAAi5OgFgAAM8lIO9APlMGL8f9LdP9DbIX2D4RP/f//i1NchdJ8B4tLOAPK6wIz +yYtDbFErwjP/i8voAFkAAItTbIsDiVNci3Aci1YUi0gQg8QEO9F2AovRhdJ0Tot2 +EIt4DIvKi+nB6QLzpYvNg+ED86SLeAyLSBwD+ol4DAFREItoFIt4EItIHAPqiWgU +i2wkECv6iXgQKVEUi0Aci0gUhcl1BotICIlIEIsTi0IQhcAPhbf8//9fXl0zwFtZ +w4t7XIX/fAeLczgD9+sCM/aLRCQcM8m9BAAAADvFi0NsD5TBK8dWi/mLy+hQWAAA +i1NsiwODxASJU1zoIOz//4sDi0gQM8CFyXUROWwkHA+VwF9eXVtIg+ACWcM5bCQc +D5TAX15dW41EAAFZw8zMzFFTi1wkDFVWM+1XiWwkEJCLQ3Q9BgEAAHMj6HH4//+L +Q3Q9BgEAAHMMi0wkHIXJD4SkAgAAhcAPhMYDAACD+ANyUYtDSItLWItTbItrVItz +NNPgi0s4D7ZMEQIzwYtLRCPFiUNIZosEQSPyi1NAZokEcotDNItLbItTQCPID7cs +SotDSItLRGaLU2yJbCQQZokUQYXti0Ngi0twvwIAAACJQ3iJS2SJe2APhKQAAACL +0DuTgAAAAA+DlgAAAItDbItLLCvFgekGAQAAO8EPh4AAAACLi4gAAAA7z3Q3g/kD +dDehUAABEIXAVVN0CugNZgAAg8QI6zKBezT/fwAAdAro+mUAAIPECOsf6NFgAACD +xAjrFYP5A3UTg/gBdQ5Vi/Poqvb//4PEBIlDYItDYIP4BXcfg7uIAAAAAXQTg/gD +dRGLU2wrU3CB+gAQAAB2A4l7YItDeIP4Aw+CggEAADlDYA+HeQEAAItLdItDbIuT +oBYAAIu7pBYAAI10CP2KS3gzwGaLQ2xmK0NkgOkDSGaJBFeLk5gWAACLu6AWAACI +DDqLk6AWAABCD7bJiZOgFgAAD7aR6OsAEAX//wAAZv+Ek5gEAABmPQABjYyTmAQA +AHMMD7fAD7aA6OkAEOsND7fIwekHD7aB6OoAEGb/hIOICQAAi5OcFgAAi7ugFgAA +SjPAO/qLU3QPlMC5AQAAAIv4i0N4K8gD0YPA/olTdIlDeItLbEGL0TvWiUtsd0mL +Q0iLS1iLazTT4ItLOA+2TBECM8EjQ1SLS0SJQ0hmiwRBI9WLa0BmiURVAItDNItL +bItTQCPID7csSotDSItLRGaLU2xmiRRB/0t4daWLU2xChf+JbCQQx0NoAAAAAMdD +YAIAAACJU2yLwg+EcP3//4tTXIXSfAeLSzgDyusCM8lRK8Iz/4vL6FRVAACLQ2yJ +Q1yLA4PEBOgk6f//iwuLQRCFwA+FN/3//19eXTPAW1nDi0NohcAPhP0AAACLU2yL +QziKRAL/i4ugFgAAi5OkFgAAZscESgAAi4uYFgAAi5OgFgAAiAQRi7ugFgAAD7bA +R42Eg5QAAACJu6AWAABm/wCLi5wWAACLg6AWAABJO8EPhYsAAACLU1yF0nwHi0s4 +A8rrAjPJi0NsUSvCM/+Ly+irVAAAi1NsiwOJU1yLcByLVhSLSBCDxAQ70XYCi9GF +0nROi3YQi3gMi8qL6cHpAvOli82D4QPzpIt4DItIHAP6iXgMAVEQi2gUi3gQi0gc +A+qJaBSLbCQQK/qJeBApURSLQByLSBSFyXUGi0gIiUgQi1Nsi0t0QolTbIsTSYlL +dItCEOno/v//i0tsi0N0QUjHQ2gBAAAAiUtsiUN06Q38//+LQ2iFwHRKi0Nsi0s4 +ikQI/4uToBYAAIuLpBYAAGbHBFEAAIuTmBYAAIuLoBYAAIgECv+DoBYAAA+20Gb/ +hJOUAAAAjYSTlAAAAMdDaAAAAACLe1yF/3wHi3M4A/frAjP2i2wkHItDbDPJg/0E +D5TBK8dWi/mLy+iRUwAAi1NsiwODxASJU1zoYef//4sDi0gQM8CFyXUQg/0ED5XA +X15dW0iD4AJZw4P9BA+UwF9eXVuNRAABWcPMzMzMzMyD7FhTjUwkDFUz24lMJAyL +TCRkg83/O8tXiVwkDIv4D4QNAgAAO8MPhAUCAABWanT/FQywABCL8IPEBDvzD4Qj +AQAAi0QkbIleIIleJIleKIleRIkeiV5IiV4MiV4QiV4EiV5AiV44iV48iV5kiV5o +iW5siV5MiV5QiV5YjVABkIoIQDrLdfkrwkBQ/xUMsAAQg8QEO8OJRlQPhMIAAACL +VCRsigpCiAhAOst19oheXLFyOA91A4hOXIoHPHd0BDxhdQTGRlx3igc8MHwMPDl/ +CA++6IPtMOs1PGZ1CsdEJBABAAAA6yc8aHUKx0QkEAIAAADrGTxSdQrHRCQQAwAA +AOsLi1QkFIgCQolUJBRHOsN0DItEJBSNVCRoO8J1k4pGXDrDdDs8d3VGi0QkEGo4 +aFiwABBQaghq8WoIVVbofeD//2gAQAAAi/j/FQywABCDxCQ7+4lGSIlGDHUEO8N1 +Ouh6AwAAXl9dM8Bbg8RYw2gAQAAA/xUMsAAQajhoWLAAEGrxVolGRIkG6BEfAACD +xBSFwHXLOV5EdMbHRhAAQAAA/xUYsAAQiRiLRCRwO8ONTCQYUX0Ni1QkcFL/FRyw +ABDrB1D/FUCwABCDxAg7w4lGQHSMgH5cd3UxagtTU1NTU1NqCGiLAAAAah9oDO4A +EFD/FSSwABCDxDDHRmAKAAAAi8ZeX11bg8RYw4vG6G0BAACLVkBS/xUwsAAQi04E +g8QEK8GJRmCLxl5fXVuDxFjDX10zwFuDxFjDzMzMzMyLRCQEav9Qi0QkEOiw/f// +g8QIw8zMzMzMzMzMzMzMzIPsMFaLdCQ4hfZ9BzPAXoPEMMNWjUQkCGgE7gAQUP8V +LLAAEItEJEiNTCQQVlHobf3//4PEFF6DxDDDzMzMzMxWi3QkCIX2dFKAflx3dUyL +RhCFwHUwi05Ai0ZIUWgAQAAAagFQiUYM/xVMsAAQg8QQPQBAAAB0B8dGOP/////H +RhAAQAAAi1QkEItEJAxSUFbo2uL//4PEDF7DuP7///9ew8zMzMzMzMzMzMzMzMzM +i0Y8hcB0BIPI/8OLRgSFwHVJ/xUYsAAQxwAAAAAAi0ZAi05EUGgAQAAAagFR/xUg +sAAQg8QQhcCJRgR1GYtWQMdGPAEAAACKSgyDyP/2wSB0FolGOMOLRkSJBv9OBIsG +ighAiQYPtsHDzMzMzMzMzFaL8FeLfgSD/wJzZoX/dAmLBotORIoQiBH/FRiwABDH +AAAAAACLRkCLz1CLRkS6AEAAANP6A8dSagFQ/xUgsAAQg8QQhcB1EItOQPZBDCB0 +B8dGOP////+LVgQD0IvCg/gCiVYEi1ZEiRZzBl+JRlhew4sGgDgfD4XPAAAAgHgB +iw+FxQAAAItOBIPB/oPAAlOJTgSJBuj1/v//i/jo7v7//4P/CIvYD4WUAAAA9sPg +D4WLAAAAvwYAAADrA41JAOjL/v//T3X49sMEdCTovv7//4v46Lf+///B4AgD+Iv/ +i8dPhcB0Cuik/v//g/j/de/2wwh0DuiV/v//hcB0BYP4/3Xy9sMQdBWNpCQAAAAA +6Hv+//+FwHQFg/j/dfL2wwJ0Db8CAAAA6GP+//9PdfiLTjz32RvJW4Ph/V+JTjhe +w1tfx0Y4/f///17DX8dGWAEAAABew8zMzMzMzMzMzMxTM9uF9nUHuP7///9bw4tG +UIXAV4s9CLAAEHQGUP/Xg8QEi0YchcB0HopGXDx3dQhW6Mrq///rCjxydQtW6I4z +AACDxASL2ItGQIXAdBxQ/xU4sAAQg8QEhcB0Dv8VGLAAEIM4HXQDg8v/i0Y4hcB9 +AovYi0ZEhcB0BlD/14PEBItGSIXAdAZQ/9eDxASLRlSFwHQGUP/Xg8QEVv/Xg8QE +X4vDW8PMzMzMzMzMzMzMzItEJAhVi2wkCIXtV4v4D4SRAgAAgH1ccg+FhwIAAItN +OIP5/Q+EdQIAAIPK/zvKD4RqAgAAg/kBdQVfM8Bdw1NWi3QkHIX2iUQkGIlFDIl1 +EHRAi01sO8p0OYgIi10Mi30Qi01oQENPiX0QiUQkGIv4i0VwQYXAiV0MiVVsiU1o +dBFeW1/HRTgBAAAAuAEAAABdw4tFEIXAD4QYAQAAix0YsAAQi0VYhcAPhUEBAACL +RQSFwHVIi0U8hcB1Qf/TxwAAAAAAi1VAi0VEUmgAQAAAagFQ/xUgsAAQg8QQhcCJ +RQR1FItNQMdFPAEAAAD2QQwgD4WSAQAAi1VEiVUAi01ki0UEi1VoA8iJTWSLTRAD +0WoAVYlVaOgkHAAAi1UEi01kK8qLVWiJTWSLTRAr0YPECIP4AYlFOIlVaHVTi3UM +i0VMi9Yr14X/dQQzwOsHi8/oytf//4lFTIvFi/7ongcAADtFTHVEi8XokgcAAIvF +6Hv8//+LRTiFwHU2VeguGQAAi3QkIIPEBMdFTAAAAACLRTiFwHUfi0U8hcB1GItF +EIXAD4X7/v//6wvHRTj9////i3QkHItFDItNTCvHUFdR6DrX//+LTRCDxAw78YlF +TA+FvwAAAIttOIP9/XQJg/3/D4WuAAAAXltfg8j/XcOLRQSLTRA7wXYCi8GFwHY/ +i3UAi30Mi8iL0cHpAvOli8qD4QPzpItMJBiLdQCLVRADyIlMJBiJTQyLTQQD8CvQ +K8iJdQCLdCQciVUQiU0Ei0UQhcB2HYtNQItUJBhRUGoBUv8VILAAEItNEIPEECvI +iU0Qi30Qi1Vki01oK/cD1gPOhfaJVWSJTWh1B8dFPAEAAACLxl5bX13Dx0U4//// +/+kg////i8ZeW18rwV3DX4PI/13DX7j+////XcPMzMxRi0wkCGoBjUQkB1BR6D79 +//+DxAyD+AF1Bw+2RCQDWcODyP9Zw8zMzMzMzMzMzMyLTCQIhcl0QoB5XHJ1PItE +JASD+P90M4N5bP91LYtRaEpXi3k4iVFoM9KD/wEPlMKJQWxfhdKJUXB0B8dBOAAA +AADHQTwAAAAAw4PI/8PMzFVWi3QkEIX2V4vudEKLfCQYhf9+OlOLXCQUjZsAAAAA +T4X/fhhqAVZT6KL8//+DxAyD+AF1B4oGRjwKdeM77sYGAFt1BIX/fwZfXovFXcNf +XjPAXcPMzMzMzMzMzMzMzFaLdCQIhfYPhM0AAACAflx3D4XDAAAAU4tcJBBVi2wk +GIXtiR6JbgQPhH4AAABXiz1MsAAQi0YQhcB1IYtOQItGSFFoAEAAAGoBUIlGDP/X +g8QQPQBAAAB1SolGEItGZItWBItOaAPCiUZki0YQA8hqAFaJTmjoBd7//4tOBItW +ZCvRi05oiVZki1YQK8qDxAiFwIlGOIlOaHUQi0YEhcB1k+sHx0Y4/////1+F24tG +THUQi04EM8CJRkyLxV1bK8Few4vVi8voxNT//4tOBIlGTIvFXVsrwV7DuP7///9e +w8zMzMzMzMzMzMzMzMzMzLgAEAAA6CZjAACLjCQIEAAAjYQkDBAAAFBRjVQkCGgA +EAAAUsaEJA8QAAAA/xUosAAQg8QQhcB+Lz0AEAAAfSiKjCT/DwAAhMl1HYuMJAQQ +AABQjUQkBFBR6LL+//+DxAyBxAAQAADDM8CBxAAQAADDzMzMzMzMzMzMzMzMzMzM +i1QkBIpEJAhqAY1MJAxRUohEJBTod/7//4PEDIP4AXUGD7ZEJAjDg8j/w8zMzMzM +i1QkCIvCVo1wAY2bAAAAAIoIQITJdfkrxlCLRCQMUlDoO/7//4PEDF7DzMzMzMzM +U1aL8DPbhfYPhLsAAACAflx3D4WxAAAAiV4EV41kJACLRhC/AEAAACv4dCWLRkCL +TkhQV2oBUf8VTLAAEIPEEDvHdXuLVkiJVgzHRhAAQAAAhdt1WotOaItGEAPIiU5o +i0wkEFFW6EXc//+LXmiLThAr2YPECIX/iUY4iV5odQiD+Pt1A4l+OIXJdQqDfjgB +dAQz2+sFuwEAAACLRjiFwA+Eev///4P4AQ+Ecf///4t2OIvGSPfYG8BfI8ZeW8OD +yP9fiUY4XlvDXrj+////W8PMzMzMzMzMzMzMzMzMzMyLRCQIVot0JAhQi8boD/// +/4PEBIXAdRmLTkBR/xUUsAAQi044g8QEi8FI99gbwCPBXsPMzMzMzMzMzMzMzMzM +Vot0JAiF9g+EgAEAAItMJBCD+QIPhHMBAACLRjiD+P8PhGcBAACD+P0PhF4BAACA +flx3V3V0hclTi1wkFHUDK15khdt9B1tfg8j/XsOLRkSFwHUgaABAAAD/FQywABCL ++IPEBIX/iX5EdNu5ABAAADPA86uF234r6waNmwAAAAC4AEAAADvYfQKLw1CLRkRQ +Vuh6/P//g8QMhcB0qSvYhdt/3YtGZFtfXsOD+QGLfCQQdQMDfmiF/30GX4PI/17D +i0ZYhcB0MotWQItORGoAV1LHRmz/////x0YEAAAAAIkO/xU0sAAQg8QMhcB8zIl+ +aIl+ZIvHX17Di0ZoO/h8BCv46w1W6JYAAACDxASFwHyphf90cotGSIXAdRVoAEAA +AP8VDLAAEIPEBIXAiUZIdImDfmz/dB2LVmiLRnBCT4XAx0Zs/////4lWaHQHx0Y4 +AQAAAIX/fi/rBo2bAAAAALgAQAAAO/h9AovHUItGSFBW6Ar4//+DxAyFwA+OOf// +/yv4hf9/2YtGaF9ew4PI/17DzMzMzMzMzMzMzMzMzMxWi3QkCFcz/zv3dEeAflxy +dUGLRkSJBjl+WIl+OIl+PMdGbP////+JfgSJfkx1CVboWxIAAIPEBItOYItWQFdR +Uol+ZIl+aP8VNLAAEIPEDF9ew1+DyP9ew8zMzMzMzMyLRCQEagFqAFDo8v3//4PE +DMPMzMzMzMzMzMzMzMzMzItEJASFwHQhgHhccnUbi0g8hcl0BrgBAAAAw4tQODPJ +g/oBD5TBi8HDM8DDzMzMzFOLHVCwABBVi2wkDFZXi/C/BAAAAIvGJf8AAABVUP/T +g8QIwe4IT3XsX15dW8PMzFZXi/Dod/T//4v46HD0///B4AgD+Ohm9P//weAQA/jo +XPT//4P4/3UHx0Y4/f///8HgGAPHX17DzMzMzMzMzMxWi3QkCIX2dQe4/v///17D +gH5cd3UragSLxugB/P//g8QEhcB1G4tGQFCLRkzoXv///4tOQItGZFHoUv///4PE +COjK9f//XsPMzMzMzMzMzFOLXCQIhdt1EYtEJAzHAP7///+4LPAAEFvDi0M4hcCL +TCQMiQF1B7gD7gAQW8OD+P9VdRb/FRiwABCLEFL/FRCwABCDxASL6OsDi2sYhe10 +BoB9AAB1D4tDOMHgArng7QAQK8iLKYtDUIXAdApQ/xUIsAAQg8QEi0NUjVABjUkA +ighAhMl1+SvCi9CLxVaNcAGKCECEyXX5K8aNVBADUv8VDLAAEIPEBIXAiUNQdQle +XbgM8AAQW8OLU1TrA41JAIoKQogIQITJdfZXi3tQT5CKRwFHhMB1+GahAO4AEGaJ +B4oNAu4AEIvFiE8Ci8iL/4oQQITSdfmLe1ArwYvxT5CKTwFHhMl1+IvIwekC86WL +yIPhA/Oki0NQX15dW8PMzItEJAQzyTvBdBmDeDgBdAOJSDiJSDyLQECJRCQE/yU8 +sAAQw8zMzMzMzMzMzMzMzItEJBBTM9s7ww+EpQAAAIA4MQ+FnAAAAIN8JBg4D4WR +AAAAVVaLdCQQO/NXdHyLbCQcO+t0dIt8JBiD/wh8a4P/D39mOV4giV4YdQrHRiDA +kQAQiV4oOV4kdQfHRiTgkQAQi0YoaDAlAABqAVD/ViCDxAw7w3UKX15duPz///9b +w4lGHIvPiXgkugEAAABf0+JeiWg0iVgwiVgsXcdAFACAAACJUCgzwFvDX15duP7/ +//9bw7j6////W8PMzMzMzMdATCDRABDHQFQJAAAAx0BQINkAEMdAWAUAAADDzMzM +i0QkBIPsIFNVM+07xQ+EUQ4AAItYHDvdD4RGDgAAiWgYxwMLAAAAiWsEiWssiwg7 +zVZXiUwkFHQFi3AE6wIz9otDNItLKIlEJCCLA4PoC4P4EIl0JBiJbCQQiUwkHA+H +ng0AAOsKjaQkAAAAAI1JAA+2kKxUABD/JJWQVAAQi0MEhcB0HotUJBCL/YPnB4vP +0+or78cDGgAAAIlUJBDpUQ0AAIP9A3NGhfZ1G4tMJDyNRCQUUFH/VCRAi/CDxAiF +9g+EVw0AAItEJBQPthCLfCQQi83T4k6DxQiJdCQYA/pAg/0DiXwkEIlEJBRyuotM +JBCLwYPgAdHpiUMEi8GD4ANNg/gDd17/JIXAVAAQwekCxwMNAAAAiUwkEIPtAunR +DAAAi8Potv7//8HpAscDEgAAAIlMJBCD7QLptQwAAMHpAscDDwAAAIlMJBCD7QLp +oAwAAItUJDTHQhgo7wAQxwMbAAAAwekCiUwkEIPtAumADAAAi1QkEIv9g+cHi8/T +6ivvg/0giVQkEHNKjWQkAIX2dRuLTCQ8jUQkFFBR/1QkQIvwg8QIhfYPhG8MAACL +RCQUD7YQi3wkEIvN0+JOg8UIiXQkGAP6QIP9IIl8JBCJRCQUcrqLTCQQi8H30SX/ +/wAAwekQO8F0FotEJDTHQBgI7wAQxwMbAAAA6fQLAAAz7TvFiUNAiWwkEA+ExwAA +AIX2i0tAi3wkHIlMJCR1H4tEJDyNVCQUUlD/VCRAi/CDxAiF9ol0JBgPhN8LAACF +/3Uni3soi0M0i0wkRFdQUYlEJCyJfCQoiXss/1QkTIPEDIXAD4XsCwAAOXQkJHYE +iXQkJDl8JCR2BIl8JCSLRCQki3QkFIt8JCCLyIvRwekC86WLyotUJCCD4QPzpIt8 +JBSLTCQYi3QkHCvIA/iJTCQYiXwkFItLQCvwK8gD0IvBhcCJdCQci3QkGIlUJCCJ +S0APhTn////HAwsAAADpEQsAAIP9DnNGhfZ1G4tMJDyNRCQUUFH/VCRAi/CDxAiF +9g+EFwsAAItEJBQPthCLfCQQi83T4k6DxQiJdCQYA/pAg/0OiXwkEIlEJBRyuotE +JBCLyIPhH8HoBYHBAQEAAIvQwegFiUtgi8jB6ASD4h+D4Q+JRCQQi0NgQoPBBIPt +Dj0eAQAAiVNkiUtcD4dEBQAAi8KD+B4PhzkFAACLQ1wzyTvBiUtoD4aCAAAAi3wk +PIP9A3NChfZ1F41UJBRSV/9UJECL8IPECIX2D4RtCgAAi0QkFA+2EIvN0+KLTCQQ +ToPFCAPKQIP9A4l0JBiJTCQQiUQkFHK+i0QkEItTaA+3FFWg2QAQM8mKyMHoA4lE +JBCD7QOD4QdmiUxTcItTaEKJU2iLS1yLwjvBcoQzyYtTaLgTAAAAO9BzIusDjUkA +i1NoD7cUVaDZABBmiUxTcIt7aEeL1zvQiXtocuONgzAFAACNS2yNk/ACAABSiQGJ +Q0yNQ1RQUWoTjXtwV2oAxwAHAAAA6PYmAACDxBiFwHQWi0QkNMdAGMjuABDHAxsA +AADpbQkAAItLZANLYMdDaAAAAAAPhMsCAACLVCQQi/+LS1S4AQAAANPgi0tMSCPC +iwSBD7bMO82JRCQodmWLfCQ8hfZ1F41UJBRSV/9UJECL8IPECIX2D4RBCQAAi1Qk +FA+2AovN0+BOg8UIiXQkGIvIi0QkEAPBQolUJBSLS1S6AQAAANPiiUQkEEoj0ItD +TIsEkA+2zDvNiUQkKHeji1QkEItMJCjB6RBmg/kQc3EPtvw773NHhfZ1G4tEJDyN +VCQUUlD/VCRAi/CDxAiF9g+EyAgAAItEJBQPthCLzdPii0wkEE6DxQgDykA774l0 +JBiJTCQQiUQkFHK7i9GLQ2iLz9PqZotMJCpmiUxDcItDaCvvQIlUJBCJQ2jpsQEA +AA+FkAAAAA+2xI14AjvviUQkJHNRhfZ1H4tEJDyNVCQUUlD/VCRAi/CDxAiF9g+E +SggAAItEJCSLTCQUD7YRi83T4otMJBBOg8UIA8qJTCQQi0wkFEE774l0JBiJTCQU +crOLVCQQi8jT6ivoi0NohcCJVCQQD4SfAQAAD7dEQ26JRCQki8KD4AODwAPB6gKD +7QLp4wAAAGaD+REPtvx1Z41HAzvoc0qF9nUbi1QkPI1MJBRRUv9UJECL8IPECIX2 +D4S4BwAAi0QkFA+2EIvN0+KLTCQQToPFCAPKQIlEJBSNRwM76Il0JBiJTCQQcriL +0YvP0+q5/f///4vCg+AHg8ADweoD62eNRwc76HNMi/+F9nUbi0QkPI1UJBRSUP9U +JECL8IPECIX2D4RPBwAAi0QkFA+2EIvN0+KLTCQQToPFCAPKQIlEJBSNRwc76Il0 +JBiJTCQQcriL0YvP0+q5+f///4vCg+B/g8ALweoHK8/HRCQkAAAAAAPpi3tgi0tk +A8+Le2gD+Dv5iVQkEA+HnQAAAIXAdBuLTCQk6wONSQCLe2hmiUx7cIt7aEdIiXto +de6LQ2SLe2CLS2gDxzvID4I7/f//gzsbD4SGBgAAjYMwBQAAjXtsiQeJQ0yNi/AC +AABRjUNUUMcACQAAAItDYFdQjUNwUGoB6MMjAACDxBiFwHRCi0wkNMdBGJDuABDH +AxsAAADpOgYAAItMJDTHQRis7gAQxwMbAAAA6SQGAACLVCQ0x0IYrO4AEMcDGwAA +AOkOBgAAixeNi/ACAABRi0tgjUNYUMcABgAAAItDZFeJU1BQjVRLcFJqAuhQIwAA +g8QYhcB0FotEJDTHQBh47gAQxwMbAAAA6ccFAADHAxIAAACD/gYPgpAAAACLTCQc +gfkCAQAAD4KAAAAAi0QkNItUJCCJUAyLVCQUiUgQiRCJcASLRCQQi1MsiUM4i0Mo +O9CJazxzB4vQK9GJUyyLdCQ0UFboV0oAAItGDIsWi04Qi3YEiVQkHItrPIlEJCiL +QziDxAiJTCQciXQkGIlEJBDpPgUAAItMJDTHQRjk7gAQxwMbAAAA6SgFAACLS1SL +fCQQi0NMugEAAADT4koj14sEkA+2zDvNiUQkKHZhi/+F9nUbi0QkPI1UJBRSUP9U +JECL8IPECIX2D4QPBQAAi1QkFA+2OotEJBCLzdPnToPFCIl0JBgDx0KJVCQUi0tU +ugEAAADT4olEJBBKI9CLQ0yLBJAPtsw7zYlEJCh3oYTAD4TNAAAAqPAPhcUAAAAz +yYrID7b8i9C4AQAAAIlUJCQDz9Pgi0wkEEgjwYvP0+iLTCQowekQD7b+A8GLS0yL +BIEPttQD1zvViUQkKA+GcwAAAIX2dRuLTCQ8jUQkFFBR/1QkQIvwg8QIhfYPhFwE +AACLVCQUD7YCi83T4E6DxQiJdCQYi8iLRCQQA8EzyYpMJCRCiVQkFLoBAAAAiUQk +EAPP0+KLz0oj0A+3RCQm0+qLS0wD0IsEkQ+21APXO9WJRCQod42LVCQQi8/T6ivv +iVQkEItUJBAPtvyLz9Pqi0wkKMHpECvvhMCJVCQQiUtAdU+LRCQchcB1JYtDKIt7 +NItUJERQV1KJRCQoiUMs/1QkTIPEDIXAD4XoAwAA6wSLfCQgikNAiAeLRCQcR0iJ +fCQgiUQkHMcDEgAAAOliAwAAqCB0C8cDCwAAAOlTAwAAqEB0FotMJDTHQRhc7gAQ +xwMbAAAA6TkDAACD4A+JQ0gPhHAAAAA76HNHi3wkPJCF9nUXjVQkFFJX/1QkQIvw +g8QIhfYPhDMDAACLRCQUD7YQi83T4otMJBBOg8UIA8pAiUQkFDtrSIl0JBiJTCQQ +cr6Le0iLRCQQi8+6AQAAANPii0tASiPQA8qJS0CLz9PoK++JRCQQi0tYi1QkELgB +AAAA0+CLS1BII8KLBIEPttQ71YlEJCh2Zo2kJAAAAACF9nUbi0wkPI1EJBRQUf9U +JECL8IPECIX2D4SfAgAAi1QkFA+2OotEJBCLzdPnToPFCIl0JBgDx0KJVCQUi0tY +ugEAAADT4olEJBBKI9CLQ1CLBJAPtsw7zYlEJCh3oajwD4XKAAAAM8mKyA+2/IvQ +uAEAAACJVCQkA8/T4ItMJBBII8GLz9Poi0wkKMHpEA+2/gPBi0tQiwSBD7bUA9c7 +1YlEJCgPhngAAADrA41JAIX2dRuLTCQ8jUQkFFBR/1QkQIvwg8QIhfYPhO8BAACL +VCQUD7YCi83T4E6DxQiJdCQYi8iLRCQQA8EzyYpMJCRCiVQkFLoBAAAAiUQkEAPP +0+KLz0oj0A+3RCQm0+qLS1AD0IsEkQ+21APXO9WJRCQod42LVCQQi8/T6ivviVQk +EItUJBAPtvyLz9PqK++oQIlUJBB0FotEJDTHQBhE7gAQxwMbAAAA6TgBAACLTCQo +wekQg+APiUtEiUNID4R1AAAAO+hzTIt8JDyNmwAAAACF9nUXjVQkFFJX/1QkQIvw +g8QIhfYPhCMBAACLRCQUD7YQi83T4otMJBBOg8UIA8pAiUQkFDtrSIl0JBiJTCQQ +cr6Le0iLRCQQi8+6AQAAANPii0tESiPQA8qJS0SLz9PoK++JRCQQi0Moi0ssi3wk +HDvIG8kjzyvBOUNEdhaLVCQ0x0IYJO4AEMcDGwAAAOmAAAAAi3wkHIX/dSeLeyiL +QzRXUIlEJCiLRCRMUIl8JCiJeyz/VCRMg8QMhcAPhbMAAACLQ0SLSyiLVCQgK8g7 +z3MLi0QkHI08ESvB6wqLfCQgK/iLRCQci0tAO8F2AovBK8iJS0ApRCQcjZsAAAAA +ig+ICkJHSHX3i0NAhcCJVCQgdYCLA4PoC4P4EA+GbvL//73+////i0QkNItMJBRf +iXAEXokIi8VdW4PEIMPHRCQUAAAAAL37////69qLQyiLTCQcO8i9AQAAAHPKi9Er +wotTNFCLRCRIUlD/VCRMg8QMhcB0sb37////66q9/f///+ujXbj+////W4PEIMOQ +nkYAEJRHABADSQAQU04AEE1UABB9VAAQIlQAEAAGAQYCBgYDBgYGBgYGBgQFjUkA +LkcAEENHABBfRwAQdEcAEFaLdCQIhfZ0I4tOHIXJdByLRiSFwHQVUYtOKFH/0IPE +CMdGHAAAAAAzwF7DuP7///9ew8zMzMzMzMzMzMzMzMyLVCQEM8k70XRNi0IcO8F0 +RolIHIlKFIlKCIlKGMdCMAEAAACJCIlIBIlIDIlIIIlIKIlILIlIMIlIOIlIPI2I +MAUAAMdAFACAAACJSGyJSFCJSEwzwMO4/v///8PMzMyLRCQMVzP/O8cPhLEAAACA +ODEPhagAAACDfCQUOA+FnQAAAFaLdCQMO/cPhIgAAAA5fiCJfhh1CsdGIMCRABCJ +fig5fiR1B8dGJOCRABCLRihoMCUAAGoBUP9WIIPEDDvHdQheuPz///9fw4tMJBA7 +z4lGHH0HiXgI99nrEYvRwfoEQoP5MIlQCH0Dg+EPg/kIfBeD+Q9/ElaJSCSJeDTo +/P7//4PEBF5fw1CLRihQ/1Ykg8QIiX4cXrj+////X8O4+v///1/DzMzMzMzMzMzM +i0QkDItMJAiLVCQEUFFqD1LoGv///4PEEMPMzMzMzMzHQEzI2QAQx0BUCQAAAMdA +UMjhABDHQFgFAAAAw8zMzFNVi2wkDItdHFZXi/CLQzQz/zvHdSiLSyS4AQAAANPg +i00oagFQUf9VIIPEDDvHiUM0dQpfXl24AQAAAFvDOXsodROLSyS6AQAAANPiiXsw +iXssiVMoi30Qi0soK/eLxjvBciqLdQyLezQr8YvBwekC86WLyIPhA/Oki0soX15d +x0MwAAAAAIlLLDPAW8MrSzA7yIlMJBR2BovIiUwkFItTMIt7NIt1DAP6i9HB6QIr +8POli8qD4QPzpItMJBQrwXQoi3UMi3s0i8iL0SvwwekC86WLyoPhA/OkX4lDMItD +KF6JQyxdM8Bbw4t7MItDKAP5i9c70Il7MHUHx0MwAAAAAItTLDvQcwUD0YlTLF9e +XTPAW8PMzMzMzMzMzMzMzItEJASD7DiFwFMPhD0VAACLWByF2w+EMhUAAItIDIXJ +D4QnFQAAgzgAdQuLSASFyQ+FFxUAAIM7C3UGxwMMAAAAi0gMi1M4VYtrPFaLMFeL +eASJTCQoi0gQiwOD+ByJTCQgiXQkGIl8JBSJVCQQiXwkPIlMJDDHRCQ0AAAAAA+H +VBMAAP8khfhsABCLQwiFwHULxwMMAAAA6TATAACD/RBzJ4X/D4SBEwAAD7YGi83T +4E+DxQiJfCQUA9BGg/0QiVQkEIl0JBhy2fZDCAJ0O4H6H4sAAHUzM+26AgAAAI1M +JCQzwIlrGMZEJCQfxkQkJYvo6rr//4lDGIlsJBDHAwEAAACL1enDEgAAi0MghcDH +QxAAAAAAdAfHQDD/////9kMIAQ+EnwAAAItMJBCLwSX/AAAAweAIwekIA8Ez0rkf +AAAA9/GF0nV/i0wkEIvRgOIPgPoIdBKLRCRMx0AYsO8AEIvR6V4SAACLQyTB6QSJ +TCQQg+EPg8EIg+0EO8h2FItMJEyLVCQQx0EYnO8AEOkzEgAAuAEAAACL0NPii0wk +TIlDGIlTFItUJBDB6gj30oPiAoPKCTPtiUEwiROJbCQQi9XpBRIAAItEJEyLVCQQ +x0AYzO8AEOnrEQAAg/0QcyeF/w+EQhIAAA+2BovN0+BPg8UIiXwkFAPQRoP9EIlU +JBCJdCQYctmA+giJUxB0EItMJEzHQRiw7wAQ6acRAAD2xuB0EItEJEzHQBiA7wAQ +6ZIRAACLQyCFwHQIweoIg+IBiRCLQxD2xAJ0I4tEJBCIRCQkwegIiEQkJYtDGLoC +AAAAjUwkJOh0uf//iUMYM9Iz7ccDAgAAAOsFg/0gcx+F/w+EoxEAAA+2BovN0+BP +g8UIA9BGg/0giVQkEHLhi0MghcB0A4lQBItDEPbEAnQ1i0QkEIvIi9CIRCQkwekI +weoQwegYiEwkJYhUJCaIRCQni0MYugQAAACNTCQk6P24//+JQxgz0jPtxwMDAAAA +6wWD/RBzJ4X/D4QsEQAAD7YGi83T4E+DxQiJfCQUA9BGg/0QiVQkEIl0JBhy2YtD +IIXAdBSLyoHh/wAAAIlICItDIMHqCIlQDItDEPbEAnQji0QkEIhEJCTB6AiIRCQl +i0MYugIAAACNTCQk6H+4//+JQxgz0olUJBAz7ccDBAAAAItDEPbEBHRvg/0QcyiQ +hf8PhKMQAAAPtgaLzdPgT4PFCIl8JBQD0EaD/RCJVCQQiXQkGHLZi0MghcCJU0B0 +A4lQFItDEPbEAnQji0QkEIhEJCTB6AiIRCQli0MYugIAAACNTCQk6AS4//+JQxgz +0olUJBAz7esOi0MghcB0B8dAEAAAAADHAwUAAACLQxD2xAQPhKwAAACLS0A7z4lM +JBx2BovPiUwkHIXJD4SIAAAAi0MghcB0SItAEIXAiUQkOHQ9i0Mgi3gUi3NAi0AY +K/6NNDk78HYEK8eLyItEJDiLdCQYA/iLwcHpAvOli8iD4QPzpItMJByLfCQUi3Qk +GItDEPbEAnQdi0wkHItTGFFWUug4t///i1QkHItMJCiDxAyJQxiLQ0Ar+QPxK8GJ +fCQUiXQkGIlDQItDQIXAD4V2DwAAx0NAAAAAAMcDBgAAAItDEPbECA+EqgAAAIX/ +D4RVDwAAM8DrBo2bAAAAAA+2DDBAiUQkHItDIIXAiUwkLHQxi0gchcmJTCQ4dCaL +S0A7SCBzHotEJDiLfCQUiVQkOIpUJCyIFAiLQ0CLVCQ4QIlDQItEJCyFwItEJBx0 +BDvHcquLSxD2xQJ0IYX2i0MYdQQzwOsPi1QkHIvO6I22//+LVCQQiUMYi0QkHCv4 +A/CLRCQshcCJfCQUiXQkGA+FtQ4AAOsOi0MghcB0B8dAHAAAAADHQ0AAAAAAxwMH +AAAAi0MQ9sQQD4SpAAAAhf8PhIQOAAAzwI2kJAAAAAAPtgwwQIlEJByLQyCFwIlM +JCx0MYtIJIXJiUwkOHQmi0tAO0gocx6LRCQ4i3wkFIlUJDiKVCQsiBQIi0NAi1Qk +OECJQ0CLRCQshcCLRCQcdAQ7x3Kri0sQ9sUCdCGF9otDGHUEM8DrD4tUJByLzui9 +tf//i1QkEIlDGItEJBwr+APwi0QkLIXAiXwkFIl0JBgPheUNAADrDotDIIXAdAfH +QCQAAAAAxwMIAAAAi0MQ9sQCdFiD/RBzLo2kJAAAAACF/w+Esw0AAA+2BovN0+BP +g8UIiXwkFAPQRoP9EIlUJBCJdCQYctmLSxiB4f//AAA70XQQi0QkTMdAGGzvABDp +Ew0AADPSiVQkEDPti0MghcB0FotLEMH5CYPhAYlILItDIMdAMAEAAACLTCRMM8CJ +QxiJQTDHAwsAAADp3QwAAIP9IHMnhf8PhC4NAAAPtgaLzdPgT4PFCIl8JBQD0EaD +/SCJVCQQiXQkGHLZi8qB4QD/AACLwsHgEAPIM8CKZCQSweEIweoYA8iNBBGLTCRM +iUMYiUEwM9Iz7ccDCgAAAItDDIXAD4SKDAAAi0wkTLgBAAAAiUMYiUEwxwMLAAAA +g3wkUAUPhLAMAACLQwSFwHQYi82D4QfT6ivpxwMYAAAAiVQkEOkzDAAAg/0DcySQ +hf8PhIMMAAAPtgaLzdPgT4PFCIl8JBQD0EaD/QOJdCQYct2LytHqg+EBi8KD4ANN +g/gDiUsEd17/JIVsbQAQweoCxwMNAAAAiVQkEIPtAunZCwAAi8Poxfb//8HqAscD +EgAAAIlUJBCD7QLpvQsAAMHqAscDDwAAAIlUJBCD7QLpqAsAAItEJEzHQBgo7wAQ +xwMbAAAAweoCiVQkEIPtAumICwAAi82D4QfT6ivpg/0giVQkEHMnhf8PhMwLAAAP +tgaLzdPgT4PFCIl8JBQD0EaD/SCJVCQQiXQkGHLZi8qLwvfRJf//AADB6RA7wXQQ +i0QkTMdAGAjvABDpJwsAADPSiUNAiVQkEDPtxwMOAAAAi0tAhcmJTCQcD4Ql/v// +O892BovPiUwkHItEJCA7yHYGi8iJTCQchckPhEsLAACLdCQYi3wkKIvBwekC86WL +yItEJByD4QPzpIt0JBSLTCQYi3wkICvwiXQkFIt0JCgDyIlMJBiLS0Ar+APwK8iJ +fCQgi3wkFIl0JCiLdCQYiUtA6ZYKAACD/Q5zJ41kJACF/w+E4woAAA+2BovN0+BP +g8UIiXwkFAPQRoP9Dol0JBhy3YvKg+EfweoFgcEBAQAAi8KJS2CD4B/B6gVAi8qD +4Q+JQ2SLQ2CDwQTB6gSD7Q49HgEAAIlLXIlUJBAPh/QAAACDe2QeD4fqAAAAx0No +AAAAAMcDEAAAAItLaDtLXHNVg/0DcyOF/w+EXAoAAA+2BovN0+BPg8UIiXwkFAPQ +RoP9A4l0JBhy3YtDaA+3BEVI4gAQM8mKysHqA4PtA4lUJBCD4QdmiUxDcItLaEGJ +S2g7S1xyq4tLaLgTAAAAO8hzKDPJ6wmNpCQAAAAAi/+LU2gPtxRVSOIAEGaJTFNw +i1NoQjvQiVNocuWNgzAFAACNS2yJAYlDTI2T8AIAAFKNQ1RQUccABwAAAGoTjUNw +UGoA6GgPAACLVCQog8QYhcCJRCQ0dCCLTCRMx0EYyO4AEOkwCQAAi0QkTMdAGOTu +ABDpIAkAAMdDaAAAAADHAxEAAACLS2CLQ2QDwTlDaA+DFAIAAItLVLgBAAAA0+CL +S0xII8KLDIEPtsU7xYlMJEB2PIX/D4RACQAAD7YGi83T4ItLVE+DxQgD0LgBAAAA +0+CLS0xGiXwkFEgjwosMgQ+2xTvFiXQkGIlMJEB3xItEJEDB6BBmPRAAc1IPts07 +6YlMJBxzJoX/D4TsCAAAD7YGi83T4ItMJBxPg8UIA9BGO+mJfCQUiXQkGHLaZotE +JELT6ivpi0toZolES3CLQ2hAiVQkEIlDaOlKAQAAdWgPts2NQQI76IlMJBxzK4v/ +hf8PhJMIAAAPtgaLzdPgi0wkHE+DxQgD0EaNQQI76Il8JBSJdCQYcteLQ2jT6ivp +hcCJVCQQD4RkAQAAD7dMQ26LwoPgA4PAA8HqAolMJCyD7QLpqwAAAGY9EQAPtsWJ +RCQcdUyDwAM76HMtjWQkAIX/D4QjCAAAD7YGi83T4E+DxQiJfCQUA9CLRCQcRoPA +AzvoiXQkGHLXi0wkHNPqv/3///+LwoPgB4PAA8HqA+tGg8AHO+hzKYX/D4TbBwAA +D7YGi83T4E+DxQiJfCQUA9CLRCQcRoPABzvoiXQkGHLXi0wkHNPqv/n///+LwoPg +f4PAC8HqByv5x0QkLAAAAAAD74t7ZItLaAN7YAPIO8+JVCQQD4eWAAAAhcB0FotM +JCyLe2hmiUx7cIt7aEdIiXtode6LfCQUi0tgi0NkA8E5Q2gPguz9//+DOxsPhOsG +AACNgzAFAACNS2yJAY2T8AIAAFKJQ0yNQ1RQUYtLYFGNU3BSagHHAAkAAADozwwA +AIPEGIXAiUQkNHQ4i0QkTItUJBDHQBiQ7gAQ6ZcGAACLTCRMx0EYrO4AEOmHBgAA +i0QkTIt8JBTHQBis7gAQ6XMGAACLU2yNS2yJU1CNk/ACAABSjUNYUFGLS2DHAAYA +AACLQ2RQjVRLcFJqAuheDAAAi1QkKIPEGIXAiUQkNHQQi0QkTMdAGHjuABDpJgYA +AMcDEgAAAIP/BnJpgXwkIAIBAAByX4tEJEyLVCQgi0wkKIlQEItUJDCJSAyLTCQQ +UokwiXgEUIlLOIlrPOh+MwAAi0QkVItQEItIDIswi3gEi0M4i2s8iVQkKIPECIlM +JCiJdCQYiXwkFIlEJBCL0Om4BQAAi0tUuAEAAADT4EgjwovIi0NMiwSID7bMO82J +RCRAdjyF/w+E7gUAAA+2BovN0+CLS1RPg8UIA9C4AQAAANPgi0tMRol8JBRII8KL +BIEPtsw7zYl0JBiJRCRAd8SEwA+EtwAAAKjwD4WvAAAAD7bMiUwkHDPJisiJRCQs +A0wkHLgBAAAA0+CLTCQcSCPC0+iLTCRAwekQA8GLyItDTIsEiItMJCzB6QiJRCRA +D7bJD7bEA8E7xYlMJBx2WIX/D4RTBQAAD7YGi83T4DPJikwkLE8D0ItEJBxGg8UI +iXwkFAPIuAEAAADT4ItMJByJdCQYSCPC0+gPt0wkLgPBi0tMiwSBi0wkHIlEJEAP +tsQDwTvFd6iLRCRA0+or6Q+2zNPqD7bMK+mLTCRAwekQhMCJVCQQiUtAdQvHAxcA +AADpdgQAAKggdAvHAwsAAADpZwQAAKhAdBCLRCRMx0AYXO4AEOlNBAAAg+APiUNI +xwMTAAAAi0NIhcB0RTvocyWF/w+EkgQAAA+2BovN0+BPg8UIiXwkFAPQi0NIRjvo +iXQkGHLbi0tIuAEAAADT4ItLQEgjwgPIiUtAi0tI0+or6ccDFAAAAItLWLgBAAAA +0+BII8KLyItDUIsEiA+2zDvNiUQkQHY8hf8PhCsEAAAPtgaLzdPgi0tYT4PFCAPQ +uAEAAADT4ItLUEaJfCQUSCPCiwSBD7bMO82JdCQYiUQkQHfEqPAPhbQAAAAPtsyJ +TCQcM8mKyIlEJCwDTCQcuAEAAADT4ItMJBxII8LT6ItMJEDB6RADwYvIi0NQiwSI +i0wkLMHpCIlEJEAPtskPtsQDwTvFiUwkHHZd6wONSQCF/w+EkwMAAA+2BovN0+Az +yYpMJCxPA9CLRCQcRoPFCIl8JBQDyLgBAAAA0+CLTCQciXQkGEgjwtPoD7dMJC4D +wYtLUIsEgYtMJByJRCRAD7bEA8E7xXeoi0QkQNPqK+kPtszT6g+2zCvpqECJVCQQ +dBCLTCRMx0EYRO4AEOm1AgAAi0wkQMHpEIPgD4lLRIlDSMcDFQAAAItDSIXAdEk7 +6HMlhf8PhPACAAAPtgaLzdPgT4PFCIl8JBQD0ItDSEY76Il0JBhy24tLSLgBAAAA +0+CLS0RII8IDyIlLRItLSNPqK+mJVCQQi0QkIItLLCvIA0wkMDlLRHYQi0QkTMdA +GCTuABDpLQIAAMcDFgAAAItEJCCFwA+EfwIAAItMJDAryItDRDvBdjwrwYtLMDvB +iUQkHHYQK8GLSzQDSyiJRCQcK8jrDItLNCvIA0swi0QkHIlMJCyLS0A7wYlMJDh2 +GYvB6xGLTCQoK8iLQ0CJTCQsiUQkOIlEJByLTCQgO8F2BovBiUQkHCvIiUwkIItM +JDgryItEJCiJS0DrA41JAItMJCyKCYgIi0wkLEBBiUwkLP9MJBx16IlEJCiLQ0CF +wA+FdgEAAMcDEgAAAOlrAQAAi0QkIIXAD4S9AQAAi0QkKIpLQIgIQIlEJCj/TCQg +xwMSAAAA6UIBAACLQwiFwA+E2QAAAIP9IHMs6wONSQCF/w+EgwEAAA+2BovN0+BP +g8UIiXwkFAPQRoP9IIlUJBCJdCQYctmLRCQwK0QkIItMJEwBQRSLSxwDyIXAiUQk +MIlLHHQ4i0MQi1MYi0wkKIXAi0QkMFB0CyvIUVLovqj//+sJK8hRUuhTpf//i0wk +WItUJByJQxiDxAyJQTCLRCQgiUQkMItDEIXAi8J1JiUA/wAAi8rB4RADwTPJimwk +EsHgCIlEJDgDwYvKwekYA8GJRCQ4O0MYdA2LRCRMx0AYVO8AEOtgM9KJVCQQM+3H +AxkAAACLQwiFwA+EkwAAAItDEIXAD4SIAAAAg/0gcyeF/w+EkwAAAA+2BovN0+BP +g8UIiXwkFAPQRoP9IIlUJBCJdCQYctk7Uxx0U4tMJEzHQRg87wAQxwMbAAAAiwOD ++BwPhqzs//+4/v///19eXVuDxDjDi0QkTItMJCiJSAyLTCQgiXgEiTBfiUgQXolr +PF2JUzi4AgAAAFuDxDjDM9Iz7ccDGgAAAMdEJDQBAAAA6wjHRCQ0/f///4tEJEyL +TCQoiUgMi0wkIIlIEIkwiXgEi0MohcCJUziJazx1EoM7GH01i0QkTItUJDA7UBB0 +KItMJEyLRCQwUehx6v//g8QEhcB0E8cDHAAAAF9eXbj8////W4PEOMOLdCRMi1YE +i04Qi2wkPIt8JDCLRggr6otWFCv5A8UD14lGCIlWFItLHItDCAPPhcCJSxx0OIX/ +dDSLQxCFwItDGHQUi04MK891BDPA6xmL1+gCp///6xCLVgxXK9dSUOhzo///g8QM +iUMYiUYwi0sEiwP32RvJM9KD4UCD+AsPlcJKgeKAAAAAA8oDSzyF7YlOLHUEhf90 +B4N8JFAEdRmLRCQ0hcAPhan+//9fXl24+////1uDxDjDi0QkNF9eXVuDxDjDuP7/ +//9bg8Q4w5ArWAAQfFkAEBtaABCSWgAQElsAEJ1bABBiXAAQM10AEPxdABCQXgAQ +8F4AEBBfABAbXwAQ5V8AEFFgABDXYAAQWmEAEFRiABBHZQAQJmcAEHhnABDIaAAQ +QGkAEAJqABAragAQFWsAELlrABDDawAQHGwAEH9fABCUXwAQsF8AEMVfABDMzMzM +Vot0JAiF9nQ4i0YchcB0MYtOJIXJdCqLQDSFwHQKUItGKFD/0YPECItOHItWKFFS +/1Ykg8QIx0YcAAAAADPAXsO4/v///17DzMzMzMzMzMxTV4t8JAyF/w+ExAAAAItf +HIXbD4S5AAAAi0MIVYtsJBhWi3QkGIXAiwN0D4P4CnQPXl1fuP7///9bw4P4CnUd +VVZqAejnof//i0sYg8QMO8F0Cl5dX7j9////W8OLRxBX6Ero//+DxASFwHQQXl1f +xwMcAAAAuPz///9bw4tDKDvoi3s0diYr8AP1i8jB6QLzpYvIg+ED86SLSyheXV+J +SyzHQwwBAAAAM8Bbwyv9i82L0cHpAgP486WLyoPhA/OkXolrLF1fx0MMAQAAADPA +W8NfuP7///9bw8zMzMzMzItUJASLDzPAhdJ2Q1NVi/+D+QRzOIoUMIP5AhvbgeMB +////D7bqgcP/AAAAO+t1A0HrEYTSdAQzyesJugQAAAAr0YvKi1QkDEA7wnLDXVuJ +D8PMzMzMzMzMzMzMzMzMzFNVi2wkDIXtD4TgAAAAi10chdsPhNUAAACLRQSFwFe/ +CAAAAHUOOXs8cwlfXbj7////W8ODOx1WdFiLQzyLUziLyIPhB9PiK8EzyTvHxwMd +AAAAiVM4iUM8ciG++P///4vQikM4iEQMFItDOMHoCAPWQTvXiUM4c+mJUzyNe2hR +jXQkGMcHAAAAAOgR////g8QEi00Ei3UAjXtoUej//v//i3UEi1UAi00IK/ADyAPQ +iXUEiVUAiU0IiweDxASD+ASL8XQKXl9duP3///9bw4t9FFXoKOX//4PEBIl1CF6J +fRRfXccDCwAAADPAW8NduP7///9bw8zMzMzMzMzMzMyLRCQEhcB0HItAHIXAdBWD +OA11DYtIPIXJdQa4AQAAAMMzwMO4/v///8PMzMzMzMxTVleLfCQQhf8PhB0BAACL +dCQUhfYPhBEBAACLXhyF2w+EBgEAAItGIIXAD4T7AAAAi04khckPhPAAAACLTihV +aDAlAABqAVH/0Ivog8QMhe10L4tLNDPAhcl0MItLJItGKLoBAAAA0+JqAVJQ/1Yg +g8QMhcB1FYtOKFVR/1Ykg8QIXV9euPz///9bw7kOAAAA86W5TAkAAIvzi/3zpYtL +TI2TMAUAADvKcjeNkywlAAA7ynctK8uB6TAFAADB+QKNjI0wBQAAiU1Mi1NQK9OB +6jAFAADB+gKNjJUwBQAAiU1Qi1NsK9OB6jAFAADB+gKFwI2MlTAFAACJTWx0HYtL +JItzNLoBAAAA0+KL+IvKwekC86WLyoPhA/OkiUU0i0QkFIloHF1fXjPAW8NfXrj+ +////W8PMzMzMzMzMzMzMzIPsfIuUJJAAAAAzwIlEJDyJRCRAiUQkRFOLnCSQAAAA +iUQkTFWLrCSMAAAAiUQkVFaLtCSUAAAAhfaJRCRciUQkYIlEJGR2G+sGjZsAAAAA +D7dMRQBm/0RMSI1MTEhAO8Zy7YsCuQ8AAACJRCQQiUwkGGaDfExIAHUGSYP5AXPy +O8GJTCQYdgaJTCQQi8GFyXU2ZolMJA6LC8ZEJAxAxkQkDQGLRCQMiQGLC4PBBIkL +iQGLA16DwASJA13HAgEAAAAzwFuDxHzDvgEAAACNSQBmg3x0SAB1OmaDfHRKAHUi +ZoN8dEwAdR1mg3x0TgB1GmaDfHRQAHUXg8YFg/4PdtDrEEbrDYPGAusIg8YD6wOD +xgQ7xnMEiXQkELoBAAAAi8JXD7d8REwD0ivXD4i8AAAAQIP4D3brhdJ+GIuEJJAA +AACFwA+EowAAAIP5AQ+FmgAAAGbHRCRuAAC4AgAAAJBmi1QEbGYDVARMZotMBE5m +A8pmiVQEbmaJTARwg8AEg/gectyLjCSYAAAAi7wkpAAAADPAhcl2KWaDfEUAAHQc +D7dURQAPt1RUbGaJBFcPt1RFAGb/RFRsjVRUbEA7wXLXi5QkkAAAAIvCg+gAuf// +//90Skh0IcdEJDQg4wAQx0QkMGDjABCJTCQs60FfXl2DyP9bg8R8w7ig4gAQLQIC +AACJRCQ0uODiABAtAgIAAIlEJDDHRCQsAAEAAOsQiXwkMIl8JDTHRCQsEwAAAIsD +iUQkIIlMJDiLTCQUuAEAAADT4DPtM9uD+gGNSP+JdCQYiUQkPIlEJCiJTCRAdQs9 +sAUAAA+DYwIAAIl8JCSL/4pUJBiLdCQkZosGKtMPt8iIVCQRi1QkLDvKfQzGRCQQ +AGaJRCQS6y1+Hw+3BotMJDDR4IoUCItMJDSIVCQQZosUCGaJVCQS6wzGRCQQYGbH +RCQSAACLTCQYi0QkPCvLugEAAADT4ovLi/3T74tMJCCJRCREjTSVAAAAAAP4jQy5 +i3wkECvCK86FwIk5dfaLVCQYjUr/uAEAAADT4IXFdAbR6IXFdfqFwHQLjUj/I80D +yIvp6wIz7Yt0JCSDxgJm/0xUTGaDfFRMAIl0JCR1HjtUJBwPhOAAAACLjCSUAAAA +i9YPtwIPtxRBiVQkGDtUJBQPhgn///+LdCRAi0QkOCP1O/CJdCRID4Tz/v//hdt1 +BItcJBSLRCQgi0wkRIt8JByNFIiLTCQYK8uJVCQguAEAAACNFAvT4DvXcyCNdFRM +D7c+K8eFwH4Pi3wkHEFCg8YC0eA713Loi3QkSItUJCi4AQAAANPgA9CJRCQ8g7wk +kAAAAAGJVCQodQ2Lwj2wBQAAD4PVAAAAi9aLtCScAAAAiwaIDJCLDopEJBSIRJEB +iwaLTCQgK8jB+QKJVCQ4ZolMkALpR/7//4u8JJwAAACKwirDhe3GRCQQQIhEJBFm +x0QkEgAAdF2LdCQgjWQkAIXbdCCLTCRAi0QkOCPNO8h0EotEJBSLNzPbiUQkGIhE +JBGL0IvLi8XT6ItMJBCJDIaNSv+4AQAAANPghcV0B5DR6IXFdfqFwHQLjUj/I80D +yIvpdauLVCQoiw+NBJUAAAAAi1QkFAPIiQ+LjCSgAAAAX15diREzwFuDxHzDX15d +uAEAAABbg8R8w8zMzMzMzI2ClAAAAImCGAsAAI2CfAoAAImCMAsAADPAjYqICQAA +x4IgCwAAFAABEImKJAsAAMeCLAsAACgAARDHgjgLAAA8AAEQZomCuBYAAImCvBYA +AMeCtBYAAAgAAADpAAAAAFaNgpQAAAC5HgEAADP2i/9miTCDwARJdfeNgogJAAC5 +HgAAAGaJMIPABEl1942CfAoAALkTAAAAZokwg8AESXX3ibKsFgAAibKoFgAAibKw +FgAAibKgFgAAZseClAQAAAEAXsPMzMzMzMzMzMzMzMxRi5BQFAAAVVaLdCQQi6yw +XAsAAI0MNjvKiWwkCA+PlgAAAFN9Mou0iGALAACLrIhcCwAAZosUt2aLHK9mO9Ny +EnURipQGWBQAADqUKFgUAAB3AUGLbCQMi7SIXAsAAGaLFK9mixy3ZjvTci11EIqU +KFgUAAA6lAZYFAAAdiuLVCQUibSQXAsAAIuQUBQAAIlMJBTR4TvKfouLTCQUW16J +rIhcCwAAXVnDi1QkFFteiayQXAsAAF1Zw4mssFwLAABeXVnDzMzMzMzMzMzMzMzM +g+wgi1EEiVQkFFOLGYtJCItRBIlUJCCLUQiJVCQcM9JViylWi3EQiZA8CwAAiZBA +CwAAiZBECwAAiZBICwAAiZBMCwAAiZBQCwAAiZBUCwAAiZBYCwAAi5BUFAAAi5SQ +XAsAADPJV2aJTJMCi7hUFAAAR4H/PQIAAIl0JByJTCQYD42kAQAAjYy4XAsAAIlM +JBS5PQIAACvPA/mJTCQgiXwkEOsLi3QkHI2kJAAAAACLVCQUixIPt0yTAg+3TIsC +QTvOfgaLzv9EJBg7VCQkZolMkwJ/TIt8JChm/4RIPAsAADP2O9d8C4vyK/eLfCQs +izS3D7c8kwPOD6/PAYioFgAAhe10GA+3VJUCi4isFgAAA9YPr9cDyomIrBYAAIt8 +JBCLVCQUi0wkIIPCBEmJVCQUiUwkIA+Faf///4tsJBiF7Q+E4wAAAItMJByNUf+J +VCQsjbRIPAsAAI2bAAAAAItMJCxmg7xIPAsAAACNlEg8CwAAdQqD6gJJZoM6AHT2 +Zv+MSDwLAABmg4RIPgsAAAJm/w6D7QKF7X/Fi1QkHIXSD4SEAAAAiXQkIOsDjUkA +D7c2hfaJdCQcdGCNrLhcCwAAi3wkEItN/E+D7QSJfCQQO0wkJIlsJCx/OA+3fIsC +O/qNdIsCdCAPtwyLi+or7w+v6YuIqBYAAAPNi2wkLImIqBYAAGaJFotMJBxJiUwk +HIvxhfZ1q4t8JBCLdCQgSoPuAoXSiXQkIHWFX15dW4PEIMPMzMzMzMzMzMzMzMzM +g+wgVo10JAYzybgBAAAAK9aNNEIPt3Q0BGYD8dHmi85miUxEBECD+A9+5jP2hdt8 +O1UPt1S3AoXSdCszwGaLRFQID7fIQGaJRFQIM8CNSQCL6YPlAQvF0enR4EqF0n/w +0ehmiQS3RjvzfsddXoPEIMPMzMzMzMzMzMzMzMzMzMyD7AiLRCQMU1VXiziLQAiL +SAyLGDPSg83/M8A7yolMJBCJbCQMiZZQFAAAx4ZUFAAAPQIAAH43ZjkUh3Qji45Q +FAAAQYmOUBQAAImEjlwLAACJRCQMiJQwWBQAAIvo6wVmiVSHAotMJBBAO8F8yYO+ +UBQAAAJ9VoP9An0FRYvF6wIzwIuOUBQAAEGJjlAUAACJhI5cCwAAZscEhwEAiJQG +WBQAAIuOqBYAAEk72omOqBYAAHQLD7dEgwIphqwWAACDvlAUAAACfK6JbCQMi0wk +GIlpBIuGUBQAAJkrwovY0fuD+wF8EVOLxuiC+///g8QES4P7AX3vi2wkEOsDjUkA +i4ZQFAAAi5SGXAsAAIueYAsAAEiJhlAUAABqAYvGiZZgCwAA6Ef7//+LllQUAACL +hmALAACDxARKiZZUFAAAi8qJnI5cCwAAi45UFAAASYmOVBQAAImEjlwLAABmiwyH +ZgMMn2aJDK+KjAZYFAAAipQeWBQAADrRcgUPtsrrAw+2yf7BiIwuWBQAAGaJbIcC +ZolsnwKJrmALAABqAYvGRejL+v//i4ZQFAAAg8QEg/gCD41J////i4ZUFAAAi5Zg +CwAAi0wkGEiJhlQUAACJlIZcCwAAi8boZPv//4tcJAyNljwLAADolf3//19dW4PE +CMPMzMzMzMzMzMzMzMzMzFFTVVZXD7d4AoPN/zP2hf+L2bkHAAAAugQAAAB1CrmK +AAAAugMAAACF22bHRJgG//8PjJsAAACDwAaJRCQQQ5CLx4t8JBAPtz9GO/F9BDvH +dG478otMJBh9CmYBtIF8CgAA6y6FwHQVO8V0CGb/hIF8CgAAZv+BvAoAAOsVg/4K +fwlm/4HACgAA6wdm/4HECgAAM/aF/4vodQy5igAAALoDAAAA6xo7x3UMuQYAAAC6 +AwAAAOsKuQcAAAC6BAAAAItEJBCDwARLiUQkEA+Fbv///19eXVtZw8zMzMzMzMzM +g+wMU1WLbCQYVleL+Q+3TwKJTCQQM/aDy/85dCQQuQcAAAC6BAAAAHUKuYoAAAC6 +AwAAAIXtD4zGBAAAg8cGRYl8JBSJbCQY6waNmwAAAACLfCQUD7c/i2wkEEY78Yl8 +JBCJdCQgfQg77w+EeAQAADvyD42nAAAA6waNmwAAAAAPt7yofgoAAIuIvBYAALoQ +AAAAK9c7yn5cD7e0qHwKAACL1tPii0gIZgmQuBYAAItQFIqYuBYAAIgcEYtQFIqY +uRYAAEKJUBSLyotQCIgcEYtIFIuQvBYAAEGJSBSxECrKZtPujUw68GaJsLgWAACL +dCQg6xRmi5SofAoAAGbT4mYJkLgWAAADz06JiLwWAACJdCQgD4Vm////6ZcDAACF +7Q+EmQEAADvrD4SUAAAAD7e8qH4KAACLiLwWAAC6EAAAACvXO8p+XA+3tKh8CgAA +i9bT4otICGYJkLgWAACLUBSKmLgWAACIHBGLUBSKmLkWAABCiVAUi8qLUAiIHBGL +SBSLkLwWAABBiUgUsRAqymbT7o1MOvBmibC4FgAAi3QkIOsUZouUqHwKAABm0+Jm +CZC4FgAAA89OiYi8FgAAiXQkIA+3uL4KAACLiLwWAAC6EAAAACvXO8p+Ww+3sLwK +AACL1tPii0gIZgmQuBYAAItQFIqYuBYAAIgcEYtQFIqYuRYAAEKJUBSLyotQCIgc +EYtIFIuQvBYAAEGJSBSxECrKZtPujUw68GaJsLgWAACLdCQg6xNmi5C8CgAAZtPi +ZgmQuBYAAAPPg8b9g/kOiYi8FgAAfliL1tPii0gIZgmQuBYAAItQFIqYuBYAAIgc +EYtQFIqYuRYAAEKJUBSLyotQCIgcEYtIFIuQvBYAAEGJSBSxECrKZtPug8LyiZC8 +FgAAZomwuBYAAOkHAgAA0+ZmCbC4FgAAg8EC6fABAACD/gqLiLwWAAC6EAAAAA+P +8gAAAA+3uMIKAAAr1zvKflsPt7DACgAAi9bT4otICGYJkLgWAACLUBSKmLgWAACI +HBGLUBSKmLkWAABCiVAUi8qLUAiIHBGLSBSLkLwWAABBiUgUsRAqymbT7o1MOvBm +ibC4FgAAi3QkIOsTZouQwAoAAGbT4mYJkLgWAAADz4PG/YP5DYmIvBYAAH5Yi9bT +4otICGYJkLgWAACLUBSKmLgWAACIHBGLUBSKmLkWAABCiVAUi8qLUAiIHBGLSBSL +kLwWAABBiUgUsRAqymbT7oPC84mQvBYAAGaJsLgWAADpAQEAANPmZgmwuBYAAIPB +A+nqAAAAD7e4xgoAACvXO8p+Ww+3sMQKAACL1tPii0gIZgmQuBYAAItQFIqYuBYA +AIgcEYtQFIqYuRYAAEKJUBSLyotQCIgcEYtIFIuQvBYAAEGJSBSxECrKZtPujUw6 +8GaJsLgWAACLdCQg6xNmi5DECgAAZtPiZgmQuBYAAAPPg8b1g/kJiYi8FgAAflWL +1tPii0gIZgmQuBYAAItQFIqYuBYAAIgcEYtQFIqYuRYAAEKJUBSLyotQCIgcEYtI +FIuQvBYAAEGJSBSxECrKZtPug8L3iZC8FgAAZomwuBYAAOsS0+ZmCbC4FgAAg8EH +iYi8FgAAi0wkEDP2hcmL3XUMuYoAAAC6AwAAAOsaO+l1DLkGAAAAugMAAADrCrkH +AAAAugQAAACLbCQUi3wkGIPFBE+JbCQUiXwkGA+FTvv//19eXVuDxAzDzMzMzMzM +Vovwi44cCwAAjYaUAAAAVuj7+f//i44oCwAAjYaICQAAVujp+f//jYYwCwAAUOjd +9///g8QMuBIAAADrA41JAA+2iNzkABBmg7yOfgoAAAB1BkiD+AN96IuOqBYAAI1U +QBEDyomOqBYAAF7DzMzMzIuIvBYAAIP5C1OLXCQMVYtsJBRWV35ni3QkFIHG//7/ +/4vW0+KLSBSJXCQcZgmQuBYAAIqYuBYAAItQCIgcEYtQFIqYuRYAAEKJUBSLyotQ +CIgcEYtIFIuQvBYAAItcJBxBiUgUsRAqymbT7oPC9YmQvBYAAGaJsLgWAADrHItU +JBSBwv/+///T4mYJkLgWAACDwQWJiLwWAACLiLwWAACD+Qt+YI1z/4vW0+KLSBSJ +XCQcZgmQuBYAAIqYuBYAAItQCIgcEYtQFIqYuRYAAEKJUBSLyotQCIgcEYtIFIuQ +vBYAAItcJBxBiUgUsRAqymbT7oPC9YmQvBYAAGaJsLgWAADrFY1T/9PiZgmQuBYA +AIPBBYmIvBYAAIuIvBYAAIP5DH5gjXX8i9bT4otIFIlcJBxmCZC4FgAAipi4FgAA +i1AIiBwRi1AUipi5FgAAQolQFIvKi1AIiBwRi0gUi5C8FgAAi1wkHEGJSBSxECrK +ZtPug8L0iZC8FgAAZomwuBYAAOsVjVX80+JmCZC4FgAAg8EEiYi8FgAAM/+F7Q+O +owAAAOsKjaQkAAAAAI1JAIuIvBYAAIP5DQ+2l9zkABB+XQ+3tJB+CgAAi9bT4otI +FGYJkLgWAACKmLgWAACLUAiIHBGLUBSKmLkWAABCiVAUi8qLUAiIHBGLSBSLkLwW +AABBiUgUsRAqymbT7oPC84mQvBYAAGaJsLgWAADrG2aLlJB+CgAAZtPiZgmQuBYA +AIPBA4mIvBYAAEc7/Q+Mbf///4tcJBiLTCQUSVGNiJQAAADoKPj//0tTjYiICQAA +6Bv4//+DxAhfXl1bw8zMzFaL8YuIvBYAAIP5DX5ni9bT4otICFNmCZC4FgAAi1AU +ipi4FgAAiBwRi0gUipi5FgAAi1AIQYlIFIgcEYuQvBYAAItYFLEQKspDZtPui0wk +EIPC84lYFImQvBYAAItUJAxbagFmibC4FgAA6PAJAACDxARew4tUJAjT5oPBA4mI +vBYAAItMJAxmCbC4FgAAagHoygkAAIPEBF7DzMzMzMyLiLwWAAC6AgAAANPiU1Zm +CZC4FgAAg/kNfk2LUBSKmLgWAACLSAiIHBGLSBSKmLkWAACLUAhBiUgUiBwRi5C8 +FgAAi1gUsRAqyr4CAAAAZtPuQ4PC84lYFGaJsLgWAACJkLwWAADrCYPBA4mIvBYA +AIuIvBYAADPS0+JmCZC4FgAAg/kJfkqLUBSKmLgWAACLSAiIHBGLSBSKmLkWAACL +UAhBiUgUiBwRi5C8FgAAi1gUsRAqyjP2ZtPuQ4PC94lYFGaJsLgWAACJkLwWAADr +CYPBB4mIvBYAAOjxBwAAi4i8FgAAi5C0FgAAK9GDwguD+gkPjecAAAC6AgAAANPi +ZgmQuBYAAIP5DX5Ni1AUipi4FgAAi0gIiBwRi0gUipi5FgAAi1AIQYlIFIgcEYuQ +vBYAAItYFLEQKsq+AgAAAGbT7kODwvOJWBRmibC4FgAAiZC8FgAA6wmDwQOJiLwW +AACLiLwWAAAz0tPiZgmQuBYAAIP5CX5ai1AUipi4FgAAi0gIiBwRi0gUipi5FgAA +i1AIQYlIFIgcEYuQvBYAAItYFLEQKsoz9mbT7kODwveJWBRmibC4FgAAiZC8FgAA +6AsHAABex4C0FgAABwAAAFvDg8EHiYi8FgAA6PAGAABex4C0FgAABwAAAFvDzMzM +U1VWi/GL2IuGhAAAADPthcB+VYXbdg+LBoN4LAJ1B4vW6OoFAACNjhgLAABR6G7y +//+NliQLAABS6GLy//+DxAiLxuhI+v//i5aoFgAAi46sFgAAg8IKg8EKweoDwekD +O8qL6HcH6wONSwWL0Y1DBDvCdxiLRCQQhcB0EFNQi8+Lxujp/P//6UYBAACDvogA +AAAED4SzAAAAO8oPhKsAAACLjrwWAACD+Q2NVwR+VYvC0+CLTghmCYa4FgAAi0YU +ip64FgAAiBwBi14Ui0YIQ4leFIvLip65FgAAiBwBi04Ui568FgAAQYlOFLEQKstm +0+qDw/OJnrwWAABmiZa4FgAA6xLT4mYJlrgWAACDwQOJjrwWAACLhigLAACLjhwL +AABFQFVQQVGLxujR+f//jZaICQAAUo2GlAAAAFCLxuisAAAAg8QU6YkAAACLjrwW +AACD+Q2NRwJ+VYvQ0+KLTghmCZa4FgAAi1YUip64FgAAiBwRi1YUip65FgAAQolW +FIvKi1YIiBwRi04Ui5a8FgAAQYlOFLEQKspm0+iDwvOJlrwWAABmiYa4FgAA6xLT +4GYJhrgWAACDwQOJjrwWAABocOkAEGjw5AAQi8boHgAAAIPECIvW6MTs//+F/3QK +i8ZeXVvpdgUAAF5dW8PMzIuQoBYAAIPsDFOLXCQUVVYzyYXSVw+ERgMAAOsDjUkA +i5CkFgAAD7csSouQmBYAAA+2NBFBhe2JTCQYi4i8FgAAD4WEAAAAD7d8swK6EAAA +ACvXO8p+Xw+3NLOL1tPii0gIiVwkEGYJkLgWAACLUBSKmLgWAACIHBGLUBSKmLkW +AABCiVAUi8qLUAiIHBGLSBSLkLwWAACLXCQQQYlIFLEQKspm0+6NTDrwZomwuBYA +AOmVAgAAZosUs2bT4mYJkLgWAAADz+mAAgAAD7aW6OsAEA+3vJMGBAAAuxAAAAAr +3zvLiXwkEIt8JCCJVCQUfmYPt7yXBAQAAIvX0+KLSAhmCZC4FgAAi1AUipi4FgAA +iBwRi1AUipi5FgAAQolQFIvKi1AIiBwRi0gUi5C8FgAAQYlIFLEQKspm0++LTCQQ +jVQK8ImQvBYAAItUJBRmibi4FgAA6x5mi7yXBAQAAGbT52YJuLgWAACLfCQQA8+J +iLwWAACLPJWg4wAQhf+LXCQgD4R9AAAAKzSV6OwAEIuIvBYAALoQAAAAK9c7yn5U +i9bT4otICGYJkLgWAACLUBSKmLgWAACIHBGLUBSKmLkWAABCiVAUi8qLUAiIHBGL +SBSLkLwWAACLXCQgQYlIFLEQKspm0+6NTDrwZomwuBYAAOsL0+ZmCbC4FgAAA8+J +iLwWAABNgf0AAQAAcwkPtr3o6QAQ6wyL1cHqBw+2uujqABCLTCQkD7dUuQKLiLwW +AAC+EAAAACvyO86JVCQUfmaLVCQkD7c0uovW0+KLSAhmCZC4FgAAi1AUipi4FgAA +iBwRi1AUipi5FgAAQolQFIvKi1AIiBwRi0gUi5C8FgAAi1wkIEGJSBSxECrKZtPu +i0wkFI1UCvCJkLwWAABmibC4FgAA6xqLdCQkZos0vmbT5mYJsLgWAAADyomIvBYA +AIs0vRjkABCF9g+EgQAAACssvWDtABCLiLwWAAC6EAAAACvWO8p+WIvV0+KLSAiJ +XCQUZgmQuBYAAItQFIqYuBYAAIgcEYtQFIqYuRYAAEKJUBSLyotQCIgcEYtIFIuQ +vBYAAItcJBRBiUgUsRAqymbT7Y1MMvBmiai4FgAA6wvT5WYJqLgWAAADzomIvBYA +AItMJBg7iKAWAAAPgr/8//8Pt7sCBAAAi4i8FgAAuhAAAAAr1zvKfngPt7MABAAA +i9bT4otICIlcJCBmCZC4FgAAi1AUipi4FgAAiBwRi1AUi0gIi1wkIEKJUBSL6oqQ +uRYAAIgUKYtIFIuQvBYAAEGJSBSxECrKZtPujUw68F+JiLwWAABmibC4FgAAD7eT +AgQAAF5diZC0FgAAW4PEDMNmi5MABAAAZtPiZgmQuBYAAAPPX4mIvBYAAA+3iwIE +AABeXYmItBYAAFuDxAzDzDPAjYqUAAAAZoM5AHUJQIPBBIP4CXzxg/gJD4WbAAAA +uA4AAACNitAAAADrA41JAGaDefwAD4WAAAAAZoM5AHU1ZoN5BAB1PWaDeQgAdUdm +g3kMAHVRZoN5EAB1W4PABoPBGIP4IHzIixIzyYP4IA+UwYlKLMOLEjPJQIP4IA+U +wYlKLMOLEjPJg8ACg/ggD5TBiUosw4sSM8mDwAOD+CAPlMGJSizDixIzyYPABIP4 +IA+UwYlKLMODwAWLEjPJg/ggD5TBiUosw8zMzMzMzMyLiLwWAACD+RBTdTiLUBSK +mLgWAACLSAiIHBGLUBSKmLkWAABCiVAUi8qLUAiIHBH/QBQzyWaJiLgWAACJiLwW +AABbw4P5CHw0i0gIi1AUipi4FgAAiBwRZg+2iLkWAACLUBRmiYi4FgAAi4i8FgAA +QoPB+IlQFImIvBYAAFvDzIuQvBYAAIP6CFN+OItQFIqYuBYAAItICIgcEYtQFIqY +uRYAAEKJUBSLyotQCIgcEf9AFDPJZomIuBYAAImIvBYAAFvDM8k70X4Ui1AIipi4 +FgAAVotwFIgcMv9AFF5miYi4FgAAiYi8FgAAW8PMzMxTVleL2Yv66IT///+LTCQQ +hcnHgLQWAAAIAAAAdDuLSBSLUAiIHBGLSBSLUAhBiUgUiDwRi3AUi1AIRolwFIrL +9tGIDBaLcBSLUAhGi8v30YlwFIgsFv9AFIXbdCGNSQCLSBSLUAiJXCQQih+IHBGL +cBSLXCQQRkdLiXAUdeJfXlvDzMzMzMzMzMzMzMzMzMyD7DiLRCREi0wkSItUJDxT +i1wkRGgwJQAAiUQkCIsDagFqAIlMJBSJVCQciUQkIMdEJCgAAAAAx0QkMMCRABDH +RCQ4AAAAAMdEJDTgkQAQ6OwAAACDxAyFwHUKuPz///9bg8Q4w4lEJCCNTCQEUcdA +CAEAAADHQCQPAAAAx0A0AAAAAOgIxP//g8QEhcB1XVaNVCQIagRS6ITG//+L8IPE +CIP+AXQyjUQkCFDoUNz//4PEBIP+AnQVg/77dQiLRCQMhcB0CIvGXluDxDjDXrj9 +////W4PEOMOLTCQcjVQkCFKJC+gY3P//g8QEXluDxDjDzMzMzMzMzMzMzMzMzMzM +uFiwABDDzMzMzMzMzMzMzLhVAgAAw8zMzMzMzMzMzMyLRCQEjQyFAAAAALrg7QAQ +K9GLAsPMzMzMzMzMzMzMzItEJAgPr0QkDFD/FQywABCDxATDzMzMzMzMzMzMzMzM +i0QkCFD/FQiwABBZw8zMzItUJARVV1ZTg+w0i+qLVXyLXXg5nYwAAAB3A8HqAkKL +vZAAAACJVCQwi0V0O8dzAov4iVwkKIt1OItNbIl0JCSJfCQQA/GJdCQMZosWZotc +M/+BxgEBAABmiVQkHIk0JIt1LIHuBgEAACvOdwIzyYlMJCyLVUCJVCQgi1VwZots +JByLRCRMiVQkBItUJCSL+gN8JCiLdCQgT4l8JAjrTpCDRCQwEA+E0QMAAGY5HDh0 +HCX/fwAAZosERjvID4O6AwAA/0wkMHXj6a8DAABmOywQdd7p4wIAAIt8JAgl/38A +AGaLBEY7yA+DjwMAAINsJDARdqxmORw4D4SsAgAAJf9/AABmiwRGO8gPg20DAABm +ORw4D4SAAgAAJf9/AABmiwRGO8gPg1IDAABmORw4D4RUAgAAJf9/AABmiwRGO8gP +gzcDAABmORw4D4QoAgAAJf9/AABmiwRGO8gPgxwDAABmORw4D4T8AQAAJf9/AABm +iwRGO8gPgwEDAABmORw4D4TQAQAAJf9/AABmiwRGO8gPg+YCAABmORw4D4SkAQAA +Jf9/AABmiwRGO8gPg8sCAABmORw4D4R1AQAAJf9/AABmiwRGO8gPg7ACAABmORw4 +D4RGAQAAJf9/AABmiwRGO8gPg5UCAABmORw4D4QXAQAAJf9/AABmiwRGO8gPg3oC +AABmORw4D4ToAAAAJf9/AABmiwRGO8gPg18CAABmORw4dH0l/38AAGaLBEY7yA+D +SAIAAGY5HDh0eiX/fwAAZosERjvID4MxAgAAZjkcOHRzJf9/AABmiwRGO8gPgxoC +AABmORw4dGwl/38AAGaLBEY7yA+DAwIAAGY5HDh0ZSX/fwAAZosERjvID4PsAQAA +g2wkMBAPh1n+///pAP7//2Y7LBAPhXn///+DRCQwBekVAQAAZjssEHWAg0QkMATp +BQEAAGY7LBB1h4NEJDAD6fUAAABmOywQdY6DRCQwAunlAAAAZjssEHWVg0QkMAHp +1QAAAGY7LBAPhQ7///+DRCQwBunBAAAAZjssEA+F3/7//4NEJDAH6a0AAABmOywQ +D4Ww/v//g0QkMAjpmQAAAGY7LBAPhYH+//+DRCQwCemFAAAAZjssEA+FUv7//4NE +JDAK63RmOywQD4Um/v//g0QkMAvrY2Y7LBAPhfr9//+DRCQwDOtSZjssEA+Fzv3/ +/4NEJDAN60FmOywQD4Wi/f//g0QkMA7rMGY7LBAPhXb9//+DRCQwD+sfZjssEA+F +Sv3//4NEJDAQ6w6LfCQkZjssOA+FD/3//4v6i3QkDAP4i1YDM1cDdC0K0nQHvgMA +AADrUWYL0nQHvgQAAADrRYHi////AHQHvgUAAADrNr4GAAAA6y+DxwaDxga5PwAA +APOndByD7gSLV/wzFgrSdRBGZgvSdQpGgeL///8AdQFGK3QkDDt0JCh3EYt0JCCL +TCQsi1QkJOmM/P//iXQkKIlEJAQ7dCQQcyKLTCQMi1QkJAPOA/JOiXQkCGaLWf+L +dCQgi0wkLOlc/P//i1wkBItsJEiLTCQoiV1wi0V0O8h3AovBg8Q0W15fXcMNCkdW +TWF0MzIgb3B0aW1pc2VkIGFzc2VtYmx5IGNvZGUgd3JpdHRlbiAxOTk2LTk4IGJ5 +IEdpbGxlcyBWb2xsYW50DQpTnFiLyDUAAAQAUJ2cWDPBdB5RnZycWYvBNQAAIABQ +nZxYnTPBdBC4AQAAAA+iW8O4AAMAAOv3uAAEAADr8FVXVlOD7CSLVCQ4i0wkPItC +eIuajAAAADvDi0I0i1p8fAPB6wJLweMQC9iJHCSLgpAAAACLWnQ72HwCi9iJXCQY +i3I4iXQkBItqbI18NQCJfCQgi8f32IPgA4lEJBSLQiwtBgEAACvofwIz7YtCeIlE +JBwD8Il0JAgPtx+JXCQQD7dcOP+JXCQMi3pAixQk6xojyg+3DE87zQ+G4AAAAIHq +AAABAA+I1AAAAA+3RDH/O8N13YtEJAQPtwQBO0QkEHXPiRQki3QkBIt8JCAD8YtE +JBS6+P7//428OAgBAACNtDAIAQAAiwQyMwQ6dRSLRDIEM0Q6BHUHg8IIdenrcYPC +BKn//wAAdQaDwgLB6BAsAYPSAI0EOot8JCArxz0CAQAAfUyLVCQ4i1wkHDvDfxOL +dCQIi3pAi1wkDIsUJOlO////i1wkGIlEJByJSnA7w30ti3QkBAPwiXQkCA+3XDj/ +i3pAiVwkDIsUJOkh////i1QkOMdEJBwCAQAAiUpwi1QkOItcJByLQnQ72H8Ci8OD +xCRbXl9dww0KYXNtNjg2IHdpdGggbWFzbSwgb3B0aW1pc2VkIGFzc2VtYmx5IGNv +ZGUgZnJvbSBCcmlhbiBSYWl0ZXIsIHdyaXR0ZW4gMTk5OA0KzMzMzMzMzMzMzMzM +6QMBAACNSQBGYXN0IGRlY29kaW5nIENvZGUgZnJvbSBDaHJpcyBBbmRlcnNvbgCQ +aW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29k +ZQCL/2ludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAIv/AAAAAAEAAAADAAAA +BwAAAA8AAAAfAAAAPwAAAH8AAAD/AAAA/wEAAP8DAAD/BwAA/w8AAP8fAAD/PwAA +/38AAP//AAD//wEA//8DAP//BwD//w8A//8fAP//PwD//38A////AP///wH///8D +////B////w////8f////P////3//////V1ZVU5yD7ED8i3QkWIt+HItWBIsGA9CD +6guJRCQsiVQkFItsJFyLThCLXgwr6ffdA+uB6QEBAAADy4lcJDyJbCQoiUwkEItH +TItPUIlEJAiJTCQMuAEAAACLT1TT4EiJBCS4AQAAAItPWNPgSIlEJASLRyiLTzCL +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 +EAcKAAAIYAAACCAAAAmgAAAIAAAACIAAAAhAAAAJ4AAQBwYAAAhYAAAIGAAACZAA +Ewc7AAAIeAAACDgAAAnQABEHEQAACGgAAAgoAAAJsAAACAgAAAiIAAAISAAACfAA +EAcEAAAIVAAACBQAFQjjABMHKwAACHQAAAg0AAAJyAARBw0AAAhkAAAIJAAACagA +AAgEAAAIhAAACEQAAAnoABAHCAAACFwAAAgcAAAJmAAUB1MAAAh8AAAIPAAACdgA +EgcXAAAIbAAACCwAAAm4AAAIDAAACIwAAAhMAAAJ+AAQBwMAAAhSAAAIEgAVCKMA +EwcjAAAIcgAACDIAAAnEABEHCwAACGIAAAgiAAAJpAAACAIAAAiCAAAIQgAACeQA +EAcHAAAIWgAACBoAAAmUABQHQwAACHoAAAg6AAAJ1AASBxMAAAhqAAAIKgAACbQA +AAgKAAAIigAACEoAAAn0ABAHBQAACFYAAAgWAEAIAAATBzMAAAh2AAAINgAACcwA +EQcPAAAIZgAACCYAAAmsAAAIBgAACIYAAAhGAAAJ7AAQBwkAAAheAAAIHgAACZwA +FAdjAAAIfgAACD4AAAncABIHGwAACG4AAAguAAAJvAAACA4AAAiOAAAITgAACfwA +YAcAAAAIUQAACBEAFQiDABIHHwAACHEAAAgxAAAJwgAQBwoAAAhhAAAIIQAACaIA +AAgBAAAIgQAACEEAAAniABAHBgAACFkAAAgZAAAJkgATBzsAAAh5AAAIOQAACdIA +EQcRAAAIaQAACCkAAAmyAAAICQAACIkAAAhJAAAJ8gAQBwQAAAhVAAAIFQAQCAIB +EwcrAAAIdQAACDUAAAnKABEHDQAACGUAAAglAAAJqgAACAUAAAiFAAAIRQAACeoA +EAcIAAAIXQAACB0AAAmaABQHUwAACH0AAAg9AAAJ2gASBxcAAAhtAAAILQAACboA +AAgNAAAIjQAACE0AAAn6ABAHAwAACFMAAAgTABUIwwATByMAAAhzAAAIMwAACcYA +EQcLAAAIYwAACCMAAAmmAAAIAwAACIMAAAhDAAAJ5gAQBwcAAAhbAAAIGwAACZYA +FAdDAAAIewAACDsAAAnWABIHEwAACGsAAAgrAAAJtgAACAsAAAiLAAAISwAACfYA +EAcFAAAIVwAACBcAQAgAABMHMwAACHcAAAg3AAAJzgARBw8AAAhnAAAIJwAACa4A +AAgHAAAIhwAACEcAAAnuABAHCQAACF8AAAgfAAAJngAUB2MAAAh/AAAIPwAACd4A +EgcbAAAIbwAACC8AAAm+AAAIDwAACI8AAAhPAAAJ/gBgBwAAAAhQAAAIEAAUCHMA +EgcfAAAIcAAACDAAAAnBABAHCgAACGAAAAggAAAJoQAACAAAAAiAAAAIQAAACeEA +EAcGAAAIWAAACBgAAAmRABMHOwAACHgAAAg4AAAJ0QARBxEAAAhoAAAIKAAACbEA +AAgIAAAIiAAACEgAAAnxABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACckA +EQcNAAAIZAAACCQAAAmpAAAIBAAACIQAAAhEAAAJ6QAQBwgAAAhcAAAIHAAACZkA +FAdTAAAIfAAACDwAAAnZABIHFwAACGwAAAgsAAAJuQAACAwAAAiMAAAITAAACfkA +EAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxQARBwsAAAhiAAAIIgAACaUA +AAgCAAAIggAACEIAAAnlABAHBwAACFoAAAgaAAAJlQAUB0MAAAh6AAAIOgAACdUA +EgcTAAAIagAACCoAAAm1AAAICgAACIoAAAhKAAAJ9QAQBwUAAAhWAAAIFgBACAAA +EwczAAAIdgAACDYAAAnNABEHDwAACGYAAAgmAAAJrQAACAYAAAiGAAAIRgAACe0A +EAcJAAAIXgAACB4AAAmdABQHYwAACH4AAAg+AAAJ3QASBxsAAAhuAAAILgAACb0A +AAgOAAAIjgAACE4AAAn9AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcMA +EAcKAAAIYQAACCEAAAmjAAAIAQAACIEAAAhBAAAJ4wAQBwYAAAhZAAAIGQAACZMA +Ewc7AAAIeQAACDkAAAnTABEHEQAACGkAAAgpAAAJswAACAkAAAiJAAAISQAACfMA +EAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJywARBw0AAAhlAAAIJQAACasA +AAgFAAAIhQAACEUAAAnrABAHCAAACF0AAAgdAAAJmwAUB1MAAAh9AAAIPQAACdsA +EgcXAAAIbQAACC0AAAm7AAAIDQAACI0AAAhNAAAJ+wAQBwMAAAhTAAAIEwAVCMMA +EwcjAAAIcwAACDMAAAnHABEHCwAACGMAAAgjAAAJpwAACAMAAAiDAAAIQwAACecA +EAcHAAAIWwAACBsAAAmXABQHQwAACHsAAAg7AAAJ1wASBxMAAAhrAAAIKwAACbcA +AAgLAAAIiwAACEsAAAn3ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc8A +EQcPAAAIZwAACCcAAAmvAAAIBwAACIcAAAhHAAAJ7wAQBwkAAAhfAAAIHwAACZ8A +FAdjAAAIfwAACD8AAAnfABIHGwAACG8AAAgvAAAJvwAACA8AAAiPAAAITwAACf8A +EAUBABcFAQETBREAGwUBEBEFBQAZBQEEFQVBAB0FAUAQBQMAGAUBAhQFIQAcBQEg +EgUJABoFAQgWBYEAQAUAABAFAgAXBYEBEwUZABsFARgRBQcAGQUBBhUFYQAdBQFg +EAUEABgFAQMUBTEAHAUBMBIFDQAaBQEMFgXBAEAFAAAQABEAEgAAAAgABwAJAAYA +CgAFAAsABAAMAAMADQACAA4AAQAPAAAAYAcAAAAIUAAACBAAFAhzABIHHwAACHAA +AAgwAAAJwAAQBwoAAAhgAAAIIAAACaAAAAgAAAAIgAAACEAAAAngABAHBgAACFgA +AAgYAAAJkAATBzsAAAh4AAAIOAAACdAAEQcRAAAIaAAACCgAAAmwAAAICAAACIgA +AAhIAAAJ8AAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnIABEHDQAACGQA +AAgkAAAJqAAACAQAAAiEAAAIRAAACegAEAcIAAAIXAAACBwAAAmYABQHUwAACHwA +AAg8AAAJ2AASBxcAAAhsAAAILAAACbgAAAgMAAAIjAAACEwAAAn4ABAHAwAACFIA +AAgSABUIowATByMAAAhyAAAIMgAACcQAEQcLAAAIYgAACCIAAAmkAAAIAgAACIIA +AAhCAAAJ5AAQBwcAAAhaAAAIGgAACZQAFAdDAAAIegAACDoAAAnUABIHEwAACGoA +AAgqAAAJtAAACAoAAAiKAAAISgAACfQAEAcFAAAIVgAACBYAQAgAABMHMwAACHYA +AAg2AAAJzAARBw8AAAhmAAAIJgAACawAAAgGAAAIhgAACEYAAAnsABAHCQAACF4A +AAgeAAAJnAAUB2MAAAh+AAAIPgAACdwAEgcbAAAIbgAACC4AAAm8AAAIDgAACI4A +AAhOAAAJ/ABgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnCABAHCgAACGEA +AAghAAAJogAACAEAAAiBAAAIQQAACeIAEAcGAAAIWQAACBkAAAmSABMHOwAACHkA +AAg5AAAJ0gARBxEAAAhpAAAIKQAACbIAAAgJAAAIiQAACEkAAAnyABAHBAAACFUA +AAgVABAIAgETBysAAAh1AAAINQAACcoAEQcNAAAIZQAACCUAAAmqAAAIBQAACIUA +AAhFAAAJ6gAQBwgAAAhdAAAIHQAACZoAFAdTAAAIfQAACD0AAAnaABIHFwAACG0A +AAgtAAAJugAACA0AAAiNAAAITQAACfoAEAcDAAAIUwAACBMAFQjDABMHIwAACHMA +AAgzAAAJxgARBwsAAAhjAAAIIwAACaYAAAgDAAAIgwAACEMAAAnmABAHBwAACFsA +AAgbAAAJlgAUB0MAAAh7AAAIOwAACdYAEgcTAAAIawAACCsAAAm2AAAICwAACIsA +AAhLAAAJ9gAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnOABEHDwAACGcA +AAgnAAAJrgAACAcAAAiHAAAIRwAACe4AEAcJAAAIXwAACB8AAAmeABQHYwAACH8A +AAg/AAAJ3gASBxsAAAhvAAAILwAACb4AAAgPAAAIjwAACE8AAAn+AGAHAAAACFAA +AAgQABQIcwASBx8AAAhwAAAIMAAACcEAEAcKAAAIYAAACCAAAAmhAAAIAAAACIAA +AAhAAAAJ4QAQBwYAAAhYAAAIGAAACZEAEwc7AAAIeAAACDgAAAnRABEHEQAACGgA +AAgoAAAJsQAACAgAAAiIAAAISAAACfEAEAcEAAAIVAAACBQAFQjjABMHKwAACHQA +AAg0AAAJyQARBw0AAAhkAAAIJAAACakAAAgEAAAIhAAACEQAAAnpABAHCAAACFwA +AAgcAAAJmQAUB1MAAAh8AAAIPAAACdkAEgcXAAAIbAAACCwAAAm5AAAIDAAACIwA +AAhMAAAJ+QAQBwMAAAhSAAAIEgAVCKMAEwcjAAAIcgAACDIAAAnFABEHCwAACGIA +AAgiAAAJpQAACAIAAAiCAAAIQgAACeUAEAcHAAAIWgAACBoAAAmVABQHQwAACHoA +AAg6AAAJ1QASBxMAAAhqAAAIKgAACbUAAAgKAAAIigAACEoAAAn1ABAHBQAACFYA +AAgWAEAIAAATBzMAAAh2AAAINgAACc0AEQcPAAAIZgAACCYAAAmtAAAIBgAACIYA +AAhGAAAJ7QAQBwkAAAheAAAIHgAACZ0AFAdjAAAIfgAACD4AAAndABIHGwAACG4A +AAguAAAJvQAACA4AAAiOAAAITgAACf0AYAcAAAAIUQAACBEAFQiDABIHHwAACHEA +AAgxAAAJwwAQBwoAAAhhAAAIIQAACaMAAAgBAAAIgQAACEEAAAnjABAHBgAACFkA +AAgZAAAJkwATBzsAAAh5AAAIOQAACdMAEQcRAAAIaQAACCkAAAmzAAAICQAACIkA +AAhJAAAJ8wAQBwQAAAhVAAAIFQAQCAIBEwcrAAAIdQAACDUAAAnLABEHDQAACGUA +AAglAAAJqwAACAUAAAiFAAAIRQAACesAEAcIAAAIXQAACB0AAAmbABQHUwAACH0A +AAg9AAAJ2wASBxcAAAhtAAAILQAACbsAAAgNAAAIjQAACE0AAAn7ABAHAwAACFMA +AAgTABUIwwATByMAAAhzAAAIMwAACccAEQcLAAAIYwAACCMAAAmnAAAIAwAACIMA +AAhDAAAJ5wAQBwcAAAhbAAAIGwAACZcAFAdDAAAIewAACDsAAAnXABIHEwAACGsA +AAgrAAAJtwAACAsAAAiLAAAISwAACfcAEAcFAAAIVwAACBcAQAgAABMHMwAACHcA +AAg3AAAJzwARBw8AAAhnAAAIJwAACa8AAAgHAAAIhwAACEcAAAnvABAHCQAACF8A +AAgfAAAJnwAUB2MAAAh/AAAIPwAACd8AEgcbAAAIbwAACC8AAAm/AAAIDwAACI8A +AAhPAAAJ/wAQBQEAFwUBARMFEQAbBQEQEQUFABkFAQQVBUEAHQUBQBAFAwAYBQEC +FAUhABwFASASBQkAGgUBCBYFgQBABQAAEAUCABcFgQETBRkAGwUBGBEFBwAZBQEG +FQVhAB0FAWAQBQQAGAUBAxQFMQAcBQEwEgUNABoFAQwWBcEAQAUAABAAEQASAAAA +CAAHAAkABgAKAAUACwAEAAwAAwANAAIADgABAA8AAAAgaW5mbGF0ZSAxLjIuMyBD +b3B5cmlnaHQgMTk5NS0yMDA1IE1hcmsgQWRsZXIgAAADAAQABQAGAAcACAAJAAoA +CwANAA8AEQATABcAGwAfACMAKwAzADsAQwBTAGMAcwCDAKMAwwDjAAIBAAAAAAAA +EAAQABAAEAAQABAAEAAQABEAEQARABEAEgASABIAEgATABMAEwATABQAFAAUABQA +FQAVABUAFQAQAMkAxAAAAAEAAgADAAQABQAHAAkADQARABkAIQAxAEEAYQCBAMEA +AQGBAQECAQMBBAEGAQgBDAEQARgBIAEwAUABYAAAAAAQABAAEAAQABEAEQASABIA +EwATABQAFAAVABUAFgAWABcAFwAYABgAGQAZABoAGgAbABsAHAAcAB0AHQBAAEAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAA +AgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAAEAAAABAAAAAQAAAAEAAAA +BQAAAAUAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAA +AgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAA +CAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAIAAAADAAAABwAAABAREgAIBwkGCgULBAwDDQIOAQ8A +DAAIAIwACABMAAgAzAAIACwACACsAAgAbAAIAOwACAAcAAgAnAAIAFwACADcAAgA +PAAIALwACAB8AAgA/AAIAAIACACCAAgAQgAIAMIACAAiAAgAogAIAGIACADiAAgA +EgAIAJIACABSAAgA0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgA +KgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgA +BgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgA +NgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgA +HgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgA +IQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgA +CQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgA +OQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgA +FQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgA +LQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgA +EwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJANMBCQAzAAkAMwEJALMACQCzAQkA +cwAJAHMBCQDzAAkA8wEJAAsACQALAQkAiwAJAIsBCQBLAAkASwEJAMsACQDLAQkA +KwAJACsBCQCrAAkAqwEJAGsACQBrAQkA6wAJAOsBCQAbAAkAGwEJAJsACQCbAQkA +WwAJAFsBCQDbAAkA2wEJADsACQA7AQkAuwAJALsBCQB7AAkAewEJAPsACQD7AQkA +BwAJAAcBCQCHAAkAhwEJAEcACQBHAQkAxwAJAMcBCQAnAAkAJwEJAKcACQCnAQkA +ZwAJAGcBCQDnAAkA5wEJABcACQAXAQkAlwAJAJcBCQBXAAkAVwEJANcACQDXAQkA +NwAJADcBCQC3AAkAtwEJAHcACQB3AQkA9wAJAPcBCQAPAAkADwEJAI8ACQCPAQkA +TwAJAE8BCQDPAAkAzwEJAC8ACQAvAQkArwAJAK8BCQBvAAkAbwEJAO8ACQDvAQkA +HwAJAB8BCQCfAAkAnwEJAF8ACQBfAQkA3wAJAN8BCQA/AAkAPwEJAL8ACQC/AQkA +fwAJAH8BCQD/AAkA/wEJAAAABwBAAAcAIAAHAGAABwAQAAcAUAAHADAABwBwAAcA +CAAHAEgABwAoAAcAaAAHABgABwBYAAcAOAAHAHgABwAEAAcARAAHACQABwBkAAcA +FAAHAFQABwA0AAcAdAAHAAMACACDAAgAQwAIAMMACAAjAAgAowAIAGMACADjAAgA +AAAFABAABQAIAAUAGAAFAAQABQAUAAUADAAFABwABQACAAUAEgAFAAoABQAaAAUA +BgAFABYABQAOAAUAHgAFAAEABQARAAUACQAFABkABQAFAAUAFQAFAA0ABQAdAAUA +AwAFABMABQALAAUAGwAFAAcABQAXAAUAAAECAwQEBQUGBgYGBwcHBwgICAgICAgI +CQkJCQkJCQkKCgoKCgoKCgoKCgoKCgoKCwsLCwsLCwsLCwsLCwsLCwwMDAwMDAwM +DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N +DQ0NDQ0NDQ0ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4O +Dg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8P +Dw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwAAEBESEhMT +FBQUFBUVFRUWFhYWFhYWFhcXFxcXFxcXGBgYGBgYGBgYGBgYGBgYGBkZGRkZGRkZ +GRkZGRkZGRkaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhsbGxsbGxsb +GxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwc +HBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB0dHR0dHR0d +HR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0d +HR0dHR0dHR0AAQIDBAUGBwgICQkKCgsLDAwMDA0NDQ0ODg4ODw8PDxAQEBAQEBAQ +ERERERERERESEhISEhISEhMTExMTExMTFBQUFBQUFBQUFBQUFBQUFBUVFRUVFRUV +FRUVFRUVFRUWFhYWFhYWFhYWFhYWFhYWFxcXFxcXFxcXFxcXFxcXFxgYGBgYGBgY +GBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZ +GRkZGRkZGRkaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhsbGxsbGxsb +GxsbGxsbGxsbGxsbGxsbGxsbGxsbGxscAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAA +BgAAAAcAAAAIAAAACgAAAAwAAAAOAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAA +MAAAADgAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAAAAAAAAAAAA +AAAAAAEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAA +QAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAA +ABAAAAAYAAAAIAAAADAAAABAAAAAYAAAVPAAEEjwABAD7gAQPPAAECzwABAg8AAQ +DPAAEPzvABDk7wAQA+4AEDogAAA8ZmQ6JWQ+ACVjJWMlYyVjJWMlYyVjJWMlYyVj +AAAAAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAAAAaW52YWxpZCBkaXN0 +YW5jZSBjb2RlAAAAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQg +ZGlzdGFuY2VzIHNldAAAAGludmFsaWQgbGl0ZXJhbC9sZW5ndGhzIHNldABpbnZh +bGlkIGJpdCBsZW5ndGggcmVwZWF0AAAAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0 +AAAAAHRvbyBtYW55IGxlbmd0aCBvciBkaXN0YW5jZSBzeW1ib2xzAGludmFsaWQg +c3RvcmVkIGJsb2NrIGxlbmd0aHMAAAAAaW52YWxpZCBibG9jayB0eXBlAABpbmNv +cnJlY3QgbGVuZ3RoIGNoZWNrAABpbmNvcnJlY3QgZGF0YSBjaGVjawAAAABoZWFk +ZXIgY3JjIG1pc21hdGNoAHVua25vd24gaGVhZGVyIGZsYWdzIHNldAAAAABpbnZh +bGlkIHdpbmRvdyBzaXplAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAABpbmNv +cnJlY3QgaGVhZGVyIGNoZWNrAABpbmNvbXBhdGlibGUgdmVyc2lvbgAAAABidWZm +ZXIgZXJyb3IAAAAAaW5zdWZmaWNpZW50IG1lbW9yeQBkYXRhIGVycm9yAABzdHJl +YW0gZXJyb3IAAAAAZmlsZSBlcnJvcgAAc3RyZWFtIGVuZAAAbmVlZCBkaWN0aW9u +YXJ5AKjwAAAAAAAAAAAAAJ7xAAAIsAAAoPAAAAAAAAAAAAAA4vEAAACwAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAMbxAAAAAAAACvEAABLxAAAc8QAAKPEAADLxAAA88QAA +RPEAAEzxAABW8QAAAPEAAG7xAAB28QAAfvEAAIjxAACU8QAAqvEAALbxAABk8QAA ++PAAAAAAAABZAmZwdXRjALICc3ByaW50ZgBeAmZyZWUAAJECbWFsbG9jAAC8AnN0 +cmVycm9yAABPAmZmbHVzaAAAyABfZXJybm8AAFcCZm9wZW4AXQJmcmVhZABYAmZw +cmludGYA4QFfdnNucHJpbnRmAABmAmZ3cml0ZQAAZAJmdGVsbABiAmZzZWVrAEwC +ZmNsb3NlAABCAmNsZWFyZXJyAADXAF9mZG9wZW4ATVNWQ1JULmRsbAAADwFfaW5p +dHRlcm0AnQBfYWRqdXN0X2ZkaXYAAF0ARGlzYWJsZVRocmVhZExpYnJhcnlDYWxs +cwBLRVJORUwzMi5kbGwAAAAAAADZHd5CAAAAABb0AAABAAAAMwAAADMAAAAY8gAA +5PIAALDzAAAAEAAAEBMAAFASAAAwEwAAYBMAAHAcAACAGwAAgCUAALAkAACQFgAA +YBYAAKAaAABgGgAA4BkAANAYAABQEwAAEEUAAKBDAAAwNwAAAEMAAPBDAACgQAAA +ED0AAJA9AAAQNwAA4D4AAGA/AACQPwAAYDoAAIBCAADgQAAAcDcAAOBCAABAPQAA +8D0AAKBXAAAgRgAA0FQAAEBFAABAcAAAgG0AAHBVAABAVgAAEFUAANBtAAAQbwAA +EHAAAICQAACgkQAAkJEAAICRAAAg9AAAKPQAADH0AAA79AAASfQAAE/0AABX9AAA +ZPQAAHD0AAB79AAAifQAAJb0AACk9AAAsfQAAL70AADT9AAA4fQAAOz0AAD09AAA +/PQAAAL1AAAK9QAAEvUAABn1AAAg9QAAJ/UAADD1AAA39QAAPvUAAEX1AABO9QAA +VfUAAGH1AABo9QAAcfUAAHn1AACB9QAAjfUAAJz1AACt9QAAufUAAMT1AADS9QAA +3/UAAOz1AAAB9gAADfYAAB72AAAp9gAAMPYAAEH2AAAAAAEAAgADAAQABQAGAAcA +CAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8A +IAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgB6bGliMS5kbGwA +YWRsZXIzMgBjb21wcmVzcwBjb21wcmVzczIAY29tcHJlc3NCb3VuZABjcmMzMgBk +ZWZsYXRlAGRlZmxhdGVCb3VuZABkZWZsYXRlQ29weQBkZWZsYXRlRW5kAGRlZmxh +dGVJbml0Ml8AZGVmbGF0ZUluaXRfAGRlZmxhdGVQYXJhbXMAZGVmbGF0ZVByaW1l +AGRlZmxhdGVSZXNldABkZWZsYXRlU2V0RGljdGlvbmFyeQBnZXRfY3JjX3RhYmxl +AGd6Y2xlYXJlcnIAZ3pjbG9zZQBnemRvcGVuAGd6ZW9mAGd6ZXJyb3IAZ3pmbHVz +aABnemdldGMAZ3pnZXRzAGd6b3BlbgBnenByaW50ZgBnenB1dGMAZ3pwdXRzAGd6 +cmVhZABnenJld2luZABnenNlZWsAZ3pzZXRwYXJhbXMAZ3p0ZWxsAGd6dW5nZXRj +AGd6d3JpdGUAaW5mbGF0ZQBpbmZsYXRlQmFjawBpbmZsYXRlQmFja0VuZABpbmZs +YXRlQmFja0luaXRfAGluZmxhdGVDb3B5AGluZmxhdGVFbmQAaW5mbGF0ZUluaXQy +XwBpbmZsYXRlSW5pdF8AaW5mbGF0ZVJlc2V0AGluZmxhdGVTZXREaWN0aW9uYXJ5 +AGluZmxhdGVTeW5jAGluZmxhdGVTeW5jUG9pbnQAdW5jb21wcmVzcwB6RXJyb3IA +emxpYkNvbXBpbGVGbGFncwB6bGliVmVyc2lvbgAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AQAAAPDkABCg4wAQAQEAAB4BAAAPAAAAcOkAEBjkABAAAAAAHgAAAA8AAAAAAAAA +kOQAEAAAAAATAAAABwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAQAAAAGAAAgAAAAAAAAAAA +AAAAAAAAAQABAAAAMAAAgAAAAAAAAAAAAAAAAAAAAQAJBAAASAAAAGAQAQA4AwAA +AAAAAAAAAAAAAAAAAAAAADgDNAAAAFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4A +RgBPAAAAAAC9BO/+AAABAAIAAQAAAAMAAgABAAAAAwA/AAAAAAAAAAQAAQACAAAA +AAAAAAAAAAAAAAAAlgIAAAEAUwB0AHIAaQBuAGcARgBpAGwAZQBJAG4AZgBvAAAA +cgIAAAEAMAA0ADAAOQAwADQARQA0AAAAZAAeAAEARgBpAGwAZQBEAGUAcwBjAHIA +aQBwAHQAaQBvAG4AAAAAAHoAbABpAGIAIABkAGEAdABhACAAYwBvAG0AcAByAGUA +cwBzAGkAbwBuACAAbABpAGIAcgBhAHIAeQAAACwABgABAEYAaQBsAGUAVgBlAHIA +cwBpAG8AbgAAAAAAMQAuADIALgAzAAAANAAKAAEASQBuAHQAZQByAG4AYQBsAE4A +YQBtAGUAAAB6AGwAaQBiADEALgBkAGwAbAAAAHwALAABAEwAZQBnAGEAbABDAG8A +cAB5AHIAaQBnAGgAdAAAACgAQwApACAAMQA5ADkANQAtADIAMAAwADQAIABKAGUA +YQBuAC0AbABvAHUAcAAgAEcAYQBpAGwAbAB5ACAAJgAgAE0AYQByAGsAIABBAGQA +bABlAHIAAAA8AAoAAQBPAHIAaQBnAGkAbgBhAGwARgBpAGwAZQBuAGEAbQBlAAAA +egBsAGkAYgAxAC4AZABsAGwAAAAqAAUAAQBQAHIAbwBkAHUAYwB0AE4AYQBtAGUA +AAAAAHoAbABpAGIAAAAAADAABgABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8A +bgAAADEALgAyAC4AMwAAAIIANQABAEMAbwBtAG0AZQBuAHQAcwAAAEQATABMACAA +cwB1AHAAcABvAHIAdAAgAGIAeQAgAEEAbABlAHMAcwBhAG4AZAByAG8AIABJAGEA +YwBvAHAAZQB0AHQAaQAgACYAIABHAGkAbABsAGUAcwAgAFYAbwBsAGwAYQBuAHQA +AAAAAEQAAAABAFYAYQByAEYAaQBsAGUASQBuAGYAbwAAAAAAJAAEAAAAVAByAGEA +bgBzAGwAYQB0AGkAbwBuAAAAAAAJBOQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAbAAAAGcyUTOkM84z +2DPqM/szDDQZNCs0PTRRNFs0bTR+NJI0nDSuNMA02TTnNPM0AzUUNR41LDVCNVM1 +YDVyNYM1mTWjNbE1wjXpNfk1BzYVNj821DbjNqE4/joHOzA7PTtKO1c72DwAIAAA +IAAAAMkyCDOZNHE3fjeLN5g3zzf6PI49sj3BPQAwAABIAAAA8zDFMekx+DECNV01 +ATYcNkc2TjZ0No42lza9NsQ26TZJN1A3mjf0Nw84aziNOMY5AToOOgA7Nju0PCE+ +Dj/5PwBAAABMAAAAvjA7McMxAzLJMjMzBDQYNCY0LzRONGA0kTSiNMo00zQvNY81 +njUDNhE2kzaaNio3ezcROAM6RzqYOss94T33PT4+3T4AUAAAQAAAAMwwzTKFM5A0 +lDSYNJw0oDSkNKg0wDTENMg0zDSrNbo1YzZxNic4/jgrOXM5tznMOUs+ez/MPwAA +AGAAAGgAAAA3MJEx1zEuMj4yxzTXNOs0ODURN6k4MTkBO2M7+Dz8PAA9BD0IPQw9 +ED0UPRg9HD0gPSQ9KD0sPTA9ND04PTw9QD1EPUg9TD1QPVQ9WD1cPWA9ZD1oPWw9 +cD10PXg9AAAAcAAAGAAAAFszYzN5M4czhjaWNqA2AAAAgAAAIAAAAPMy3DTiOec5 +3jqIO5s7ITwvPNQ84zwAAACQAAAsAAAAuzDLMIExrDHMMecx4Do9O0k7/z1XPuA+ +BD+nP8M/0z/yPwAAAKAAADgAAABAMKUwrTCzML4wyzDTMOEw5jDrMPAw+zAIMRIx +JzEzMTkxWzFtMckx5jHzMQAyAAAA0AAAHAAAAKAwrDC4MMQw0DDcMOgw9DAAMQwx +AOAAABwAAADYPdw94D3kPeg97D3wPfQ9+D38PQAAAQAUAAAAFDAYMCgwLDBAMAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +} +} \ No newline at end of file diff --git a/src/Utils/UILogToScript/und/copyinfo b/src/Utils/UILogToScript/und/copyinfo new file mode 100644 index 00000000..ae033475 --- /dev/null +++ b/src/Utils/UILogToScript/und/copyinfo @@ -0,0 +1,66 @@ +{4, +{9, +{12f65fa1-7e15-400a-8c44-b82b33aecd38,12f65fa1-7e15-400a-8c44-b82b33aecd38,1, +{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"MainProcedureName"} +}, +{6344d70f-6d22-465c-b456-63013e6bc378,6344d70f-6d22-465c-b456-63013e6bc378,1, +{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"ПреобразованиеЖурналаДействийПользователя"} +}, +{6660de3e-89b7-4bca-af70-d32b6032fb9d,6660de3e-89b7-4bca-af70-d32b6032fb9d,1, +{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"ObjectSearch"} +}, +{6e0161b1-e831-4142-a631-88f3086e3712,6e0161b1-e831-4142-a631-88f3086e3712,1, +{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"GetFullHierarchy"} +}, +{9fd05663-44d9-4da2-a3fd-c2b908dfa029,9fd05663-44d9-4da2-a3fd-c2b908dfa029,1, +{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"SplitScriptIntoProcedures"} +}, +{a279c684-5737-425e-9c57-6acbaf6562d0,a279c684-5737-425e-9c57-6acbaf6562d0,1, +{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"GenerateClientConnectionScript"} +}, +{adfd948b-4804-4f26-9f93-cb3f704b8dc0,adfd948b-4804-4f26-9f93-cb3f704b8dc0,1, +{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"DefaultForm"} +}, +{c42244c7-9637-4401-b886-46a5bf0fdc45,c42244c7-9637-4401-b886-46a5bf0fdc45,1, +{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"ScriptVariant"} +}, +{fe21d66e-455d-4720-9717-d5cd14c68919,fe21d66e-455d-4720-9717-d5cd14c68919,1, +{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,"ConversionVariant"} +} +}, +{1, +{d2dcbcfb-d38e-4fa3-996c-ad9a927c7fab,6344d70f-6d22-465c-b456-63013e6bc378,0} +}, +{7, +{ +{0,12f65fa1-7e15-400a-8c44-b82b33aecd38},d2dcbcfb-d38e-4fa3-996c-ad9a927c7fab, +{-1} +}, +{ +{0,6660de3e-89b7-4bca-af70-d32b6032fb9d},d2dcbcfb-d38e-4fa3-996c-ad9a927c7fab, +{-1} +}, +{ +{0,6e0161b1-e831-4142-a631-88f3086e3712},d2dcbcfb-d38e-4fa3-996c-ad9a927c7fab, +{-1} +}, +{ +{0,9fd05663-44d9-4da2-a3fd-c2b908dfa029},d2dcbcfb-d38e-4fa3-996c-ad9a927c7fab, +{-1} +}, +{ +{0,a279c684-5737-425e-9c57-6acbaf6562d0},d2dcbcfb-d38e-4fa3-996c-ad9a927c7fab, +{-1} +}, +{ +{0,c42244c7-9637-4401-b886-46a5bf0fdc45},d2dcbcfb-d38e-4fa3-996c-ad9a927c7fab, +{-1} +}, +{ +{0,fe21d66e-455d-4720-9717-d5cd14c68919},d2dcbcfb-d38e-4fa3-996c-ad9a927c7fab, +{-1} +} +}, +{0,0}, +{0} +} \ No newline at end of file diff --git a/src/Utils/UILogToScript/und/root b/src/Utils/UILogToScript/und/root new file mode 100644 index 00000000..7c14b441 --- /dev/null +++ b/src/Utils/UILogToScript/und/root @@ -0,0 +1 @@ +{2,9e7b2a13-3bf6-401a-be4a-0dbf0d48a43b,} \ No newline at end of file diff --git a/src/Utils/UILogToScript/und/version b/src/Utils/UILogToScript/und/version new file mode 100644 index 00000000..c23bfe28 --- /dev/null +++ b/src/Utils/UILogToScript/und/version @@ -0,0 +1,3 @@ +{ +{216,0} +} \ No newline at end of file diff --git a/src/Utils/UILogToScript/und/versions b/src/Utils/UILogToScript/und/versions new file mode 100644 index 00000000..7d0f6657 --- /dev/null +++ b/src/Utils/UILogToScript/und/versions @@ -0,0 +1 @@ +{1,17,"",1a37fe51-1578-4110-9503-099db6deabaa,"0b790809-ec18-47a5-9ea4-f803fe85b870",b966b557-69ea-4d81-a80c-00b3e9a826fc,"0b790809-ec18-47a5-9ea4-f803fe85b870.0",da1229af-fccc-4d83-ba9a-91123e493881,"6344d70f-6d22-465c-b456-63013e6bc378.0",38512f6f-2e9d-4b81-8433-b50d89fb06d3,"6344d70f-6d22-465c-b456-63013e6bc378.1",d7674794-66aa-4c2b-b135-3dfcc8e5f2dc,"6810777b-4151-4eba-b50d-4a2a08b5be5a",e0611e5c-3506-4d42-bea9-8e5a8be08f1b,"6810777b-4151-4eba-b50d-4a2a08b5be5a.0",2a2860ed-92f3-4765-9d9e-fa27fe63b3d5,"9e7b2a13-3bf6-401a-be4a-0dbf0d48a43b",96606142-684e-48f6-938b-e9031fbea47b,"adfd948b-4804-4f26-9f93-cb3f704b8dc0",0dfe5c6e-daae-44ae-9813-68dd4051f485,"adfd948b-4804-4f26-9f93-cb3f704b8dc0.0",78d567d7-6f0e-4349-ad0b-d8a2f94647ef,"adfd948b-4804-4f26-9f93-cb3f704b8dc0.1",e3e6a193-4a1e-4155-bcd4-71949070c69f,"b6e7785c-aad2-4c34-8c75-d98a7963dbaf",481f19f9-5712-4870-9a1a-e57ad56aa043,"b6e7785c-aad2-4c34-8c75-d98a7963dbaf.0",da038199-9e29-4e3e-8004-72c51196776e,"copyinfo",ed2e21bf-4311-4cb2-95ad-642370d4c493,"root",492ee880-2903-4e70-b501-891283c468ef,"version",41a2fce2-58a2-4ef4-894b-b69ecccb12b4,"versions",895e3342-501f-4d44-b158-06fd5c73510e} \ No newline at end of file diff --git "a/src/Utils/UILogToScript/\320\234\320\260\320\272\320\265\321\202\321\213/UnpackV8.txt" "b/src/Utils/UILogToScript/\320\234\320\260\320\272\320\265\321\202\321\213/UnpackV8.txt" new file mode 100644 index 00000000..91178556 --- /dev/null +++ "b/src/Utils/UILogToScript/\320\234\320\260\320\272\320\265\321\202\321\213/UnpackV8.txt" @@ -0,0 +1,1368 @@ +{1, +{#base64:TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAA2AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5v +dCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAADecsL/mhOsrJoTrKyaE6ys +cgymrM8TrKwZD6KsiROsrJ8f8ayZE6ysmhOtrNwTrKz4DL+smBOsrHIMp6yLE6ys +UmljaJoTrKwAAAAAAAAAAAAAAAAAAAAAUEUAAEwBAwBR4vBHAAAAAAAAAADgAA8B +CwEGAACwAAAAUAAAAAAAADlWAAAAEAAAAMAAAAAAQAAAEAAAABAAAAQAAAAAAAAA +BAAAAAAAAAAAEAEAABAAAAAAAAADAAAAAAAQAAAQAAAAABAAABAAAAAAAAAQAAAA +AAAAAAAAAABwywAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AMAAABgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAudGV4dAAAAKauAAAAEAAA +ALAAAAAQAAAAAAAAAAAAAAAAAAAgAABgLnJkYXRhAAB6EQAAAMAAAAAgAAAAwAAA +AAAAAAAAAAAAAAAAQAAAQC5kYXRhAAAAmCkAAADgAAAAIAAAAOAAAAAAAAAAAAAA +AAAAAEAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAIoN+PVAALABhMh1CArIiA349UAA6QcAAACQkJCQkJCQ +aDAQQADoEzMAAFnDkJCQkMOQkJCQkJCQkJCQkJCQkJCLwTPJxwAYwUAAiUgUiUgc +xkAgAcOQkJCQkJCQkJCQkFaL8egYAAAA9kQkCAF0CVboXy0AAIPEBIvGXsIEAJCQ +Vovxi0YUxwYYwUAAhcB0CVDoPi0AAIPEBItGHIXAdB2LSPyNcPxowBBAAFFqOFDo +yjIAAFboGi0AAIPEBF7DkFaL8YsGhcB0CVDoBS0AAIPEBItGCIXAdAlQ6PUsAACD +xASNThDolv///17DkJCQkItEJARTVldoVOBAAIvZUOjkMwAAi/CDxAiF9nULX164 +uf///1vCCACLTCQUaFDgQABR6MEzAACL+IPECIX/dRRW6DwzAACDxAS4uP///19e +W8IIAFdWi8vo8wEAAFaL2OgdMwAAV+gXMwAAg8QIg/v9dQtfXri3////W8IIAIvD +X/fYG8BeJLpbwggAkJCQkItEJARTVldoVOBAAIvZUOhUMwAAi/CDxAiF9nULX164 +zf///1vCCACLTCQUaFDgQABR6DEzAACL+IPECIX/dRRW6KwyAACDxAS4zP///19e +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 +yf8zwPKu99FJi9mLyjvTcgKLy79M5kAAi/UzwPOmdAUbwIPY/4XAdRE703INO9MP +lcCFwA+E1QAAAGiw6UAAaIjgQADomRgAAGiw6UAAaAjmQADoihgAAGiw6UAAaIjg +QADoexgAAGiw6UAAaNDlQADobBgAAGiw6UAAaIjgQADoXRgAAGiw6UAAaMTlQADo +ThgAAGiw6UAAaJTlQADoPxgAAGiw6UAAaGDlQADoMBgAAIPEQGiw6UAAaCzlQADo +HhgAAGiw6UAAaPjkQADoDxgAAGiw6UAAaOjkQADoABgAAGiw6UAAaODkQADo8RcA +AGiw6UAAaLDkQADo4hcAAGiw6UAAaHzkQADp0AAAAGiw6UAAaIjgQADoxBcAAGiw +6UAAaIjgQADotRcAAGiw6UAAaHTkQADophcAAGiw6UAAaDDkQADolxcAAGiw6UAA +aNjjQADoiBcAAGiw6UAAaITjQADoeRcAAGiw6UAAaIjgQADoahcAAGiw6UAAaIjg +QADoWxcAAIPEQGiw6UAAaHzjQADoSRcAAGiw6UAAaCDjQADoOhcAAGiw6UAAaMzi +QADoKxcAAGiw6UAAaITiQADoHBcAAGiw6UAAaIjgQADoDRcAAGiw6UAAaIjgQADo +/hYAAItMJESDxDCFyQ+ENgIAAIpB/4TAdB48/3Qa/shfXohB/10zwFuLTCRYZIkN +AAAAAIPEZMNJUehFBgAAg8QEM8BfXl1bi0wkWGSJDQAAAACDxGTDjUwkIOiQ2P// +i1MMi0MIagBSUI1MJCzGRCR8Bug48v//i/DGRCRwAI1MJCDrS0lR6PgFAACDxASL +xl9eXVuLTCRYZIkNAAAAAIPEZMONTCQg6EPY//+LSwyLUwhqAFFSjUwkLMZEJHwF +6Ovr//+L8MZEJHAAjUwkIOhb2P//i0wkFIXJdLKKQf+EwHShPP90nf7IX4hB/4vG +Xl1bi0wkWGSJDQAAAACDxGTDjUwkIOjl1///i0MMi0sIUFGNTCQoxkQkeATo7+f/ +/41MJCCL8MZEJHAA6P/X//+LTCQUhckPhFL///+KQf+EwA+EPf///zz/D4Q1//// +65aNTCRE6JXX//+LUxCLQwyLSwhqAVJQUY1MJFTGhCSAAAAAA+g24v//jUwkRIvw +xkQkcADoptf//2oBjUwkFMdEJHT/////6IMBAACLxl9eXVuLTCRYZIkNAAAAAIPE +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 +9zPLA/AD+YPx/4Pw/zPPM8aDwgSB4QABAYF1HCUAAQGBdNMlAAEBAXUIgeYAAACA +dcReX1szwMOLQvw42HQ2hMB07zjcdCeE5HTnwegQONh0FYTAdNw43HQGhOR01OuW +Xl+NQv9bw41C/l5fW8ONQv1eX1vDjUL8Xl9bw/8lJMBAAMzMzMzMzMzMzMzMzMzM +i0XsUOhrgP//WcO4UMhAAOkajP//zMzMzMzMzMzMzMyLhaz8//9Q6EiA//9Zw7h4 +yEAA6feL///MzMzMzMzMzIuF0Pz//1DoKID//1nDuKDIQADp14v//8zMzMzMzMzM +jU2c6eh7//+NTazpsFL//41NrOmoUv//jU2s6aBS//+NTdDpmFL//41N0OmQUv// +jU3Q6YhS//+4yMhAAOmNi///zMzMzMzMzMzMzMzMzMy4IMlAAOl1i///zMyNTeDp +jHv//7j4yUAA6WGL///MzItN7OnMmf//uCDKQADpTYv//8zMi03w6biZ//+4aMpA +AOk5i///zMyLTfDppJn//7iQykAA6SWL///MzItN8OmQmf//uLjKQADpEYv//8zM +jU3g6Sh7//+4IMtAAOn9iv//zMyLTfDpaJn//7hIy0AA6emK//8AAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +6s4AAFLRAABA0QAALtEAAB7RAAAO0QAAHs0AACzNAAA4zQAARM0AAFDNAABezQAA +cs0AAIbNAACWzQAAqs0AALbNAADOzQAA6M0AAPjNAAAKzgAAGs4AACzOAAA6zgAA +TM4AAFjOAABmzgAAcs4AAH7OAACMzgAAms4AAKjOAAC4zgAAyM4AANrOAAD4zgAA +Cs8AAB7PAAA2zwAATM8AAGLPAAByzwAAgs8AAJ7PAAC0zwAAzs8AAOjPAAAA0AAA +GtAAADjQAABI0AAAXNAAAGrQAAB80AAAjNAAAJzQAACo0AAAstAAAL7QAADY0AAA +6tAAAPzQAAAAAAAABM0AAPrMAADszAAA3MwAANLMAADEzAAAAAAAAGAQQAA4x0AA +1z9AAJ0+QAC6P0AAc3RyaW5nIHRvbyBsb25nAHDHQAAEP0AAnT5AAKo+QAD///// +AAAAAAAAAADAx0AAv0BAAJ0+QACiQEAAaW52YWxpZCBzdHJpbmcgcG9zaXRpb24A +/////wAAAADmQ0AAAAAAAP////86REAARERAAAAAAAD/////AAAAANhIQAAuY29t +AAAAAC5iYXQAAAAALmNtZAAAAAAuZXhlAAAAAC4vXAA/KgAAAAAAAP/////5VkAA +DVdAAPDHQABhV0AAGlhAAFVua25vd24gZXhjZXB0aW9uAAAAOMhAADxYQAAAAAAA +Y3Nt4AEAAAAAAAAAAAAAAAMAAAAgBZMZAAAAAAAAAAD/////AAAAAIVhQAAAAAAA +cWFAAHVhQAD/////AAAAANthQAAAAAAAx2FAAMthQAD/////iHpAAJJ6QAAAAAAA +/////wAAAAD4e0AAAAAAANZ7QADge0AA/////yh+QAAsfkAAAAAAAP////+KfkAA +k35AAAYAAAYAAQAAEAADBgAGAhAERUVFBQUFBQU1MABQAAAAACAoOFBYBwgANzAw +V1AHAAAgIAgAAAAACGBoYGBgYAAAcHB4eHh4CAcIAAAHAAgICAAACAAIAAcIAAAA +KABuAHUAbABsACkAAAAAAChudWxsKQAAAAAAAAAAAAD/////TZBAAFGQQAD///// +AZFAAAWRQABydW50aW1lIGVycm9yIAAADQoAAFRMT1NTIGVycm9yDQoAAABTSU5H +IGVycm9yDQoAAAAARE9NQUlOIGVycm9yDQoAAFI2MDI4DQotIHVuYWJsZSB0byBp +bml0aWFsaXplIGhlYXANCgAAAABSNjAyNw0KLSBub3QgZW5vdWdoIHNwYWNlIGZv +ciBsb3dpbyBpbml0aWFsaXphdGlvbg0KAAAAAFI2MDI2DQotIG5vdCBlbm91Z2gg +c3BhY2UgZm9yIHN0ZGlvIGluaXRpYWxpemF0aW9uDQoAAAAAUjYwMjUNCi0gcHVy +ZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwNCgAAAFI2MDI0DQotIG5vdCBlbm91Z2gg +c3BhY2UgZm9yIF9vbmV4aXQvYXRleGl0IHRhYmxlDQoAAAAAUjYwMTkNCi0gdW5h +YmxlIHRvIG9wZW4gY29uc29sZSBkZXZpY2UNCgAAAABSNjAxOA0KLSB1bmV4cGVj +dGVkIGhlYXAgZXJyb3INCgAAAABSNjAxNw0KLSB1bmV4cGVjdGVkIG11bHRpdGhy +ZWFkIGxvY2sgZXJyb3INCgAAAABSNjAxNg0KLSBub3QgZW5vdWdoIHNwYWNlIGZv +ciB0aHJlYWQgZGF0YQ0KAA0KYWJub3JtYWwgcHJvZ3JhbSB0ZXJtaW5hdGlvbg0K +AAAAAFI2MDA5DQotIG5vdCBlbm91Z2ggc3BhY2UgZm9yIGVudmlyb25tZW50DQoA +UjYwMDgNCi0gbm90IGVub3VnaCBzcGFjZSBmb3IgYXJndW1lbnRzDQoAAABSNjAw +Mg0KLSBmbG9hdGluZyBwb2ludCBub3QgbG9hZGVkDQoAAAAATWljcm9zb2Z0IFZp +c3VhbCBDKysgUnVudGltZSBMaWJyYXJ5AAAAAAoKAABSdW50aW1lIEVycm9yIQoK +UHJvZ3JhbTogAAAALi4uADxwcm9ncmFtIG5hbWUgdW5rbm93bj4AAFN1bk1vblR1 +ZVdlZFRodUZyaVNhdAAAAEphbkZlYk1hckFwck1heUp1bkp1bEF1Z1NlcE9jdE5v +dkRlYwAAAABUWgAAAAAAAP/////zr0AA969AAEdldExhc3RBY3RpdmVQb3B1cAAA +R2V0QWN0aXZlV2luZG93AE1lc3NhZ2VCb3hBAHVzZXIzMi5kbGwAAP////+ouEAA +rLhAAP////8XuUAAG7lAAADpQAAAAAAAAAAAAP////8AAAAAAAAAABjpQAABAAAA +AAAAAP////8AAAAAAAAAADjpQAACAAAAAAAAAP////8AAAAAAAAAAADHQADoxkAA +0MZAAAAAAAAAAAAAAAAAAAMAAAAYx0AAAAAAAAAAAAAAAAAAOOlAACjHQAAAAAAA +6MZAANDGQAAAAAAAAAAAAAAAAAAAAAAAAgAAAFDHQAAAAAAAAAAAAAAAAAAY6UAA +YMdAAAAAAABY6UAAAgAAAAAAAAD/////AAAAAAAAAACIx0AA6MZAANDGQAAAAAAA +AAAAAAAAAAADAAAAoMdAAAAAAAAAAAAAAAAAAFjpQACwx0AA0MZAAAAAAAAAAAAA +AAAAAAAAAAABAAAA1MdAAAAAAAAAAAAAAAAAAADpQADgx0AAAAAAABjsQAAAAAAA +AAAAAP////8AAAAAAAAAAAjIQAAAAAAAAAAAAAAAAAABAAAAIMhAAAAAAAAAAAAA +AAAAABjsQAAoyEAAAAAAACAFkxkBAAAAcMhAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +/////2C9QAAgBZMZAQAAAJjIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////+AvUAA +IAWTGQEAAADAyEAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////oL1AACAFkxkHAAAA +6MhAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////8C9QAAAAAAA8L1AAAAAAADovUAA +AAAAAOC9QAAAAAAA2L1AAAAAAADQvUAAAAAAAMi9QAAgBZMZAgAAAEDJQAABAAAA +UMlAAAAAAAAAAAAAAAAAAP////8AAAAA/////wAAAAAAAAAAAAAAAAEAAAABAAAA +aMlAAAAAAAAAAAAAAAAAAAAAAABZPEAAAAAAAADpQAAAAAAA/////wAAAAAMAAAA +uldAAAAAAAAAAAAAGOlAAAAAAAD/////AAAAABwAAAAgP0AAAAAAAAAAAAA46UAA +AAAAAP////8AAAAAHAAAAPM/QAAAAAAAAwAAALjJQACYyUAAeMlAAAAAAAB9P0AA +AAAAANjJQAAgBZMZAQAAABjKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8cvkAA +IAWTGQEAAABAykAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////ML5AAAIAAACYyUAA +eMlAAAAAAAAAAAAAxz5AAAAAAABIykAAIAWTGQEAAACIykAAAAAAAAAAAAAAAAAA +AAAAAAAAAAD/////RL5AACAFkxkBAAAAsMpAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +/////1i+QAAgBZMZAQAAANjKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////9svkAA +AAAAAFjpQAAAAAAA/////wAAAAAcAAAA20BAAAAAAAADAAAA4MpAAJjJQAB4yUAA +AAAAAGVAQAAAAAAAAMtAACAFkxkBAAAAQMtAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +/////4C+QAAgBZMZAQAAAGjLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////+UvkAA +qMwAAAAAAAAAAAAAFM0AAPzAAACsywAAAAAAAAAAAABs0QAAAMAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAA6s4AAFLRAABA0QAALtEAAB7RAAAO0QAAHs0AACzNAAA4zQAA +RM0AAFDNAABezQAAcs0AAIbNAACWzQAAqs0AALbNAADOzQAA6M0AAPjNAAAKzgAA +Gs4AACzOAAA6zgAATM4AAFjOAABmzgAAcs4AAH7OAACMzgAAms4AAKjOAAC4zgAA +yM4AANrOAAD4zgAACs8AAB7PAAA2zwAATM8AAGLPAAByzwAAgs8AAJ7PAAC0zwAA +zs8AAOjPAAAA0AAAGtAAADjQAABI0AAAXNAAAGrQAAB80AAAjNAAAJzQAACo0AAA +stAAAL7QAADY0AAA6tAAAPzQAAAAAAAABM0AAPrMAADszAAA3MwAANLMAADEzAAA +AAAAAAgAZGVmbGF0ZUVuZAAABQBkZWZsYXRlAAkAZGVmbGF0ZUluaXQyXwAoAGlu +ZmxhdGVFbmQAACMAaW5mbGF0ZQApAGluZmxhdGVJbml0Ml8AemxpYjEuZGxsAKIB +SGVhcFJlQWxsb2MAmQFIZWFwQWxsb2MAnwFIZWFwRnJlZQAALwJSdGxVbndpbmQA +fQBFeGl0UHJvY2VzcwCeAlRlcm1pbmF0ZVByb2Nlc3MAAPcAR2V0Q3VycmVudFBy +b2Nlc3MAGgFHZXRMYXN0RXJyb3IAAC0AQ3JlYXRlRGlyZWN0b3J5QQAAkABGaW5k +Q2xvc2UAigBGaWxlVGltZVRvU3lzdGVtVGltZQAAiQBGaWxlVGltZVRvTG9jYWxG +aWxlVGltZQAEAUdldERyaXZlVHlwZUEAlABGaW5kRmlyc3RGaWxlQQAAnQBGaW5k +TmV4dEZpbGVBAMoAR2V0Q29tbWFuZExpbmVBAHQBR2V0VmVyc2lvbgAACwJSYWlz +ZUV4Y2VwdGlvbgAAowFIZWFwU2l6ZQAAGwBDbG9zZUhhbmRsZQDfAldyaXRlRmls +ZQAYAlJlYWRGaWxlAACdAUhlYXBEZXN0cm95AJsBSGVhcENyZWF0ZQAAvwJWaXJ0 +dWFsRnJlZQC7AlZpcnR1YWxBbGxvYwAAuAFJc0JhZFdyaXRlUHRyAG0CU2V0SGFu +ZGxlQ291bnQAAFIBR2V0U3RkSGFuZGxlAAAVAUdldEZpbGVUeXBlAFABR2V0U3Rh +cnR1cEluZm9BABYBR2V0RnVsbFBhdGhOYW1lQQAA9QBHZXRDdXJyZW50RGlyZWN0 +b3J5QQAA0gJXaWRlQ2hhclRvTXVsdGlCeXRlAOQBTXVsdGlCeXRlVG9XaWRlQ2hh +cgC/AUxDTWFwU3RyaW5nQQAAwAFMQ01hcFN0cmluZ1cAAK0CVW5oYW5kbGVkRXhj +ZXB0aW9uRmlsdGVyAAAkAUdldE1vZHVsZUZpbGVOYW1lQQAAsgBGcmVlRW52aXJv +bm1lbnRTdHJpbmdzQQCzAEZyZWVFbnZpcm9ubWVudFN0cmluZ3NXAAYBR2V0RW52 +aXJvbm1lbnRTdHJpbmdzAAgBR2V0RW52aXJvbm1lbnRTdHJpbmdzVwAAiwJTZXRV +bmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIAfAJTZXRTdGRIYW5kbGUAAKoARmx1c2hG +aWxlQnVmZmVycwAANABDcmVhdGVGaWxlQQBqAlNldEZpbGVQb2ludGVyAAC1AUlz +QmFkUmVhZFB0cgAAsgFJc0JhZENvZGVQdHIAAL8AR2V0Q1BJbmZvALkAR2V0QUNQ +AAAxAUdldE9FTUNQAABwAUdldFRpbWVab25lSW5mb3JtYXRpb24AAFMBR2V0U3Ry +aW5nVHlwZUEAAFYBR2V0U3RyaW5nVHlwZVcAAD4BR2V0UHJvY0FkZHJlc3MAAMIB +TG9hZExpYnJhcnlBAABhAlNldEVuZE9mRmlsZQAAIQBDb21wYXJlU3RyaW5nQQAA +IgBDb21wYXJlU3RyaW5nVwAAYgJTZXRFbnZpcm9ubWVudFZhcmlhYmxlQQBLRVJO +RUwzMi5kbGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAAPAvQACAPUAA +jUJAAAAAAAAAAAAAT0NAAJVOQAC8pkAA6ppAAAAAAAAAAAAAOk9AAAAAAAAAAAAA ++5pAAAAAAAAAAAAAAAAAAHdiAAByYgAAMS4yLjMAAABVbnBhY2tUb0ZvbGRlci4g +RXJyb3IgaW4gY3JlYXRpbmcgZmlsZSEACgAAAGRhdGEAAAAAJXNcJXMuJXMAAAAA +aGVhZGVyAAAuAAAAfAAAAFByb2dyZXNzICg1MCBwb2ludHMpOiAAAFVucGFja1Rv +Rm9sZGVyLiBFcnJvciBpbiBjcmVhdGluZyBmaWxlIQoAAAAAJXNcJXMAAABGaWxl +SGVhZGVyAABVbnBhY2tUb0ZvbGRlci4gRXJyb3IgaW4gY3JlYXRpbmcgZGlyZWN0 +b3J5IQoAAABVbnBhY2tUb0ZvbGRlci4gVGhpcyBpcyBub3QgVjggZmlsZSEKAAAA +VW5wYWNrVG9Gb2xkZXIuIEVycm9yIGluIHJlYWRpbmcgZmlsZSEKAFVucGFja1Rv +Rm9sZGVyLiBOb3QgZW5vdWdoIG1lbW9yeSEKAFVucGFja1RvRm9sZGVyLiBJbnB1 +dCBmaWxlIG5vdCBmb3VuZCEKAABSZWFkQmxvY2tEYXRhLiBCbG9ja0RhdGEgPT0g +TlVMTC4AAAAuZGF0YQAAACVzXCouaGVhZGVyACVzXEZpbGVIZWFkZXIAAAAlMDh4 +AAAAAExvYWRGaWxlOiBvawoAAABTYXZlRmlsZS4gRXJyb3IgaW4gY3JlYXRpbmcg +ZmlsZSEAAAAlc1wqAAAAAFBhY2s6IG9rCgAAAExvYWRGaWxlRnJvbUZvbGRlcjog +b2sKAFY4VW5wYWNrLmV4ZSAtcGFjayAgICAgICAgMUN2OC51bmQgICAgICAgICAg +ICAgICAgICAgICAgICAxQ3Y4X25ldy5jZgoAAFY4VW5wYWNrLmV4ZSAtZGVmbGF0 +ZSAgICAgMUN2OC51bnBcbWV0YWRhdGFfbmV3LmRhdGEudW5kICAxQ3Y4LnVucFxt +ZXRhZGF0YS5kYXRhCgAAAFY4VW5wYWNrLmV4ZSAtcGFjayAgICAgICAgMUN2OC51 +bnBcbWV0YWRhdGEudW5wICAgICAgICAgICAxQ3Y4LnVucFxtZXRhZGF0YV9uZXcu +ZGF0YS51bmQKAAAAUEFDSwoAAABWOFVucGFjay5leGUgLXVucGFjayAgICAgIDFD +djgudW5wXG1ldGFkYXRhLmRhdGEudW5kICAgICAgMUN2OC51bnBcbWV0YWRhdGEu +dW5wCgAAAABWOFVucGFjay5leGUgLXVuZGVmbGF0ZSAgIDFDdjgudW5wXG1ldGFk +YXRhLmRhdGEgICAgICAgICAgMUN2OC51bnBcbWV0YWRhdGEuZGF0YS51bmQKAAAA +VjhVbnBhY2suZXhlIC11bnBhY2sgICAgICAxQ3Y4LmNmICAgICAgICAgICAgICAg +ICAgICAgICAgIDFDdjgudW5wCgBVTlBBQ0sKACAgLUJbVUlMRF0gICAgICBpbl9k +aXJuYW1lICAgICAgICAgb3V0X2ZpbGVuYW1lCgAAAAAgIC1QW0FSU0VdICAgICAg +aW5fZmlsZW5hbWUgICAgICAgIG91dF9kaXJuYW1lCgAgIC1CQVQKACAgLUVbWEFN +UExFXQoAAAAgIC1EW0VGTEFURV0gICAgaW5fZmlsZW5hbWUgICAgICAgIGZpbGVu +YW1lLmRhdGEKAAAAICAtSVtORkxBVEVdICAgIGluX2ZpbGVuYW1lLmRhdGEgICBv +dXRfZmlsZW5hbWUKAAAAACAgLVBBW0NLXSAgICAgICBpbl9kaXJuYW1lICAgICAg +ICAgb3V0X2ZpbGVuYW1lLmNmCgAgIC1VW05QQUNLXSAgICAgaW5fZmlsZW5hbWUu +Y2YgICAgIG91dF9kaXJuYW1lCgBWOFVOUEFDSwoAAABVbnBhY2ssIHBhY2ssIGRl +ZmxhdGUgYW5kIGluZmxhdGUgMUMgdjggZmlsZSAoKi5jZikKAAAAAFY4VXBhY2sg +VmVyc2lvbiAyLjAwIENvcHlyaWdodCAoYykgMjAwOCBEZW5pcyBEZW1pZG92IDIw +MDgtMDMtMzAKAAAALWUAAC1leGFtcGxlAAAAADpFTkQKAAAAVjhVbnBhY2suZXhl +IC1wYWNrICAgICAgICAlMi51bnAgICAgICAgICAgICAgICAgICAgICAgICAgJTIu +bmV3LmNmCgBWOFVucGFjay5leGUgLWRlZmxhdGUgICAgICUyLnVucFxtZXRhZGF0 +YV9uZXcuZGF0YS51bmQgICAlMi51bnBcbWV0YWRhdGEuZGF0YQoAAFY4VW5wYWNr +LmV4ZSAtcGFjayAgICAgICAgJTIudW5wXG1ldGFkYXRhLnVucCAgICAgICAgICAg +ICUyLnVucFxtZXRhZGF0YV9uZXcuZGF0YS51bmQKAAA6UEFDSwoAAEdPVE8gRU5E +CgAAAFY4VW5wYWNrLmV4ZSAtdW5wYWNrICAgICAgJTIudW5wXG1ldGFkYXRhLmRh +dGEudW5kICAgICAgICAlMi51bnBcbWV0YWRhdGEudW5wCgAAVjhVbnBhY2suZXhl +IC11bmRlZmxhdGUgICAlMi51bnBcbWV0YWRhdGEuZGF0YSAgICAgICAgICAgICUy +LnVucFxtZXRhZGF0YS5kYXRhLnVuZAoAVjhVbnBhY2suZXhlIC11bnBhY2sgICAg +ICAlMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUyLnVucAoAAAA6VU5Q +QUNLCgAAAABpZiAlMSA9PSBwIEdPVE8gUEFDSwoAAABpZiAlMSA9PSBQIEdPVE8g +UEFDSwoAAAAtYmF0AAAAAC1iAAAtYnVpbGQAAC1wAAAtcGFyc2UAAC1wYQAtcGFj +awAAAC11bnAAAAAALXUAAC11bnBhY2sALWQAAC1kZWZsYXRlAAAAAC11bmRlZmxh +dGUAAC11bmQAAAAALWkAAC1pbmZsYXRlAAAAAAAAAAAIwkAAAAAAAC4/QVZleGNl +cHRpb25AQAAIwkAAAAAAAC4/QVZsb2dpY19lcnJvckBzdGRAQAAAAAjCQAAAAAAA +Lj9BVmxlbmd0aF9lcnJvckBzdGRAQAAACMJAAAAAAAAuP0FWb3V0X29mX3Jhbmdl +QHN0ZEBAAAAAAAAAAAAAACAFkxkAAAAAAAAAAAAAAACA+UAAAAAAAID5QAABAQAA +AAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +Yk1AAAEAAAAIwkAAAAAAAC4/QVZ0eXBlX2luZm9AQACkmkAAAAAAAAAAAAAAAAAA +NGFAADRhQAAQAAAA+AMAAKSaQAAAAAAAAAAAAAAAAAAQw0AAAMNAAAEAAAAWAAAA +AgAAAAIAAAADAAAAAgAAAAQAAAAYAAAABQAAAA0AAAAGAAAACQAAAAcAAAAMAAAA +CAAAAAwAAAAJAAAADAAAAAoAAAAHAAAACwAAAAgAAAAMAAAAFgAAAA0AAAAWAAAA +DwAAAAIAAAAQAAAADQAAABEAAAASAAAAEgAAAAIAAAAhAAAADQAAADUAAAACAAAA +QQAAAA0AAABDAAAAAgAAAFAAAAARAAAAUgAAAA0AAABTAAAADQAAAFcAAAAWAAAA +WQAAAAsAAABsAAAADQAAAG0AAAAgAAAAcAAAABwAAAByAAAACQAAAAYAAAAWAAAA +gAAAAAoAAACBAAAACgAAAIIAAAAJAAAAgwAAABYAAACEAAAADQAAAJEAAAApAAAA +ngAAAA0AAAChAAAAAgAAAKQAAAALAAAApwAAAA0AAAC3AAAAEQAAAM4AAAACAAAA +1wAAAAsAAAAYBwAADAAAAP////8ACgAA4u1AAOLtQAAAACAAIAAgACAAIAAgACAA +IAAgACgAKAAoACgAKAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAA +IABIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAIQAhACEAIQAhACEAIQA +hACEAIQAEAAQABAAEAAQABAAEACBAIEAgQCBAIEAgQABAAEAAQABAAEAAQABAAEA +AQABAAEAAQABAAEAAQABAAEAAQABAAEAEAAQABAAEAAQABAAggCCAIIAggCCAIIA +AgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAEAAQABAA +IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAALgAAAAEAAAAFAADACwAAAAAAAAAdAADA +BAAAAAAAAACWAADABAAAAAAAAACNAADACAAAAAAAAACOAADACAAAAAAAAACPAADA +CAAAAAAAAACQAADACAAAAAAAAACRAADACAAAAAAAAACSAADACAAAAAAAAACTAADA +CAAAAAAAAAADAAAABwAAAAoAAACMAAAAAgAAAJzFQAAIAAAAcMVAAAkAAABExUAA +CgAAACDFQAAQAAAA9MRAABEAAADExEAAEgAAAKDEQAATAAAAdMRAABgAAAA8xEAA +GQAAABTEQAAaAAAA3MNAABsAAACkw0AAHAAAAHzDQAB4AAAAbMNAAHkAAABcw0AA +egAAAEzDQAD8AAAASMNAAP8AAAA4w0AAAAAAAAAAAACGtEAAhrRAAIa0QACGtEAA +hrRAAIa0QAAAAAAAAAAAAAECBAgAAAAApAMAAGCCeYIhAAAAAAAAAKbfAAAAAAAA +oaUAAAAAAACBn+D8AAAAAEB+gPwAAAAAqAMAAMGj2qMgAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAACB/gAAAAAAAED+AAAAAAAAtQMAAMGj2qMgAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAACB/gAAAAAAAEH+AAAAAAAAtgMAAM+i5KIaAOWi6KJbAAAAAAAAAAAA +AAAAAAAAAACB/gAAAAAAAEB+of4AAAAAUQUAAFHaXtogAF/aatoyAAAAAAAAAAAA +AAAAAAAAAACB09je4PkAADF+gf4AAAAAAAAAAAAAAACAcAAAAQAAAPDx//9QU1QA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAUERUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADzyQAB88kAAAAAAAP////8AAAAA +AAAAAAAAAAD/////AAAAAAAAAAD/////HgAAADsAAABaAAAAeAAAAJcAAAC1AAAA +1AAAAPMAAAARAQAAMAEAAE4BAABtAQAA/////x4AAAA6AAAAWQAAAHcAAACWAAAA +tAAAANMAAADyAAAAEAEAAC8BAABNAQAAbAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAA==} +} \ No newline at end of file diff --git "a/src/Utils/UILogToScript/\320\234\320\260\320\272\320\265\321\202\321\213/zlib1.txt" "b/src/Utils/UILogToScript/\320\234\320\260\320\272\320\265\321\202\321\213/zlib1.txt" new file mode 100644 index 00000000..b6fa4088 --- /dev/null +++ "b/src/Utils/UILogToScript/\320\234\320\260\320\272\320\265\321\202\321\213/zlib1.txt" @@ -0,0 +1,1251 @@ +{1, +{#base64:TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAEAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5v +dCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAAAFd2a9QRYI7kEWCO5BFgju +Iwkb7kMWCO5BFgnuVxYI7i4JDO5CFgjuLgkC7kQWCO7CCgbuQBYI7kQaa+5MFgju +RBoH7kAWCO69NhruQBYI7kQaVO5AFgjurR1W7kAWCO5EGlLuQBYI7lJpY2hBFgju +AAAAAAAAAAAAAAAAAAAAAFBFAABMAQUA2h3eQgAAAAAAAAAA4AAOIQsBBwoAlAAA +AFIAAAAAAABGoQAAABAAAACwAAAAAAAQABAAAAACAAAEAAAAAAAAAAQAAAAAAAAA +ADABAAAEAACH9QAAAgAAAAAAEAAAEAAAAAAQAAAQAAAAAAAAEAAAAPDxAABdBAAA +ZPAAADwAAAAAEAEAmAMAAAAAAAAAAAAAAAAAAAAAAAAAIAEAsAIAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAABYAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALnRleHQAAAA/kgAAABAAAACUAAAABAAA +AAAAAAAAAAAAAAAAIAAAYC5yZGF0YQAATUYAAACwAAAASAAAAJgAAAAAAAAAAAAA +AAAAAEAAAEAuZGF0YQAAAHQAAAAAAAEAAAIAAADgAAAAAAAAAAAAAAAAAABAAADA +LnJzcmMAAACYAwAAABABAAAEAAAA4gAAAAAAAAAAAAAAAAAAQAAAQC5yZWxvYwAA +aAMAAAAgAQAABAAAAOYAAAAAAAAAAAAAAAAAAEAAAEIAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAItMJARTi1wkEFeL+cHvEIHh//8AAIP7AXUxi0QkEA+2 +EAPKgfnx/wAAcgaB6fH/AAAD+YH/8f8AAHIGge/x/wAAi8fB4BBfC8Fbw1aLdCQU +hfZ1CV5fuAEAAABbw4P7EHMzhdt0Cw+2BgPIRgP5S3X1gfnx/wAAcgaB6fH/AACL +xzPSvvH/AAD39l5fW4vCweAQC8HDgfuwFQAAD4LKAAAAuK+pbl7341WL6sHtC4v/ +geuwFQAAuFsBAADrA41JAA+2FgPKD7ZWAQP5A8oPtlYCA/kDyg+2VgMD+QPKD7ZW +BAP5A8oPtlYFA/kDyg+2VgYD+QPKD7ZWBwP5A8oPtlYIA/kDyg+2VgkD+QPKD7ZW +CgP5A8oPtlYLA/kDyg+2VgwD+QPKD7ZWDQP5A8oPtlYOA/kDyg+2Vg8D+QPKA/mD +xhBID4V3////i8Ez0rnx/wAA9/GLx7/x/wAAi8oz0vf3TYv6D4VG////XYXbD4TD +AAAAg/sQD4KRAAAAi8PB6AQPthYDyg+2VgED+QPKD7ZWAgP5A8oPtlYDA/kDyg+2 +VgQD+QPKD7ZWBQP5A8oPtlYGA/kDyg+2VgcD+QPKD7ZWCAP5A8oPtlYJA/kDyg+2 +VgoD+QPKD7ZWCwP5A8oPtlYMA/kDyg+2Vg0D+QPKD7ZWDgP5A8oPtlYPA/kDyoPr +EAP5g8YQSA+FdP///4XbdAsPtgYDyEYD+Ut19YvBM9K58f8AAPfxi8e+8f8AAIvK +M9L39ov6i8deweAQXwvBW8PMzMzMzMzMzMzMzMzMzMyD7DiLTCRIi1QkPItEJERT +i1wkRGo4aFiwABBqAGoIag+JTCQci0wkZGoIiVQkKIlEJByLA1GNVCQgUolEJDTH +RCREAAAAAMdEJEgAAAAAx0QkTAAAAADo5AMAAIPEIIXAdUlWjUQkCGoEUOiwCQAA +i/CDxAiD/gF0Ho1MJAhR6NwRAACDxASF9rj7////dBuLxl5bg8Q4w4tUJByNRCQI +UIkT6LgRAACDxAReW4PEOMPMzMzMzMzMzMzMzMzMzMyLRCQQi0wkDItUJAhq/1CL +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 +dAhfuP7///9ew4tACIXAdAtQi0YoUP9WJIPECItOHItBRIXAdAuLVihQUv9WJIPE +CItGHItAQIXAdAuLTihQUf9WJIPECItWHItCOIXAdAtQi0YoUP9WJIPECItOHItW +KFFS/1Ykg8QIM8CD/3EPlcBfx0YcAAAAAF5Ig+D9w7j+////XsPMzMzMzMzMzMzM +VVaLdCQQhfYPhJEBAACLbCQMhe0PhIUBAACLRhyFwIlEJBAPhHYBAABTV7kOAAAA +i/1owBYAAPOli0UoagFQ/1Ugi9iDxAyF2w+ERgEAAIt0JBiJXRy5sAUAAIv786WL +SyxqAokri1UoUVL/VSCJQziLQyyLTShqAlBR/1Ugi1NMagKJQ0CLRShSUP9VIIuL +nBYAAGoEiUNEi1UoUVL/VSCLeziDxDCF/4lDCA+E2gAAAItLQIXJD4TPAAAAi0tE +hckPhMQAAACFwA+EvAAAAItLLItUJBiLcjjR4YvpwekC86WLzYPhA/Oki3JAi0ss +i3tA0eGL6cHpAvOli82D4QPzpItyRItLTIt7RNHhi+nB6QLzpYvNg+ED86SLcgiL +SwyLewiL6cHpAvOli82D4QPzpIt6CItKEItzCCvPA86JSxCLi5wWAACL0dHqjQRQ +jRROA9GJg6QWAACJk5gWAACNg5QAAACNi4gJAACNk3wKAABfiYMYCwAAiYskCwAA +iZMwCwAAW14zwF3DVeie/f//g8QEX1teuPz///9dw164/v///13DzMzMzMzMzMzM +i0Isi0pM0eCJQjyLQkRTVjP2Zol0SP6LSkyNTAn+i9nB6QIzwFeLekTzq4vLg+ED +86qLgoQAAACNBEDB4AIPt4ia0AAQiYqAAAAAD7eImNAAEImKjAAAAA+3iJzQABCJ +ipAAAAAPt4Ce0AAQiUJ8uAIAAACJcmyJclyJcnSJQniJQmCJcmiJckjoE28AACUA +DwAAPQAGAABfG8lBXokNUAABEFvDzMzMzMzMzMzMzMyLTjiLRmxTihwIVYtsJAyK +FCkDwQPNOtNXjbgCAQAAD4WSAAAAilEBOlABD4WGAAAAg8ACg8ECilABilkBQEE6 +03VYilABilkBQEE603VMilABilkBQEE603VAilABilkBQEE603U0ilABilkBQEE6 +03UoilABilkBQEE603UcilABilkBQEE603UQilABilkBQEE603UEO8dynCvHBQIB +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 +nZxYnTPBdBC4AQAAAA+iW8O4AAMAAOv3uAAEAADr8FVXVlOD7CSLVCQ4i0wkPItC +eIuajAAAADvDi0I0i1p8fAPB6wJLweMQC9iJHCSLgpAAAACLWnQ72HwCi9iJXCQY +i3I4iXQkBItqbI18NQCJfCQgi8f32IPgA4lEJBSLQiwtBgEAACvofwIz7YtCeIlE +JBwD8Il0JAgPtx+JXCQQD7dcOP+JXCQMi3pAixQk6xojyg+3DE87zQ+G4AAAAIHq +AAABAA+I1AAAAA+3RDH/O8N13YtEJAQPtwQBO0QkEHXPiRQki3QkBIt8JCAD8YtE +JBS6+P7//428OAgBAACNtDAIAQAAiwQyMwQ6dRSLRDIEM0Q6BHUHg8IIdenrcYPC +BKn//wAAdQaDwgLB6BAsAYPSAI0EOot8JCArxz0CAQAAfUyLVCQ4i1wkHDvDfxOL +dCQIi3pAi1wkDIsUJOlO////i1wkGIlEJByJSnA7w30ti3QkBAPwiXQkCA+3XDj/ +i3pAiVwkDIsUJOkh////i1QkOMdEJBwCAQAAiUpwi1QkOItcJByLQnQ72H8Ci8OD +xCRbXl9dww0KYXNtNjg2IHdpdGggbWFzbSwgb3B0aW1pc2VkIGFzc2VtYmx5IGNv +ZGUgZnJvbSBCcmlhbiBSYWl0ZXIsIHdyaXR0ZW4gMTk5OA0KzMzMzMzMzMzMzMzM +6QMBAACNSQBGYXN0IGRlY29kaW5nIENvZGUgZnJvbSBDaHJpcyBBbmRlcnNvbgCQ +aW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29k +ZQCL/2ludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAIv/AAAAAAEAAAADAAAA +BwAAAA8AAAAfAAAAPwAAAH8AAAD/AAAA/wEAAP8DAAD/BwAA/w8AAP8fAAD/PwAA +/38AAP//AAD//wEA//8DAP//BwD//w8A//8fAP//PwD//38A////AP///wH///8D +////B////w////8f////P////3//////V1ZVU5yD7ED8i3QkWIt+HItWBIsGA9CD +6guJRCQsiVQkFItsJFyLThCLXgwr6ffdA+uB6QEBAAADy4lcJDyJbCQoiUwkEItH +TItPUIlEJAiJTCQMuAEAAACLT1TT4EiJBCS4AQAAAItPWNPgSIlEJASLRyiLTzCL +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 +EAcKAAAIYAAACCAAAAmgAAAIAAAACIAAAAhAAAAJ4AAQBwYAAAhYAAAIGAAACZAA +Ewc7AAAIeAAACDgAAAnQABEHEQAACGgAAAgoAAAJsAAACAgAAAiIAAAISAAACfAA +EAcEAAAIVAAACBQAFQjjABMHKwAACHQAAAg0AAAJyAARBw0AAAhkAAAIJAAACagA +AAgEAAAIhAAACEQAAAnoABAHCAAACFwAAAgcAAAJmAAUB1MAAAh8AAAIPAAACdgA +EgcXAAAIbAAACCwAAAm4AAAIDAAACIwAAAhMAAAJ+AAQBwMAAAhSAAAIEgAVCKMA +EwcjAAAIcgAACDIAAAnEABEHCwAACGIAAAgiAAAJpAAACAIAAAiCAAAIQgAACeQA +EAcHAAAIWgAACBoAAAmUABQHQwAACHoAAAg6AAAJ1AASBxMAAAhqAAAIKgAACbQA +AAgKAAAIigAACEoAAAn0ABAHBQAACFYAAAgWAEAIAAATBzMAAAh2AAAINgAACcwA +EQcPAAAIZgAACCYAAAmsAAAIBgAACIYAAAhGAAAJ7AAQBwkAAAheAAAIHgAACZwA +FAdjAAAIfgAACD4AAAncABIHGwAACG4AAAguAAAJvAAACA4AAAiOAAAITgAACfwA +YAcAAAAIUQAACBEAFQiDABIHHwAACHEAAAgxAAAJwgAQBwoAAAhhAAAIIQAACaIA +AAgBAAAIgQAACEEAAAniABAHBgAACFkAAAgZAAAJkgATBzsAAAh5AAAIOQAACdIA +EQcRAAAIaQAACCkAAAmyAAAICQAACIkAAAhJAAAJ8gAQBwQAAAhVAAAIFQAQCAIB +EwcrAAAIdQAACDUAAAnKABEHDQAACGUAAAglAAAJqgAACAUAAAiFAAAIRQAACeoA +EAcIAAAIXQAACB0AAAmaABQHUwAACH0AAAg9AAAJ2gASBxcAAAhtAAAILQAACboA +AAgNAAAIjQAACE0AAAn6ABAHAwAACFMAAAgTABUIwwATByMAAAhzAAAIMwAACcYA +EQcLAAAIYwAACCMAAAmmAAAIAwAACIMAAAhDAAAJ5gAQBwcAAAhbAAAIGwAACZYA +FAdDAAAIewAACDsAAAnWABIHEwAACGsAAAgrAAAJtgAACAsAAAiLAAAISwAACfYA +EAcFAAAIVwAACBcAQAgAABMHMwAACHcAAAg3AAAJzgARBw8AAAhnAAAIJwAACa4A +AAgHAAAIhwAACEcAAAnuABAHCQAACF8AAAgfAAAJngAUB2MAAAh/AAAIPwAACd4A +EgcbAAAIbwAACC8AAAm+AAAIDwAACI8AAAhPAAAJ/gBgBwAAAAhQAAAIEAAUCHMA +EgcfAAAIcAAACDAAAAnBABAHCgAACGAAAAggAAAJoQAACAAAAAiAAAAIQAAACeEA +EAcGAAAIWAAACBgAAAmRABMHOwAACHgAAAg4AAAJ0QARBxEAAAhoAAAIKAAACbEA +AAgIAAAIiAAACEgAAAnxABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACckA +EQcNAAAIZAAACCQAAAmpAAAIBAAACIQAAAhEAAAJ6QAQBwgAAAhcAAAIHAAACZkA +FAdTAAAIfAAACDwAAAnZABIHFwAACGwAAAgsAAAJuQAACAwAAAiMAAAITAAACfkA +EAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxQARBwsAAAhiAAAIIgAACaUA +AAgCAAAIggAACEIAAAnlABAHBwAACFoAAAgaAAAJlQAUB0MAAAh6AAAIOgAACdUA +EgcTAAAIagAACCoAAAm1AAAICgAACIoAAAhKAAAJ9QAQBwUAAAhWAAAIFgBACAAA +EwczAAAIdgAACDYAAAnNABEHDwAACGYAAAgmAAAJrQAACAYAAAiGAAAIRgAACe0A +EAcJAAAIXgAACB4AAAmdABQHYwAACH4AAAg+AAAJ3QASBxsAAAhuAAAILgAACb0A +AAgOAAAIjgAACE4AAAn9AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcMA +EAcKAAAIYQAACCEAAAmjAAAIAQAACIEAAAhBAAAJ4wAQBwYAAAhZAAAIGQAACZMA +Ewc7AAAIeQAACDkAAAnTABEHEQAACGkAAAgpAAAJswAACAkAAAiJAAAISQAACfMA +EAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJywARBw0AAAhlAAAIJQAACasA +AAgFAAAIhQAACEUAAAnrABAHCAAACF0AAAgdAAAJmwAUB1MAAAh9AAAIPQAACdsA +EgcXAAAIbQAACC0AAAm7AAAIDQAACI0AAAhNAAAJ+wAQBwMAAAhTAAAIEwAVCMMA +EwcjAAAIcwAACDMAAAnHABEHCwAACGMAAAgjAAAJpwAACAMAAAiDAAAIQwAACecA +EAcHAAAIWwAACBsAAAmXABQHQwAACHsAAAg7AAAJ1wASBxMAAAhrAAAIKwAACbcA +AAgLAAAIiwAACEsAAAn3ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc8A +EQcPAAAIZwAACCcAAAmvAAAIBwAACIcAAAhHAAAJ7wAQBwkAAAhfAAAIHwAACZ8A +FAdjAAAIfwAACD8AAAnfABIHGwAACG8AAAgvAAAJvwAACA8AAAiPAAAITwAACf8A +EAUBABcFAQETBREAGwUBEBEFBQAZBQEEFQVBAB0FAUAQBQMAGAUBAhQFIQAcBQEg +EgUJABoFAQgWBYEAQAUAABAFAgAXBYEBEwUZABsFARgRBQcAGQUBBhUFYQAdBQFg +EAUEABgFAQMUBTEAHAUBMBIFDQAaBQEMFgXBAEAFAAAQABEAEgAAAAgABwAJAAYA +CgAFAAsABAAMAAMADQACAA4AAQAPAAAAYAcAAAAIUAAACBAAFAhzABIHHwAACHAA +AAgwAAAJwAAQBwoAAAhgAAAIIAAACaAAAAgAAAAIgAAACEAAAAngABAHBgAACFgA +AAgYAAAJkAATBzsAAAh4AAAIOAAACdAAEQcRAAAIaAAACCgAAAmwAAAICAAACIgA +AAhIAAAJ8AAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnIABEHDQAACGQA +AAgkAAAJqAAACAQAAAiEAAAIRAAACegAEAcIAAAIXAAACBwAAAmYABQHUwAACHwA +AAg8AAAJ2AASBxcAAAhsAAAILAAACbgAAAgMAAAIjAAACEwAAAn4ABAHAwAACFIA +AAgSABUIowATByMAAAhyAAAIMgAACcQAEQcLAAAIYgAACCIAAAmkAAAIAgAACIIA +AAhCAAAJ5AAQBwcAAAhaAAAIGgAACZQAFAdDAAAIegAACDoAAAnUABIHEwAACGoA +AAgqAAAJtAAACAoAAAiKAAAISgAACfQAEAcFAAAIVgAACBYAQAgAABMHMwAACHYA +AAg2AAAJzAARBw8AAAhmAAAIJgAACawAAAgGAAAIhgAACEYAAAnsABAHCQAACF4A +AAgeAAAJnAAUB2MAAAh+AAAIPgAACdwAEgcbAAAIbgAACC4AAAm8AAAIDgAACI4A +AAhOAAAJ/ABgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnCABAHCgAACGEA +AAghAAAJogAACAEAAAiBAAAIQQAACeIAEAcGAAAIWQAACBkAAAmSABMHOwAACHkA +AAg5AAAJ0gARBxEAAAhpAAAIKQAACbIAAAgJAAAIiQAACEkAAAnyABAHBAAACFUA +AAgVABAIAgETBysAAAh1AAAINQAACcoAEQcNAAAIZQAACCUAAAmqAAAIBQAACIUA +AAhFAAAJ6gAQBwgAAAhdAAAIHQAACZoAFAdTAAAIfQAACD0AAAnaABIHFwAACG0A +AAgtAAAJugAACA0AAAiNAAAITQAACfoAEAcDAAAIUwAACBMAFQjDABMHIwAACHMA +AAgzAAAJxgARBwsAAAhjAAAIIwAACaYAAAgDAAAIgwAACEMAAAnmABAHBwAACFsA +AAgbAAAJlgAUB0MAAAh7AAAIOwAACdYAEgcTAAAIawAACCsAAAm2AAAICwAACIsA +AAhLAAAJ9gAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnOABEHDwAACGcA +AAgnAAAJrgAACAcAAAiHAAAIRwAACe4AEAcJAAAIXwAACB8AAAmeABQHYwAACH8A +AAg/AAAJ3gASBxsAAAhvAAAILwAACb4AAAgPAAAIjwAACE8AAAn+AGAHAAAACFAA +AAgQABQIcwASBx8AAAhwAAAIMAAACcEAEAcKAAAIYAAACCAAAAmhAAAIAAAACIAA +AAhAAAAJ4QAQBwYAAAhYAAAIGAAACZEAEwc7AAAIeAAACDgAAAnRABEHEQAACGgA +AAgoAAAJsQAACAgAAAiIAAAISAAACfEAEAcEAAAIVAAACBQAFQjjABMHKwAACHQA +AAg0AAAJyQARBw0AAAhkAAAIJAAACakAAAgEAAAIhAAACEQAAAnpABAHCAAACFwA +AAgcAAAJmQAUB1MAAAh8AAAIPAAACdkAEgcXAAAIbAAACCwAAAm5AAAIDAAACIwA +AAhMAAAJ+QAQBwMAAAhSAAAIEgAVCKMAEwcjAAAIcgAACDIAAAnFABEHCwAACGIA +AAgiAAAJpQAACAIAAAiCAAAIQgAACeUAEAcHAAAIWgAACBoAAAmVABQHQwAACHoA +AAg6AAAJ1QASBxMAAAhqAAAIKgAACbUAAAgKAAAIigAACEoAAAn1ABAHBQAACFYA +AAgWAEAIAAATBzMAAAh2AAAINgAACc0AEQcPAAAIZgAACCYAAAmtAAAIBgAACIYA +AAhGAAAJ7QAQBwkAAAheAAAIHgAACZ0AFAdjAAAIfgAACD4AAAndABIHGwAACG4A +AAguAAAJvQAACA4AAAiOAAAITgAACf0AYAcAAAAIUQAACBEAFQiDABIHHwAACHEA +AAgxAAAJwwAQBwoAAAhhAAAIIQAACaMAAAgBAAAIgQAACEEAAAnjABAHBgAACFkA +AAgZAAAJkwATBzsAAAh5AAAIOQAACdMAEQcRAAAIaQAACCkAAAmzAAAICQAACIkA +AAhJAAAJ8wAQBwQAAAhVAAAIFQAQCAIBEwcrAAAIdQAACDUAAAnLABEHDQAACGUA +AAglAAAJqwAACAUAAAiFAAAIRQAACesAEAcIAAAIXQAACB0AAAmbABQHUwAACH0A +AAg9AAAJ2wASBxcAAAhtAAAILQAACbsAAAgNAAAIjQAACE0AAAn7ABAHAwAACFMA +AAgTABUIwwATByMAAAhzAAAIMwAACccAEQcLAAAIYwAACCMAAAmnAAAIAwAACIMA +AAhDAAAJ5wAQBwcAAAhbAAAIGwAACZcAFAdDAAAIewAACDsAAAnXABIHEwAACGsA +AAgrAAAJtwAACAsAAAiLAAAISwAACfcAEAcFAAAIVwAACBcAQAgAABMHMwAACHcA +AAg3AAAJzwARBw8AAAhnAAAIJwAACa8AAAgHAAAIhwAACEcAAAnvABAHCQAACF8A +AAgfAAAJnwAUB2MAAAh/AAAIPwAACd8AEgcbAAAIbwAACC8AAAm/AAAIDwAACI8A +AAhPAAAJ/wAQBQEAFwUBARMFEQAbBQEQEQUFABkFAQQVBUEAHQUBQBAFAwAYBQEC +FAUhABwFASASBQkAGgUBCBYFgQBABQAAEAUCABcFgQETBRkAGwUBGBEFBwAZBQEG +FQVhAB0FAWAQBQQAGAUBAxQFMQAcBQEwEgUNABoFAQwWBcEAQAUAABAAEQASAAAA +CAAHAAkABgAKAAUACwAEAAwAAwANAAIADgABAA8AAAAgaW5mbGF0ZSAxLjIuMyBD +b3B5cmlnaHQgMTk5NS0yMDA1IE1hcmsgQWRsZXIgAAADAAQABQAGAAcACAAJAAoA +CwANAA8AEQATABcAGwAfACMAKwAzADsAQwBTAGMAcwCDAKMAwwDjAAIBAAAAAAAA +EAAQABAAEAAQABAAEAAQABEAEQARABEAEgASABIAEgATABMAEwATABQAFAAUABQA +FQAVABUAFQAQAMkAxAAAAAEAAgADAAQABQAHAAkADQARABkAIQAxAEEAYQCBAMEA +AQGBAQECAQMBBAEGAQgBDAEQARgBIAEwAUABYAAAAAAQABAAEAAQABEAEQASABIA +EwATABQAFAAVABUAFgAWABcAFwAYABgAGQAZABoAGgAbABsAHAAcAB0AHQBAAEAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAA +AgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAAEAAAABAAAAAQAAAAEAAAA +BQAAAAUAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAA +AgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAA +CAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAIAAAADAAAABwAAABAREgAIBwkGCgULBAwDDQIOAQ8A +DAAIAIwACABMAAgAzAAIACwACACsAAgAbAAIAOwACAAcAAgAnAAIAFwACADcAAgA +PAAIALwACAB8AAgA/AAIAAIACACCAAgAQgAIAMIACAAiAAgAogAIAGIACADiAAgA +EgAIAJIACABSAAgA0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgA +KgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgA +BgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgA +NgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgA +HgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgA +IQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgA +CQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgA +OQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgA +FQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgA +LQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgA +EwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJANMBCQAzAAkAMwEJALMACQCzAQkA +cwAJAHMBCQDzAAkA8wEJAAsACQALAQkAiwAJAIsBCQBLAAkASwEJAMsACQDLAQkA +KwAJACsBCQCrAAkAqwEJAGsACQBrAQkA6wAJAOsBCQAbAAkAGwEJAJsACQCbAQkA +WwAJAFsBCQDbAAkA2wEJADsACQA7AQkAuwAJALsBCQB7AAkAewEJAPsACQD7AQkA +BwAJAAcBCQCHAAkAhwEJAEcACQBHAQkAxwAJAMcBCQAnAAkAJwEJAKcACQCnAQkA +ZwAJAGcBCQDnAAkA5wEJABcACQAXAQkAlwAJAJcBCQBXAAkAVwEJANcACQDXAQkA +NwAJADcBCQC3AAkAtwEJAHcACQB3AQkA9wAJAPcBCQAPAAkADwEJAI8ACQCPAQkA +TwAJAE8BCQDPAAkAzwEJAC8ACQAvAQkArwAJAK8BCQBvAAkAbwEJAO8ACQDvAQkA +HwAJAB8BCQCfAAkAnwEJAF8ACQBfAQkA3wAJAN8BCQA/AAkAPwEJAL8ACQC/AQkA +fwAJAH8BCQD/AAkA/wEJAAAABwBAAAcAIAAHAGAABwAQAAcAUAAHADAABwBwAAcA +CAAHAEgABwAoAAcAaAAHABgABwBYAAcAOAAHAHgABwAEAAcARAAHACQABwBkAAcA +FAAHAFQABwA0AAcAdAAHAAMACACDAAgAQwAIAMMACAAjAAgAowAIAGMACADjAAgA +AAAFABAABQAIAAUAGAAFAAQABQAUAAUADAAFABwABQACAAUAEgAFAAoABQAaAAUA +BgAFABYABQAOAAUAHgAFAAEABQARAAUACQAFABkABQAFAAUAFQAFAA0ABQAdAAUA +AwAFABMABQALAAUAGwAFAAcABQAXAAUAAAECAwQEBQUGBgYGBwcHBwgICAgICAgI +CQkJCQkJCQkKCgoKCgoKCgoKCgoKCgoKCwsLCwsLCwsLCwsLCwsLCwwMDAwMDAwM +DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N +DQ0NDQ0NDQ0ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4O +Dg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8P +Dw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwAAEBESEhMT +FBQUFBUVFRUWFhYWFhYWFhcXFxcXFxcXGBgYGBgYGBgYGBgYGBgYGBkZGRkZGRkZ +GRkZGRkZGRkaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhsbGxsbGxsb +GxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwc +HBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHB0dHR0dHR0d +HR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0d +HR0dHR0dHR0AAQIDBAUGBwgICQkKCgsLDAwMDA0NDQ0ODg4ODw8PDxAQEBAQEBAQ +ERERERERERESEhISEhISEhMTExMTExMTFBQUFBQUFBQUFBQUFBQUFBUVFRUVFRUV +FRUVFRUVFRUWFhYWFhYWFhYWFhYWFhYWFxcXFxcXFxcXFxcXFxcXFxgYGBgYGBgY +GBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZ +GRkZGRkZGRkaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhsbGxsbGxsb +GxsbGxsbGxsbGxsbGxsbGxsbGxsbGxscAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAA +BgAAAAcAAAAIAAAACgAAAAwAAAAOAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAA +MAAAADgAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAAAAAAAAAAAA +AAAAAAEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAA +QAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAA +ABAAAAAYAAAAIAAAADAAAABAAAAAYAAAVPAAEEjwABAD7gAQPPAAECzwABAg8AAQ +DPAAEPzvABDk7wAQA+4AEDogAAA8ZmQ6JWQ+ACVjJWMlYyVjJWMlYyVjJWMlYyVj +AAAAAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAAAAaW52YWxpZCBkaXN0 +YW5jZSBjb2RlAAAAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQg +ZGlzdGFuY2VzIHNldAAAAGludmFsaWQgbGl0ZXJhbC9sZW5ndGhzIHNldABpbnZh +bGlkIGJpdCBsZW5ndGggcmVwZWF0AAAAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0 +AAAAAHRvbyBtYW55IGxlbmd0aCBvciBkaXN0YW5jZSBzeW1ib2xzAGludmFsaWQg +c3RvcmVkIGJsb2NrIGxlbmd0aHMAAAAAaW52YWxpZCBibG9jayB0eXBlAABpbmNv +cnJlY3QgbGVuZ3RoIGNoZWNrAABpbmNvcnJlY3QgZGF0YSBjaGVjawAAAABoZWFk +ZXIgY3JjIG1pc21hdGNoAHVua25vd24gaGVhZGVyIGZsYWdzIHNldAAAAABpbnZh +bGlkIHdpbmRvdyBzaXplAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAABpbmNv +cnJlY3QgaGVhZGVyIGNoZWNrAABpbmNvbXBhdGlibGUgdmVyc2lvbgAAAABidWZm +ZXIgZXJyb3IAAAAAaW5zdWZmaWNpZW50IG1lbW9yeQBkYXRhIGVycm9yAABzdHJl +YW0gZXJyb3IAAAAAZmlsZSBlcnJvcgAAc3RyZWFtIGVuZAAAbmVlZCBkaWN0aW9u +YXJ5AKjwAAAAAAAAAAAAAJ7xAAAIsAAAoPAAAAAAAAAAAAAA4vEAAACwAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAMbxAAAAAAAACvEAABLxAAAc8QAAKPEAADLxAAA88QAA +RPEAAEzxAABW8QAAAPEAAG7xAAB28QAAfvEAAIjxAACU8QAAqvEAALbxAABk8QAA ++PAAAAAAAABZAmZwdXRjALICc3ByaW50ZgBeAmZyZWUAAJECbWFsbG9jAAC8AnN0 +cmVycm9yAABPAmZmbHVzaAAAyABfZXJybm8AAFcCZm9wZW4AXQJmcmVhZABYAmZw +cmludGYA4QFfdnNucHJpbnRmAABmAmZ3cml0ZQAAZAJmdGVsbABiAmZzZWVrAEwC +ZmNsb3NlAABCAmNsZWFyZXJyAADXAF9mZG9wZW4ATVNWQ1JULmRsbAAADwFfaW5p +dHRlcm0AnQBfYWRqdXN0X2ZkaXYAAF0ARGlzYWJsZVRocmVhZExpYnJhcnlDYWxs +cwBLRVJORUwzMi5kbGwAAAAAAADZHd5CAAAAABb0AAABAAAAMwAAADMAAAAY8gAA +5PIAALDzAAAAEAAAEBMAAFASAAAwEwAAYBMAAHAcAACAGwAAgCUAALAkAACQFgAA +YBYAAKAaAABgGgAA4BkAANAYAABQEwAAEEUAAKBDAAAwNwAAAEMAAPBDAACgQAAA +ED0AAJA9AAAQNwAA4D4AAGA/AACQPwAAYDoAAIBCAADgQAAAcDcAAOBCAABAPQAA +8D0AAKBXAAAgRgAA0FQAAEBFAABAcAAAgG0AAHBVAABAVgAAEFUAANBtAAAQbwAA +EHAAAICQAACgkQAAkJEAAICRAAAg9AAAKPQAADH0AAA79AAASfQAAE/0AABX9AAA +ZPQAAHD0AAB79AAAifQAAJb0AACk9AAAsfQAAL70AADT9AAA4fQAAOz0AAD09AAA +/PQAAAL1AAAK9QAAEvUAABn1AAAg9QAAJ/UAADD1AAA39QAAPvUAAEX1AABO9QAA +VfUAAGH1AABo9QAAcfUAAHn1AACB9QAAjfUAAJz1AACt9QAAufUAAMT1AADS9QAA +3/UAAOz1AAAB9gAADfYAAB72AAAp9gAAMPYAAEH2AAAAAAEAAgADAAQABQAGAAcA +CAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8A +IAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgB6bGliMS5kbGwA +YWRsZXIzMgBjb21wcmVzcwBjb21wcmVzczIAY29tcHJlc3NCb3VuZABjcmMzMgBk +ZWZsYXRlAGRlZmxhdGVCb3VuZABkZWZsYXRlQ29weQBkZWZsYXRlRW5kAGRlZmxh +dGVJbml0Ml8AZGVmbGF0ZUluaXRfAGRlZmxhdGVQYXJhbXMAZGVmbGF0ZVByaW1l +AGRlZmxhdGVSZXNldABkZWZsYXRlU2V0RGljdGlvbmFyeQBnZXRfY3JjX3RhYmxl +AGd6Y2xlYXJlcnIAZ3pjbG9zZQBnemRvcGVuAGd6ZW9mAGd6ZXJyb3IAZ3pmbHVz +aABnemdldGMAZ3pnZXRzAGd6b3BlbgBnenByaW50ZgBnenB1dGMAZ3pwdXRzAGd6 +cmVhZABnenJld2luZABnenNlZWsAZ3pzZXRwYXJhbXMAZ3p0ZWxsAGd6dW5nZXRj +AGd6d3JpdGUAaW5mbGF0ZQBpbmZsYXRlQmFjawBpbmZsYXRlQmFja0VuZABpbmZs +YXRlQmFja0luaXRfAGluZmxhdGVDb3B5AGluZmxhdGVFbmQAaW5mbGF0ZUluaXQy +XwBpbmZsYXRlSW5pdF8AaW5mbGF0ZVJlc2V0AGluZmxhdGVTZXREaWN0aW9uYXJ5 +AGluZmxhdGVTeW5jAGluZmxhdGVTeW5jUG9pbnQAdW5jb21wcmVzcwB6RXJyb3IA +emxpYkNvbXBpbGVGbGFncwB6bGliVmVyc2lvbgAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AQAAAPDkABCg4wAQAQEAAB4BAAAPAAAAcOkAEBjkABAAAAAAHgAAAA8AAAAAAAAA +kOQAEAAAAAATAAAABwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAQAAAAGAAAgAAAAAAAAAAA +AAAAAAAAAQABAAAAMAAAgAAAAAAAAAAAAAAAAAAAAQAJBAAASAAAAGAQAQA4AwAA +AAAAAAAAAAAAAAAAAAAAADgDNAAAAFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4A +RgBPAAAAAAC9BO/+AAABAAIAAQAAAAMAAgABAAAAAwA/AAAAAAAAAAQAAQACAAAA +AAAAAAAAAAAAAAAAlgIAAAEAUwB0AHIAaQBuAGcARgBpAGwAZQBJAG4AZgBvAAAA +cgIAAAEAMAA0ADAAOQAwADQARQA0AAAAZAAeAAEARgBpAGwAZQBEAGUAcwBjAHIA +aQBwAHQAaQBvAG4AAAAAAHoAbABpAGIAIABkAGEAdABhACAAYwBvAG0AcAByAGUA +cwBzAGkAbwBuACAAbABpAGIAcgBhAHIAeQAAACwABgABAEYAaQBsAGUAVgBlAHIA +cwBpAG8AbgAAAAAAMQAuADIALgAzAAAANAAKAAEASQBuAHQAZQByAG4AYQBsAE4A +YQBtAGUAAAB6AGwAaQBiADEALgBkAGwAbAAAAHwALAABAEwAZQBnAGEAbABDAG8A +cAB5AHIAaQBnAGgAdAAAACgAQwApACAAMQA5ADkANQAtADIAMAAwADQAIABKAGUA +YQBuAC0AbABvAHUAcAAgAEcAYQBpAGwAbAB5ACAAJgAgAE0AYQByAGsAIABBAGQA +bABlAHIAAAA8AAoAAQBPAHIAaQBnAGkAbgBhAGwARgBpAGwAZQBuAGEAbQBlAAAA +egBsAGkAYgAxAC4AZABsAGwAAAAqAAUAAQBQAHIAbwBkAHUAYwB0AE4AYQBtAGUA +AAAAAHoAbABpAGIAAAAAADAABgABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8A +bgAAADEALgAyAC4AMwAAAIIANQABAEMAbwBtAG0AZQBuAHQAcwAAAEQATABMACAA +cwB1AHAAcABvAHIAdAAgAGIAeQAgAEEAbABlAHMAcwBhAG4AZAByAG8AIABJAGEA +YwBvAHAAZQB0AHQAaQAgACYAIABHAGkAbABsAGUAcwAgAFYAbwBsAGwAYQBuAHQA +AAAAAEQAAAABAFYAYQByAEYAaQBsAGUASQBuAGYAbwAAAAAAJAAEAAAAVAByAGEA +bgBzAGwAYQB0AGkAbwBuAAAAAAAJBOQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAbAAAAGcyUTOkM84z +2DPqM/szDDQZNCs0PTRRNFs0bTR+NJI0nDSuNMA02TTnNPM0AzUUNR41LDVCNVM1 +YDVyNYM1mTWjNbE1wjXpNfk1BzYVNj821DbjNqE4/joHOzA7PTtKO1c72DwAIAAA +IAAAAMkyCDOZNHE3fjeLN5g3zzf6PI49sj3BPQAwAABIAAAA8zDFMekx+DECNV01 +ATYcNkc2TjZ0No42lza9NsQ26TZJN1A3mjf0Nw84aziNOMY5AToOOgA7Nju0PCE+ +Dj/5PwBAAABMAAAAvjA7McMxAzLJMjMzBDQYNCY0LzRONGA0kTSiNMo00zQvNY81 +njUDNhE2kzaaNio3ezcROAM6RzqYOss94T33PT4+3T4AUAAAQAAAAMwwzTKFM5A0 +lDSYNJw0oDSkNKg0wDTENMg0zDSrNbo1YzZxNic4/jgrOXM5tznMOUs+ez/MPwAA +AGAAAGgAAAA3MJEx1zEuMj4yxzTXNOs0ODURN6k4MTkBO2M7+Dz8PAA9BD0IPQw9 +ED0UPRg9HD0gPSQ9KD0sPTA9ND04PTw9QD1EPUg9TD1QPVQ9WD1cPWA9ZD1oPWw9 +cD10PXg9AAAAcAAAGAAAAFszYzN5M4czhjaWNqA2AAAAgAAAIAAAAPMy3DTiOec5 +3jqIO5s7ITwvPNQ84zwAAACQAAAsAAAAuzDLMIExrDHMMecx4Do9O0k7/z1XPuA+ +BD+nP8M/0z/yPwAAAKAAADgAAABAMKUwrTCzML4wyzDTMOEw5jDrMPAw+zAIMRIx +JzEzMTkxWzFtMckx5jHzMQAyAAAA0AAAHAAAAKAwrDC4MMQw0DDcMOgw9DAAMQwx +AOAAABwAAADYPdw94D3kPeg97D3wPfQ9+D38PQAAAQAUAAAAFDAYMCgwLDBAMAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +} +} \ No newline at end of file diff --git "a/src/Utils/UILogToScript/\320\234\320\260\320\272\320\265\321\202\321\213/\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260_\320\222\320\275\320\265\321\210\320\275\321\217\321\217\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260.txt" "b/src/Utils/UILogToScript/\320\234\320\260\320\272\320\265\321\202\321\213/\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260_\320\222\320\275\320\265\321\210\320\275\321\217\321\217\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260.txt" new file mode 100644 index 00000000..795967d5 --- /dev/null +++ "b/src/Utils/UILogToScript/\320\234\320\260\320\272\320\265\321\202\321\213/\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\321\201\321\202\320\260_\320\222\320\275\320\265\321\210\320\275\321\217\321\217\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260.txt" @@ -0,0 +1,1604 @@ +{1, +{#base64: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 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0KMDAwMDAwNjAgMDAwMDAw +NjAgN2ZmZmZmZmYgDQoQZRGCe0ICABBlEYJ7QgIAAAAAADQAZQA5ADMAZgBkADAA +OAAtADUAZQBkAGEALQA0ADQAZABkAC0AOQAyAGUAZgAtAGIAOAA0ADgANgA3ADIA +OAAzAGIAMQBlAAAAAAANCjAwMDAwMTk0IDAwMDAwMjAwIDdmZmZmZmZmIA0KlZI9 +jpQxDIb7lfYSW3+W7NhJnOPEjnMAJKrVSIiKDomKijOwBRL/XCFzEq5AZgeoKBYr +slK8fvzGzs8vP+7puL25l2g8ByrkGB1ExoCWYoKpaKlJ2ShOx6PUWZnCFYaODDIb +g/aUYDabPbByqvOiu3KPIZFzMMO0OkFUAsxnhdTLKLVmJsaDiBLmaqDJDaROByOb +0F1GJgs1tAsO/4LxwEPFSYkUahUBoUrbb5kQBbM0sYTKp+NuvV1fz6/Xm/VtfTi/ +uuT1ab1bD+cX6/16WN/PL9fn9fHuir579vzuySX/Ad9+T7c3p+0ZKaIkKGoKwtFB +Kyugo7q5esNtYut/B/wj/YnTIRfTyTwmDgJsSkA0CljbcMSMtjfSWx67+0XKo0dH +KlCaVZAYAk0yA6XaiLimGeVIBxl3HjghDy97HaFgfWNZHVs1RxxyzFk4JlXwXnGz +kkBXGuDM7KkWJ5LHpiMbxv5XkHIZsN/v0JwL7Hr0Pof2sls+aTKPvPBiliOD1b6F +o+5beIOSlbD20prP67Sv5xcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCjAwMDAwMDYwIDAwMDAwMDYw +IDdmZmZmZmZmIA0KEGURgntCAgAQZRGCe0ICAAAAAAA4ADQAMAAxAGUAZQA2ADIA +LQA2ADgAYgA4AC0ANAAzAGUAYQAtADgANwAzADgALQAwAGMAMAA4AGMAYgBjADgA +YwA5ADAAMQAAAAAADQowMDAwMDBhNyAwMDAwMDIwMCA3ZmZmZmZmZiANCpVPQQoC +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 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCjAw +MDAwMDI4IDAwMDAwMDI4IDdmZmZmZmZmIA0KEGURgntCAgAQZRGCe0ICAAAAAAB2 +AGUAcgBzAGkAbwBuAHMAAAAAAA0KMDAwMDAxYTYgMDAwMDAyMDAgN2ZmZmZmZmYg +DQqNkkuKHTEMRfdS41LQz7a8HEuWoSf9QncIhJCVZZAlZQvRm2T8JgWGsnzOvfr7 ++89Puonv67p10ZidDWieAerJsGQKIJnvg/P4pPsilyUbD7QdHXSkga/dQSxwDg/E +rdedq0sMddDWA3SGgLdZA20QelstXV6b9QWvG0V2TdwQ4gy6+gI7vuvTpouq5cD7 +0pxyNhq03AtU94bJecBNrQ82ccrr9kE8ZW3wI4UXDcHEGKbQQe6hyEVmipTZGbq5 +gUrWi0MMMNDCw2IilaX1mDI34DnF70pgaAta+FYOEdz82qynpTCZLh/AXU8FNwfM +PRgyqSdzqEaRxePrj7f387hu5mZ1gyCLApR1gJcb7FC3g5V+j/sqMslDA2INBE3W +KoGeUYoEjx5E1ZdQYLc9YVBVpUQdLFs1ob3KcsIxXpz1NOmqK31RQZ0ik0GwanlA +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 +p9By3C68i69+42t3v96S6enRyrj1lUWiL+NynIavtrVFJDZdrq7q0Nj6pdd83L2s +yd2m/MZr1kK9TaQ8ky4F7g4zCY673zYyk5zCWQwejTr1but1zxyN8yWGVXoancyn +1C2JdCtPb/ZbSRrw2Ho2lKue2ZizrESEaYWSLHZbpXZpzSrOirzTdgUKLF759hnz +7VXEhsbCE6mda6Sye3bmVLlekP3i8vHiVa8QjkQfpixW3EU9Es+HI+5sgYI2CPbw +xvtnhcKLB7IVcvdqSNzjuhDXfJq78uXbotHufct7X3G2NrdErxtoHZ/Kf+3hG9m1 +7LlI5aGdsiXf+kNz/EKNi8SG7NiP+Xvxzj/TZnWz58Twz6dS4z2znada5r0pGxpo +InsGONI/N3O3W0eybKnKZ9akyLpnfBdxatxs7Gn6KtRXd6NXU3a3XVunG2ev/ph2 +h7pVdnlWTWpZz4GGPOOR+UKC5JeKipiq0meExHyrG1cLZLCkxtJE1vbnq216rO+7 +d0qvDXfLL95IqWaS8HA4o+Anr17JWXA5juuRRC/WLnaUSRH1fwOihPhhZ5LyIytF +BZYamuuGydD90Rl2258kGZizx3Q+NS2raooZHp2p65x8w2VeeHtzRHZhnGJkaoNk +ylFLgaqNfNKdVi3+k3tOG4xStrVnrxUaKlRvL0yRTIqKxO5IkTgsloVceDWjmHO+ +jpTl4BA6JEmjzffqGbSm8tg9vyITdfaNcNpJvFFeBiU0q/JG//D4u8aJYZnInkfU +vJqum9kODh/SjAxX1Xv7ec757872JmqO2snj1+DYOH00JAUmSEa9eWwOjwOs/T8R +qN6T3yfky+5VEa+EJEgeV01nO/WjPE20NDaKJ6wna6XGaJ7OfNhEUKXJsNd+iRoD +HfkeW6x52JhhhPPIUUXzqseS1q8wMcJn9Mt4YiOHpW9UdWrc565J1zCbLFsen5HE +8SIpVhCH1NubENs3nHCe8X1m1R9q7VBWKkxLv9qmF3ssmScpwSKlvYc/q/5J80z/ +x8S6ma/27c6BUkNh3j2F1vppUeY7bAV4RMSlhXm7/DVkLhhIkzO856hDdkP7VuLq +bFw1GrdczU7ADKTFiC2vz1BxmiuXv9svc+dzo16BYqRAGi0PF31LxqT2vbBV42qj +iB8eodSBb2F6SkUmMqRgCZyUmrwAy5dyq035sSZb/XuoYcTRCKefE0Pv7lfN/dyX +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 ++fGw5fCVB/zDZ+s23818Fl+T9rR27+NaTv7xekO24OfRPusbHrQsecFUophwN0n/ +lM9s6GmFdWsTR1aJJ93QvZjsan3r7Ir3X870HaxJK38ylRpxp+GihmDSpZmwyymF +fjLnQrGCF4hlG89PNO2PPa5GOLnJkS2Ou39XfMMJz5iDlz6eWPf91XEW08PHHksX +Rp53PXbYluf+waU5Q4e6u5qiEuutj1jecDkqKqYV/TKQO2ugMT0TX5p8043lxa1r +vtPZH/bsu7taYNMdv9sCt+88XpkxfkjshsoHpWsh23ZfL9IzSJ9aXX1Za/3E1X1z +N69UJl8qrA5qLGAVf3dPP6Oy6PDz43nPX3Hl8+Zq55ryOuecoG4ra1/hUSps4lhs +9Y21JOEisbwnpqBCsi/yvt2ursoU1U8LvxFf7k69iXt6QqDw7ud452Qb9Z4x5ZXe +jt2X2jVKagpWje5nN4/xq+hzbcccxWxsu1/8xavjdV9vqIqtC992C3GbtOHrhJkZ +vjShdbenAnr3Pnjq/iTjTkgg+/rnL/xkz9454K/ILyasd63ox1GxxtQlDcNyV4Li +1+U8xt9mDzeuTVe+qysW93Qnh7Z7Yd5RpFHJQsMz+aMj15EdYwPkt8lHqdFHm15r +9RU0xJvbhaqs0ns/yBe91Tb0jf6nDu4py/seYwpTl02S06rtVhDkB1JtzA+Y+n17 +8pU98aV+xn6f2QdiammNW2KlixTSksRq5OQPpJfOGYszGeD38U3Gn840Gf5+QciW +LJ2pZ0uUOnXv+OXvLUK7G7xuP8vkrTzA1s/6yClqV7p/85CkaNFkVvEOM+Fenaaq +d0c8Iw727a1T4nkUauJdx817JSjX4wmF5cnqzuJ0M0O/lK+zLfOnPrtZRGzvUpfg +KZHbfA+rv+pazuhjSa5jVw+9ylmi6d5+QKF5T0Ki77JJbdnvzJHnT7klKOkdW51o ++6nA0Mmaa4qNuHRzZu+N8YbSn6d7PxqtLT5ufUHU/aOcP1PAmElZrZlSz6vpgwSX +De+2eeulX2yJfDL9kOQhGhbDGzjooF5n32+RvcV6Xv/bcMrK7BPHgkTUR0VYDutP +levKXVo+skzm3LY9Bif62u+q2Oc8+7Tjnva2t027jC0icuY/ir901l5O6zpqhHuq +PPLOPy7u8KpPqa2nLKdzDw9ud9SyJWplxOMil6n4DnFHP2Qv1LrhU6Hffw07G/1Q +1HS10t2vWzYqr9g9EZPKn5SiULkHn9wptWeydtMDk+y1zXOYB14Gbte/J+2SNJfX +DHNIS0p+Kz3+ZbO3OPZre4TTO+emOMeeex+qcHFbwwtH1D0Qo87G8uXlx3qJ7wku +2+NXtE1TznulsrBV3Ki4j3nYcafAlyTMjrOSCtxy/vqL1fNFe6P5eZ/0B5/m63wu +f7syU0Oc3+jg9d3SHY/dQpzCMXyBDdk/nwXVXrC5Nr5iVCzJeO6OZtYG/l31uzd/ +Zn0xftyl21A21nXKYHhaKczSIHGpqpVsbteH823386cfj3BuuHxSfIzH+bKZJ5vO +BcvKKDnSq6TT59TWrv1pIWtdci51uGf2pEOAgGq/SGgWae0L/hjTW8x6QxvKIg/h +3/Ql7N5p/03QdGTH3Pg23RTaYdblrboUw8cnXtyMUM9qaDtgoOH7SNZh3+7j+dXP +PrftkGrz67+cyzEhtHRwU2bYIcE6z/ZboTx5JVWX7TERjzUvZv08KCN87i1M/znj +JC19o91EMnS7AqrW+PWsOdNSYopjOTSWWzx09iq36V6J3LVL1zfrmvzw3aE48urb +I0v3hBv1OVnLgrlehLuVUM70YFnH8a5UNxolmIpf+EIAfr2ff1igp7tHMPpVXDVF +ZQJBDb+RSvFVpPmF+OONKZ40Whj+9+8nEOQRPhaEBWEH9NegcSzCB9ZinBXBw7YY +Z4H9sBEQPnZQdP+v+EHYFuN49Hf5MGgcjTFhEJbFOBMG4nxo/Nf3FtDv354AnNAv +5LJbAHyIEHsQIsAGKez+AAFBcA8QPjYOiDsBcNq49MU/pGKHWtj1we6DdFaI2wJi +YJ9CBNm0Ib4H0AC7EeFn44e4B7AK7BxQKID9GGAC9hjkZ4G4NSCECLO/gfwKEA8G +VCH9KeTnhrgrIAN2Jih6fBRgCPYw5EfLswckwU5BhNisIL4P0AG7A65HFOI0YA3Y +xaBcwEnADOwpyM8M8a2AANR/FeqXhjgM69iVIb0a6ueEuDOwAuxroEzAYWAd2IOQ +HxqQ3Q5YAvYZqH89xMMBLbBboX5BiHsB8mAXgKLtGQNsBHsS8mMhvh0QQfThUgTZ +oHfYdwMkSK+H+nkh7gbIgn0bFG3vaMAI7I+QHwfxXcBSsC9C/S4QjwB0we6G+iUg +7gusBbsclAeIA7aAPUvvf0uAH64/kt7/AQAR0qvo/U8BloN9BRQDHAIMwB6g9/8O +QBzs0/T+DwM0wW6m978nsBrsPFD0fI8DpmB/off/NkAYPsBMmMX+DwHUIP0Zvf+p +wEqwb4Ki7XUE2AD2e3r/OwBSYJ+n9/9+gAx2F73/fQBFsEtB0fJg2s6+GewZev+j +eQTh+h/R+z8IgH7APab3P9qmsB93AxQ9PhKAfsYN0ft/JwDtjEui9/9eANoB10bv +f28Argt3DxQtDzyPfRPY3+j9bwOI/tb/oYA6pL+g9787IAd2Niha31HAGOzP9P53 +BKDfcKn0/j8A6IHdQ+9/P0AJ7EpQtLx4wBzsn3/w/4cM/n+Zwf/7Gfw/gcH/mxj8 +P5fB/8f/4P+1DP6fxeD/Iwz+f47B/zsZ/L+Ewf+n/+D/NQz+f53B/98y+P9ZBv9/ +yeD/hQz+//UP/v+cwf/vMPj/Jwb/v8Tg/68Z/L+Cwf/n/uD/jxj8/yqD/79h8P9E +Bv9vYfD/fAb/n/iD/9cx+P8tBv//wOD/Fxj8/xWD/5cx+P+PP/j/Ewb/z2Dw/3cM +/p/M4P/tDP5fxOD/3//g/w0M/n+Xwf9HGfw/jcH/exn8/z6D/88jfFgMIorFYASx +/IgEFsPHj8Ui4lgMizDWAJHCYvT5sMyIGBbDJIRdjkhiMXgBLA5ZgsWwi2APIfpw +6nxYJsh/CPKLo/nF+LFsaH5WYSwFze/Eh2VB8zMLYYlofoIAlhvNzyWCfbiYH+FH +0JdXsSNsCA7GOxww/uGEsQ4XwoxwI0wID/r3YP+MU/4Zp/wzTvlnnPLPOOWfcco/ +45R/xin/H49T8J6+f1oP2kwJ9MYbuNKogXj0b6LRFR9WKJUdyuWAMrmhHH5EEBFF +JJBliDSigKgg2sh6xApxQYKQSOQq8gh5gyz8NgmCLK4J/bbx0zcB+iZI34TomzB9 +40NqkeqFv8tmop8Del3ckFMcWY4QEQOEghxCHiIYzCEMhgnDjGHBsGLYMVwYPowY +Bo8hYPQxTr/X/6vOX3WhdYjAJgqbGGzisC2BTQI2SdikYNNH9P/49zsYBpgYYGaA +hQEsA3+qh7FcxnJY6bDRYaeDo8NBh5MOFx1uOv9uYPrt7+j5+AXAzXCsHFhOFi5m +biYeDC/UxY6cBMyAemANcBugAR8BSeAiYA90AzpAObAPmAWYgMPAOqAKWAFcAZyB +AQBqRE4DW4FmQBnIAwKBLwAHEANsBJ4B8sBNwAt4DywBzgN2QBegBZQC4cAMwApE +A0bAY0AWuAG4AUOACJAEbAfaABJwD9gNfAN4gDhgC/ACWAtkA77AZ2ApkArsAnoA +XaASiAB+AhjgEGAAPASWA5cBCtAP8AMJgCXQBBCBXCAAGF/wYXbkOGAK1AKrgSzA +ExgBxIFzwA6gE9AESoAwYBrAAkeADUANsBK4DlCBt4AwcBbYBrwE1IBCIAT4CnAD +scBm4DmgCNwBfIBPgBRwCXAAXgNkoALYD8wBgnAFghgckgiaCGoFagXaAtoCqgKq +ApoPmg8aBBoEOgE6AcoJygl6AvQE6CbQTaB1oHWgCqAKoLdAb4F6g3qDfgD9ACoB +KgF6AfQC6E7QnaCvQF+BaoNqg5aBloHuBd0L+gP0Byh6F2MDPQp6FNQY1BgU/YXd +J6ByoHKgGaAZoO6g7qDvQN+BioKKgiaDJoPagNqAtoO2g6qDqoMWgRaBhoKGgn4H +/Q7KC8oLGg8aD2oOag7aANoAqgSqBHoX9C6oH6gf6CjoKOgy0GWgaaBpoI6gjqC9 +oL2geqB6oPdB74MeAD0AOg86j8Et3Bn0ATzgBPABFgAB8F94yrAhJsAqwAMQA2wB +DWAPwAIYAjKAKyAEWAOqQDDADCVEAuuBR4A0cBVwAd4s3AnR/7/ALnySxQD0ySIE +cAGSABMgAKDPzyULTz4s+DQW/BYLvokF/8OCj2HhauD5DqCbMMANSAHMgODCsxcL +nxX0qYWFPoM7M4aJmYUFi2WFwAaBnR5w9MDBEDgZAtcfAvcfAs+/GXj/zbDwNBAQ +FBSCIAxBhB5E6UGMIYgzhCV/CBJ/CJL/ZpD6N8NC/2NZ2dAeR3v3V5/9als+euCn +BwF6EKQHIYYgzBBEGIIoQxD7QxD/Q/g3218S+W38wvzbmIX1t3EKB30swrMwbkN/ +lQoBH0UQNDP6n5LomwdhNo2gbxxER2YW6Lob4I++PQVAfw7rAdD3vxk7/V4vK70+ +Lno9YvTyCfRynejlPaBnPvh/UYD1GMJnAjB/Rvh0QNcAeIALmIXpxuDoYpoW5NNx +c9Va6aqLrHT5jxt6Cv/1+4uQ/+S9R3/v/z95V1IQPoga/J/mWUz9lebsGYynlxVI +9adSfs+38Aao3zOh7waC0/Wh+Ib9yuQX+PepBoX5OPvRgv7KHxTsF0iFKmh+Lt6/ +yvm9DRYTgsP8qeg+F7/AQKrLX2fj4kFFG+Tv/a6UYMqvvQjiQaW4wqTGJdAF7+MZ +5EMJdvFAQny9ff1CffH0NJgbuf913r/qDPX0dfULxQd5hlP/Ot7Fz8c/kBoU5Onn +i/ehBnv4uf5e76+a/j4fH39KsKczjYrfTQ1EM6HlO4e4ucFR1MBAv8DF+oJgj6eL +J9U3GAr18QsMQxaugH5EUHAgleLz9/FunlAeQ5ovnIcvlYp2rEsw1EOBMjLH/vaF +1HH46OaAr/y2bwB9t0DOf+/7CXYwufmHBLsgeUxB/oGevsFuyC4mt0Aq9GoCkw+F +Br2MIOVM6FUtXp85k5sbLSTIA0GeIo6wzxem4jZMbn7+VF/EAc1JcUVsoczFsvox +jruDfOkG4sbkhr6ADMp2ZXILptJoiDOTWxCV6o2YMbm50PyCIGUdkwuNSkFrQ2As +5ejmulDyZqvt67dar3WFLDBqcvT0RV9jFugDI1RHiqtXSFAwHOi5G4HRqqFnEAW6 +19oDPRMzT+dAaPj1cB1ByKYNW7dsMFNRXiwFDZ1SPetQFZlcvDep0BH7giCDQM7E +4n2FTxDucTCpJ4A6Af5wIzwoAayEY2QQ5JQI7AfSl4ACfeII0gj3Igs4lm8D7F8P +edWhLNAxIB3uTXxkyAfwwf4+XcinBzbgpAXlwln1wTH+aBrE9eG4MSDdBm5vRlC2 +NeyDcvXhhnvQB47bBvHtUBZoI9h80Cd8aNopyJMA5QIHATxc5yqACGgDpoA5YAO4 +Av7AXuA4kARcA3KBSqAF6Ac+ApPALMD0FT6PgAAgDuABOYAAqAO6wAZgC7ANoAAe +QAAQBhwCYoGLwB2gBKgGmoFe4COA+QbzYWApsBogAAbfkH9Zkfh9VYQLRoA8MLpe +XIcRXFhhEFlYWxBfWFVAVxSWwugZDzO2FTAqlYGZkyyM9lfBDEweZh1rYCa0Fkbf +BJixKSPhNE9n4sIHhoKuw6goI7/uN39F/t61zi8EvB7uanAY/ds+v3QxiW6gaz2/ +4hv+3m0KH2plx9+tvwwLSiDFJ+gvK9DT56+St1LRmyTdsKIGG/59u3GnBjvC2TgG +ow6BuIf/5VhoFHU29/BF73IPp/q5of8uuLh7+KKDu4dDAS6LEgRCP5TuzBAJWUgF +QVMXHB8V9CYNkQW3RiXYf/Hk3cMXPN49PMSXXu7ivYC+DvZL16GP0t/iaAP9Zi42 +C33HQkPS478dR2/I36y/jMXWohv/2lq/dob5uvwet/CDy4WnzV/9Hr5hoZXQT8Z6 +2Ae3fiP0WbWwY/vfz5R/wv/sgD4P0B+LQH+PAH0hF/q7qui6LforEuh79dFjltLf +UYmGU/R9gvRxNNM/Tfg/uvfp04mDjPsxi9OL/7AfB/MRE3TKwYdBNJj/Y4kazOg7 +1rcjVogj/LsB2QoxU8Qc2QK2KfxrBHE0VLCM/lx8ti2+CfWX6tHLYVlI+9eQxITm +sEKCkUDEE4GbNJTmidAQKpTsi7ghMBxAAheOISCqgOaCbkDQM3KFTzHmr+MNAXi0 +LZTjD+V5Qt7F21k4pHsizvDcdEUokEKBmAuk+sBxgQu5guhH4+lHBsIxgUgY5F0D +T+i/69gOBP519MI7suCJqwygYy9VeIpjFs47eOE4XyiFBu1DgZqov50HmscV4uhQ +bh+C/ky4GaS7Lxy9Hkr2h5rRq3BHPJDghTnrenjC4yGfJmxq8JRXhlZA2wGPbISc +FKhJEfL6ISGQF48Ywx7PhfLDwJIFNi9cjzfEDBZqRs8O/V1m9HzN6XV50s/317X6 +/pfnLb+wjmUBef1gXwi0Z/BvV/p3noXv/y604b8ey9iSv7fjYbhGzEJL+CyUh7Yn +OoEzhHYyg2sIWrhOf0gPhBQ81BK2cGU0el+i7eG6UBseeoOy0Nf+kBa88KlYbBFj +eguhOfBwNn4LFmWhLmShLvQzt32h3f7jJxKBsRc6ibde+KT4Qhm0hU/W358LHMsg +y3+by4PDo33irmypck3lhUqHynuVHypcquKqCqpkVUvVnao+qhGqp1UvqmarPlDt +VH2nOqHKrCaktlRtjdo6NSs1J7VAtUi1c2pX1XLVqtRG1KbV2EjCJD1SK+kN6bLG +Ty02bYI2WXujto12hw66RoEuU9Qqs6ucUw1Qj1A/oZ6i3qA+oxNHziM/JKM3GPRe +MkGoIY4Qp4hMag5qGJIkyZi0hRRMiiMlkypI1aQRkqm6hfp59Ul1Xg1vjViNx5oY +LR4tRJukXaCzXJdHb1oPXQMxg3IqCdrER0Rm5VplFRUWVTFVWVUl1S2qTqoJqldU +n6m2qCqpxaulqjGT+EmJpPMkefW96vwazFrGWiladeR+8neyru5rXXSRB11SqSc8 +Vz6ickr1jGoKtEW66jXVTGiPatWnqvWqt9RK1VxIASQ5jZ8aCppBmkWa9ZqbdPfq +1estrsV4oO/AISQQ24lrlXWVn6i2q35Q1VDjV8/SIGpitF20p3RmdRAyC5mdzEXm +IwuRxciSZDxZhryKvIZMIKuSNcg6ZH2yIdmEbEa2IFuTbcn2ZCeyK9mDTCP7k4PJ +e8iLi1DoMtBOFReVMJWjKtGkJFI6aXEhCW3zCeVu1QHNd5o9Wse0L2gv11HSadV5 +o4M+wNH7FIKUEeoIh4i3ifXEd8Q+LbK2qfY82Ua3T5dFL0PvkV6L3he9xQWuhbUv +wnXCHUI+oRLytBD6CUOED4Qxwg8CO1GAKEdUIWoSdxJ9iLXEIeIEOpmAydniGlo6 +4TahmFBNaCR0E4YJkzDV4CKii2VoWge5m9xHHiQPkz+Sx8iT5CnyLBn1InQNTogg +RlhFWEPQJ/zzhP5/Hf4X} +} \ No newline at end of file diff --git "a/src/Utils/xddGuidShow/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Utils/xddGuidShow/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" similarity index 100% rename from "src/Utils/xddGuidShow/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" rename to "src/Utils/xddGuidShow/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" diff --git "a/src/Utils/xddGuidShow/Form/\320\244\320\276\321\200\320\274\320\260/module" "b/src/Utils/xddGuidShow/Form/\320\244\320\276\321\200\320\274\320\260/module.bsl" similarity index 100% rename from "src/Utils/xddGuidShow/Form/\320\244\320\276\321\200\320\274\320\260/module" rename to "src/Utils/xddGuidShow/Form/\320\244\320\276\321\200\320\274\320\260/module.bsl" diff --git a/src/Utils/xddGuidShow/ObjectModule.txt b/src/Utils/xddGuidShow/ObjectModule.bsl similarity index 100% rename from src/Utils/xddGuidShow/ObjectModule.txt rename to src/Utils/xddGuidShow/ObjectModule.bsl diff --git a/src/Utils/xddGuidShow/maps.txt b/src/Utils/xddGuidShow/maps.txt new file mode 100644 index 00000000..7d6abefd --- /dev/null +++ b/src/Utils/xddGuidShow/maps.txt @@ -0,0 +1 @@ +Form\УправляемаяФорма\Форма.bsl-->92eac85b-2ca6-453b-8e22-0f36d0ea780b.0 (219, 239) diff --git a/src/Utils/xddGuidShow/renames.txt b/src/Utils/xddGuidShow/renames.txt index 09db2da3..534d7e2d 100644 --- a/src/Utils/xddGuidShow/renames.txt +++ b/src/Utils/xddGuidShow/renames.txt @@ -1,13 +1,11 @@ 44cb9069-2878-4703-b01b-33aa08c11930-->und\44cb9069-2878-4703-b01b-33aa08c11930 92eac85b-2ca6-453b-8e22-0f36d0ea780b-->und\92eac85b-2ca6-453b-8e22-0f36d0ea780b -92eac85b-2ca6-453b-8e22-0f36d0ea780b.0-->Form\УправляемаяФорма\Форма.txt -92eac85b-2ca6-453b-8e22-0f36d0ea780b.0-->und\92eac85b-2ca6-453b-8e22-0f36d0ea780b.0 92eac85b-2ca6-453b-8e22-0f36d0ea780b.0-->und\92eac85b-2ca6-453b-8e22-0f36d0ea780b.0 a336df50-4fff-4b45-98a1-a69ce7ae23f3-->und\a336df50-4fff-4b45-98a1-a69ce7ae23f3 a336df50-4fff-4b45-98a1-a69ce7ae23f3.0-->Form\Форма copyinfo-->und\copyinfo d3dfaee6-6db7-4643-bc26-98aab6f9dd78.0\info-->und\d3dfaee6-6db7-4643-bc26-98aab6f9dd78.0\info -d3dfaee6-6db7-4643-bc26-98aab6f9dd78.0\text-->ObjectModule.txt +d3dfaee6-6db7-4643-bc26-98aab6f9dd78.0\text-->ObjectModule.bsl root-->und\root version-->und\version versions-->und\versions diff --git "a/src/Utils/xddTestsConvertIntoRebornFormat/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/Utils/xddTestsConvertIntoRebornFormat/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" similarity index 100% rename from "src/Utils/xddTestsConvertIntoRebornFormat/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" rename to "src/Utils/xddTestsConvertIntoRebornFormat/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" diff --git "a/src/Utils/xddTestsConvertIntoRebornFormat/Form/\320\244\320\276\321\200\320\274\320\260/form" "b/src/Utils/xddTestsConvertIntoRebornFormat/Form/\320\244\320\276\321\200\320\274\320\260/form" index d25182ed..3736c6bd 100644 --- "a/src/Utils/xddTestsConvertIntoRebornFormat/Form/\320\244\320\276\321\200\320\274\320\260/form" +++ "b/src/Utils/xddTestsConvertIntoRebornFormat/Form/\320\244\320\276\321\200\320\274\320\260/form" @@ -1,5 +1,5 @@ {27, -{16, +{18, { {1,1, {"ru","Конвертация тестов xUnitFor1C в версию4 из формата версии 3"} @@ -7,14 +7,14 @@ {09ccdc77-ea1a-4a6d-ab1c-3435eada2433, {1, { -{10,1, +{13,1, {3,4, {0} }, {3,4, {0} }, -{6,3,0,1},0, +{7,3,0,1,100},0, {3,3, {-22} }, @@ -32,8 +32,7 @@ }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0} -},21,0,2, +{1,0},0,0},25,0,2, {0,3,1}, {0,6,1},2, {0,2,2}, @@ -41,38 +40,56 @@ {0,2,3}, {0,3,3}, {0,6,3},0,0, -{3,1, -{3,0, -{0},"",-1,-1,1,0} +{4,1, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""} },0,1, {1,1, -{3, +{4, {1,1, {"ru","Страница1"} }, -{3,0, -{3,0, -{0},"",-1,-1,1,0} -},-1,1,1,"Страница1",1} +{4,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""} +},-1,1,1,"Страница1",1, +{3,4, +{0} +}, +{3,4, +{0} +} +} },1,1,0,4, {2,8,1,1,1,0,0,0,0}, {2,33,0,1,2,0,0,0,0}, {2,392,1,1,3,0,0,8,0}, -{2,259,0,1,4,0,0,33,0},0,4294967295,5,64,0}, +{2,259,0,1,4,0,0,33,0},0,4294967295,5,64,0, +{3,4, +{0} +},0,0,57,0}, {0} }, {3, {e69bf21d-97b2-4f37-86db-675aea9ec2cb,2, {2, { -{10,1, +{13,1, {3,4, {0} }, {3,4, {0} }, -{6,3,0,1},0, +{7,3,0,1,100},0, {3,3, {-22} }, @@ -90,15 +107,14 @@ }, {3,0, {0},4,1,0,00000000-0000-0000-0000-000000000000}, -{1,0} -},8,2,1,0,1,1, +{1,0},0,0},9,2,1,0,1,1, {5,ed01fa45-2335-4c14-a640-86e38fddc832,12,1,0,1, {5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,0, {0,0, {0} } } -},b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,9d0a2e40-b978-11d4-84b6-008048da06df,0} +},b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,9d0a2e40-b978-11d4-84b6-008048da06df,0,0,0} }, {8,0,0,400,25,1, {0, @@ -132,14 +148,14 @@ {e69bf21d-97b2-4f37-86db-675aea9ec2cb,3, {2, { -{10,1, +{13,1, {3,4, {0} }, {3,4, {0} }, -{6,3,0,1},0, +{7,3,0,1,100},0, {3,3, {-22} }, @@ -157,15 +173,9 @@ }, {3,0, {0},7,1,0,00000000-0000-0000-0000-000000000000}, -{1,0} -},8,2,0,2,0,1, +{1,0},0,0},9,2,0,2,0,1, {5,446869d9-b94d-4b96-9a69-26db4a727003,3,1,3, -{6,15082afb-9836-4847-90b9-46954d7dc19a,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, -{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0}, -{6,68c603a3-e31a-427c-88b8-492d345a62bc,1,fbe38877-b914-4fd5-8540-07dde06ba2e1, -{6,2,00000000-0000-0000-0000-000000000000,142, -{1,0,357c6a54-357d-425d-a2bd-22f4f6e86c87,2147483647,0},0,1},0}, -{6,8d65addf-45e2-4e95-ab96-6b0df61bfe94,1,e1692cc2-605b-4535-84dd-28440238746c, +{6,93562579-671f-42b5-b855-1450bf6d6215,1,e1692cc2-605b-4535-84dd-28440238746c, {3,"КнопкаКонвертироватьНажатие", {1,"КнопкаКонвертироватьНажатие", {1,1, @@ -177,18 +187,23 @@ {1,1, {"ru","Кнопка конвертировать нажатие"} }, -{3,0, -{0},"",-1,-1,1,0}, +{4,0, +{0},"",-1,-1,1,0,""}, {0,0,0} } -},0},1, -{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,3,8d65addf-45e2-4e95-ab96-6b0df61bfe94, +},0}, +{6,e5acf1ab-09d1-4e16-acc9-c30b8e4aa29f,1,fbe38877-b914-4fd5-8540-07dde06ba2e1, +{6,2,00000000-0000-0000-0000-000000000000,142, +{1,0,357c6a54-357d-425d-a2bd-22f4f6e86c87,2147483647,0},0,1},0}, +{6,bfa336b5-b229-4494-a2a5-a02a20c315f2,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, +{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},1, +{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,3,93562579-671f-42b5-b855-1450bf6d6215, {8,"ОсновныеДействияФормыКонвертировать",0,1, {1,1, {"ru","Выполнить"} -},1,446869d9-b94d-4b96-9a69-26db4a727003,1,1e2,0,1,1,0,1,0,0},15082afb-9836-4847-90b9-46954d7dc19a, +},1,446869d9-b94d-4b96-9a69-26db4a727003,1,1e2,0,1,1,0,1,0,0},bfa336b5-b229-4494-a2a5-a02a20c315f2, {8,"Разделитель",0,1, -{1,0},0,446869d9-b94d-4b96-9a69-26db4a727003,2,1e2,2,1,1,0,1,0,0},68c603a3-e31a-427c-88b8-492d345a62bc, +{1,0},0,446869d9-b94d-4b96-9a69-26db4a727003,2,1e2,2,1,1,0,1,0,0},e5acf1ab-09d1-4e16-acc9-c30b8e4aa29f, {8,"ОсновныеДействияФормыЗакрыть",0,1, {1,1, {"ru","Закрыть"} @@ -197,7 +212,7 @@ {0} } } -},b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,643ced3a-fa90-4cfa-855c-4e77e8a13ad8,1} +},b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,448e7628-a6c8-409f-ac77-3fe93138ebc4,1,0,0} }, {8,0,267,400,292,1, {0, @@ -232,14 +247,14 @@ {09ccdc77-ea1a-4a6d-ab1c-3435eada2433,6, {1, { -{10,1, +{13,1, {3,4, {0} }, {3,4, {0} }, -{6,3,0,1},0, +{7,3,0,1,100},0, {3,3, {-22} }, @@ -257,32 +272,57 @@ }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0} -},21,0,1, +{1,0},0,0},25,0,1, {0,8,1},0,2, {0,5,3}, {0,8,3},0,0, -{3,1, -{3,0, -{0},"",-1,-1,1,0} +{4,1, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""} },1,1, {1,2, -{3, +{4, {1,1, {"ru","Каталог"} }, -{3,0, -{3,0, -{0},"",-1,-1,1,0} -},-1,1,1,"Каталог",1}, -{3, +{4,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""} +},-1,1,1,"Каталог",1, +{3,4, +{0} +}, +{3,4, +{0} +} +}, +{4, {1,1, {"ru","Файлы"} }, -{3,0, -{3,0, -{0},"",-1,-1,1,0} -},-1,1,1,"Файлы",1} +{4,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""} +},-1,1,1,"Файлы",1, +{3,4, +{0} +}, +{3,4, +{0} +} +} },1,1,0,8, {2,6,1,1,1,0,0,0,0}, {2,6,0,1,2,0,0,0,0}, @@ -291,7 +331,10 @@ {2,6,1,1,1,1,0,0,0}, {2,6,0,1,2,1,0,0,0}, {2,376,1,1,3,1,0,6,0}, -{2,200,0,1,4,1,0,6,0},0,4294967295,4294967295,5,64,0}, +{2,200,0,1,4,1,0,6,0},0,4294967295,4294967295,5,64,0, +{3,4, +{0} +},0,0,57,0}, {0} }, {8,8,33,392,259,1, @@ -324,14 +367,14 @@ {0fc7e20d-f241-460c-bdf4-5ad88e5474a5,4, {3, { -{10,1, +{13,1, {3,4, {0} }, {3,4, {0} }, -{6,3,0,1},0, +{7,3,0,1,100},0, {3,3, {-22} }, @@ -349,17 +392,20 @@ }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0} -},7, +{1,0},0,0},9, {1,1, {"ru","Каталог:"} },0,1,0,0,0, {0,0,0},0, {1,0},1, -{3,0, -{3,0, -{0},"",-1,-1,1,0} -},4}, +{4,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""} +},4,0,0}, {0} }, {8,6,6,50,25,1, @@ -399,14 +445,14 @@ }, { { -{10,1, +{13,1, {3,4, {0} }, {3,4, {0} }, -{6,3,0,1},0, +{7,3,0,1,100},0, {3,3, {-22} }, @@ -424,16 +470,15 @@ }, {3,1, {-18},0,0,0}, -{1,0} -},21,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,4,0, +{1,0},0,0},29,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,4,0, {"U"}, {"U"},"",0,1,0,0,0,0, -{3,0, -{0},"",-1,-1,1,0}, -{3,0, -{0},"",-1,-1,1,0},0,0,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""},0,0,0, {0,0,0}, -{1,0},0,0,0,0} +{1,0},0,0,0,0,0,0,0,16777215} }, {1, {9a7643d2-19e9-45e2-8893-280bc9195a97, @@ -455,8 +500,8 @@ {1,1, {"ru","Каталог начало выбора"} }, -{3,0, -{0},"",-1,-1,1,0}, +{4,0, +{0},"",-1,-1,1,0,""}, {0,0,0} } } @@ -495,14 +540,14 @@ {0fc7e20d-f241-460c-bdf4-5ad88e5474a5,7, {3, { -{10,1, +{13,1, {3,4, {0} }, {3,4, {0} }, -{6,3,0,1},0, +{7,3,0,1,100},0, {3,3, {-22} }, @@ -520,17 +565,20 @@ }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0} -},7, +{1,0},0,0},9, {1,1, {"ru","Файлы:"} },0,1,0,0,0, {0,0,0},0, {1,0},1, -{3,0, -{3,0, -{0},"",-1,-1,1,0} -},4}, +{4,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""} +},4,0,0}, {0} }, {8,6,6,46,25,1, @@ -570,14 +618,14 @@ }, { { -{10,1, +{13,1, {3,4, {0} }, {3,4, {0} }, -{6,3,0,1},0, +{7,3,0,1,100},0, {3,3, {-22} }, @@ -595,16 +643,15 @@ }, {3,1, {-18},0,0,0}, -{1,0} -},21,0,2,1,0,0,1,0,0,0,1,0,0,0,0,0,4,0, +{1,0},0,0},29,0,2,1,0,0,1,0,0,0,1,0,0,0,0,0,4,0, {"U"}, {"U"},"",0,1,0,0,1,0, -{3,0, -{0},"",-1,-1,1,0}, -{3,0, -{0},"",-1,-1,1,0},0,0,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""},0,0,0, {0,0,0}, -{1,0},0,0,0,0} +{1,0},0,0,0,0,0,0,0,16777215} }, {1, {9a7643d2-19e9-45e2-8893-280bc9195a97, @@ -626,8 +673,8 @@ {1,1, {"ru","Файлы начало выбора"} }, -{3,0, -{0},"",-1,-1,1,0}, +{4,0, +{0},"",-1,-1,1,0,""}, {0,0,0} } } @@ -666,14 +713,14 @@ {1, { { -{10,1, +{13,1, {3,4, {0} }, {3,4, {0} }, -{6,3,0,1},0, +{7,3,0,1,100},0, {3,3, {-22} }, @@ -691,11 +738,10 @@ }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0} -},4, +{1,0},0,0},5, {1,1, {"ru","Искать в подкаталогах"} -},1,0,1},1,0,0}, +},1,0,1,0},2,0,0,0,0}, {0} }, {8,6,30,376,49,1, @@ -732,14 +778,14 @@ {1, { { -{10,1, +{13,1, {3,4, {0} }, {3,4, {0} }, -{6,3,0,1},0, +{7,3,0,1,100},0, {3,3, {-22} }, @@ -757,11 +803,10 @@ }, {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, -{1,0} -},4, +{1,0},0,0},5, {1,1, {"ru","Подробный лог"} -},1,0,1},1,0,0}, +},1,0,1,0},2,0,0,0,0}, {0} }, {8,6,54,376,73,1, @@ -797,7 +842,7 @@ } } } -},400,292,1,0,1,4,4,35}, +},400,292,1,0,1,4,4,42,400,292,96}, { {1},6, {5, @@ -889,8 +934,8 @@ {1,1, {"ru","При открытии"} }, -{3,0, -{0},"",-1,-1,1,0}, +{4,0, +{0},"",-1,-1,1,0,""}, {0,0,0} } } @@ -898,7 +943,11 @@ },1,4,1,0,0,0, {0}, {0}, -{3,0, -{3,0, -{0},"",-1,-1,1,0} +{4,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""} },1,2,0,0,1,1} \ No newline at end of file diff --git "a/src/Utils/xddTestsConvertIntoRebornFormat/Form/\320\244\320\276\321\200\320\274\320\260/module" "b/src/Utils/xddTestsConvertIntoRebornFormat/Form/\320\244\320\276\321\200\320\274\320\260/module.bsl" similarity index 100% rename from "src/Utils/xddTestsConvertIntoRebornFormat/Form/\320\244\320\276\321\200\320\274\320\260/module" rename to "src/Utils/xddTestsConvertIntoRebornFormat/Form/\320\244\320\276\321\200\320\274\320\260/module.bsl" diff --git a/src/Utils/xddTestsConvertIntoRebornFormat/ObjectModule.txt b/src/Utils/xddTestsConvertIntoRebornFormat/ObjectModule.bsl similarity index 90% rename from src/Utils/xddTestsConvertIntoRebornFormat/ObjectModule.txt rename to src/Utils/xddTestsConvertIntoRebornFormat/ObjectModule.bsl index 1dfacafb..56f4c7e1 100644 --- a/src/Utils/xddTestsConvertIntoRebornFormat/ObjectModule.txt +++ b/src/Utils/xddTestsConvertIntoRebornFormat/ObjectModule.bsl @@ -9,9 +9,18 @@ Перем RegExp_ПолучитьСписокТестов; Перем RegExp_КонецФункции_ПолучитьСписокТестов; +Перем ПолноеИмяБраузераТестов; +Перем ПолныйПутьКФайлуБраузераТестов; + //{ Интерфейс конвертера -Функция Инициализация() Экспорт +Функция Инициализация(СлужебныеПараметрыЯдра = Неопределено) Экспорт + + Если ТипЗнч(СлужебныеПараметрыЯдра) = Тип("Структура") Тогда + СлужебныеПараметрыЯдра.Свойство("ПолноеИмяБраузераТестов", ПолноеИмяБраузераТестов); + СлужебныеПараметрыЯдра.Свойство("ПолныйПутьКФайлуБраузераТестов", ПолныйПутьКФайлуБраузераТестов); + КонецЕсли; + ВременныеФайлы = СоздатьУтилиту("ВременныеФайлы"); КомандныйФайл = СоздатьУтилиту("КомандныйФайл"); Ожидаем = СоздатьУтилиту("УтвержденияBDD"); @@ -21,6 +30,7 @@ ВключитьЛог(Ложь); Лог = ""; + КонецФункции Функция ПреобразоватьКаталог(КаталогТестов, ИскатьВПодкаталогах = Ложь) Экспорт @@ -97,8 +107,11 @@ //{ приватные методы Функция СоздатьУтилиту(ИмяУтилиты) - ФайлОбработки = Новый Файл(ИспользуемоеИмяФайла); - Возврат ВнешниеОбработки.Создать(ФайлОбработки.Путь+"/../Plugins/"+ИмяУтилиты+".epf", Ложь); + + КонтекстЯдра = ПолучитьКонтекстЯдраНаСервере(); + + Возврат КонтекстЯдра.СоздатьОбъектПлагина(ИмяУтилиты); + КонецФункции Функция ПодготовитьВременныйКаталогДляСборкиРазборки() @@ -151,8 +164,11 @@ Продолжить; ИначеЕсли КодВозврата = 0 Тогда ОписаниеИсходника.Вставить("БылРазборДополнительногоКонтейнера", Истина); - ОписаниеИсходника.Вставить("Файл", Новый Файл(БинарныйФайл.Путь +"/"+БинарныйФайл.ИмяБезРасширения+"/text.data")); - МассивОписанийФайловМодулей.Добавить(ОписаниеИсходника); + НужныйФайл = Новый Файл(БинарныйФайл.Путь +"/"+БинарныйФайл.ИмяБезРасширения+"/text.data"); + Если НужныйФайл.Существует() Тогда + ОписаниеИсходника.Вставить("Файл", НужныйФайл); + МассивОписанийФайловМодулей.Добавить(ОписаниеИсходника); + КонецЕсли; Продолжить; КонецЕсли; Ожидаем.Что(КодВозврата, "КодВозврата второй -unpack "+БинарныйФайл.Имя).Равно(0); @@ -704,4 +720,71 @@ КонецФункции -//} \ No newline at end of file +//} + +// { Подсистема конфигурации xUnitFor1C + +Функция ПолучитьКорневойКаталогФреймворка(Знач АнализируемыйПутьККаталогу) + + РезультатПоиска = НайтиФайлы(АнализируемыйПутьККаталогу, "xddTestRunner.epf"); + Если РезультатПоиска.Количество() = 0 Тогда + ВышестоящийКаталог = ПолучитьПутьВышестоящегоКаталога(АнализируемыйПутьККаталогу); + Возврат ПолучитьКорневойКаталогФреймворка(ВышестоящийКаталог); + Иначе + Возврат РезультатПоиска.Получить(0).Путь; + КонецЕсли; + +КонецФункции +Функция ПолучитьПутьВышестоящегоКаталога(Знач ТекущийПутьККаталогу) + + МассивРазделителей = Новый Массив; + МассивРазделителей.Добавить("/"); + МассивРазделителей.Добавить("\"); + + ПоследнийСимвол = Прав(ТекущийПутьККаталогу, 1); + Если НЕ МассивРазделителей.Найти(ПоследнийСимвол) = Неопределено Тогда + ДлинаПутьБезПоследнегоРазделителя = СтрДлина(ТекущийПутьККаталогу) - 1; + ТекущийПутьККаталогу = Лев(ТекущийПутьККаталогу, ДлинаПутьБезПоследнегоРазделителя); + КонецЕсли; + + Пока СтрДлина(ТекущийПутьККаталогу) > 0 Цикл + + ПоследнийСимвол = Прав(ТекущийПутьККаталогу, 1); + Если НЕ МассивРазделителей.Найти(ПоследнийСимвол) = Неопределено Тогда + Прервать; + Иначе + ДлинаПутьБезПоследнегоСимвола = СтрДлина(ТекущийПутьККаталогу) - 1; + ТекущийПутьККаталогу = Лев(ТекущийПутьККаталогу, ДлинаПутьБезПоследнегоСимвола); + КонецЕсли; + + КонецЦикла; + + Возврат ТекущийПутьККаталогу; + +КонецФункции + +Функция ПолучитьКонтекстЯдраНаСервере() + + // Получаем доступ к серверному контексту обработки с использованием + // полного имени метаданных браузера тестов. Иначе нет возможности получить + // доступ к серверному контексту ядра, т.к. изначально вызов был выполнен на клиенте. + // При передаче на сервер клиентский контекст теряется. + КонтекстЯдра = Неопределено; + МетаданныеЯдра = Метаданные.НайтиПоПолномуИмени(ПолноеИмяБраузераТестов); + Если НЕ МетаданныеЯдра = Неопределено + И Метаданные.Обработки.Содержит(МетаданныеЯдра) Тогда + ИмяОбработкиКонекстаЯдра = СтрЗаменить(ПолноеИмяБраузераТестов, "Обработка", "Обработки"); + Выполнить("КонтекстЯдра = " + ИмяОбработкиКонекстаЯдра + ".Создать()"); + Иначе + ИмяОбработкиКонекстаЯдра = СтрЗаменить(ПолноеИмяБраузераТестов, "ВнешняяОбработка", "ВнешниеОбработки"); + ИмяОбработкиКонекстаЯдра = СтрЗаменить(ИмяОбработкиКонекстаЯдра, ".", Символы.ПС); + МенеджерОбъектов = СтрПолучитьСтроку(ИмяОбработкиКонекстаЯдра, 1); + ИмяОбъекта = СтрПолучитьСтроку(ИмяОбработкиКонекстаЯдра, 2); + Выполнить("КонтекстЯдра = " + МенеджерОбъектов + ".Создать("""+ИмяОбъекта+""")"); + КонецЕсли; + + Возврат КонтекстЯдра; + +КонецФункции + +// } Подсистема конфигурации xUnitFor1C \ No newline at end of file diff --git a/src/Utils/xddTestsConvertIntoRebornFormat/maps.txt b/src/Utils/xddTestsConvertIntoRebornFormat/maps.txt index c3ebe66c..185ddf65 100644 --- a/src/Utils/xddTestsConvertIntoRebornFormat/maps.txt +++ b/src/Utils/xddTestsConvertIntoRebornFormat/maps.txt @@ -1,4 +1,4 @@ -Form\УправляемаяФорма\Форма.txt-->1c85fafa-c8c3-4b1c-a5a5-06833393c6c5.0 (64, 64) +Form\УправляемаяФорма\Форма.bsl-->1c85fafa-c8c3-4b1c-a5a5-06833393c6c5.0 (121, 121) Макеты\v8unpack.txt-->d41c4a3c-7890-4572-a6c9-1e1ad5f3d0a8.0 Макеты\БазовыеУтверждения.txt-->fcfede74-2426-4bbc-9d8c-cbb168909665.0 Макеты\ГенераторТестовыхДанных.txt-->ca555899-4850-4863-9cf3-a59edea89072.0 diff --git a/src/Utils/xddTestsConvertIntoRebornFormat/renames.txt b/src/Utils/xddTestsConvertIntoRebornFormat/renames.txt index a9860a28..256782a3 100644 --- a/src/Utils/xddTestsConvertIntoRebornFormat/renames.txt +++ b/src/Utils/xddTestsConvertIntoRebornFormat/renames.txt @@ -5,7 +5,7 @@ 66035cac-eeb6-4708-9998-7f619b73e7f1-->und\66035cac-eeb6-4708-9998-7f619b73e7f1 66035cac-eeb6-4708-9998-7f619b73e7f1.0-->und\66035cac-eeb6-4708-9998-7f619b73e7f1.0 6641570f-5fe8-41b8-9fdd-a7d1b233a01c.0\info-->und\6641570f-5fe8-41b8-9fdd-a7d1b233a01c.0\info -6641570f-5fe8-41b8-9fdd-a7d1b233a01c.0\text-->ObjectModule.txt +6641570f-5fe8-41b8-9fdd-a7d1b233a01c.0\text-->ObjectModule.bsl 9809c3cc-c2aa-427f-9e39-0d7b776446b0-->und\9809c3cc-c2aa-427f-9e39-0d7b776446b0 9809c3cc-c2aa-427f-9e39-0d7b776446b0.0-->und\9809c3cc-c2aa-427f-9e39-0d7b776446b0.0 ca555899-4850-4863-9cf3-a59edea89072-->und\ca555899-4850-4863-9cf3-a59edea89072 diff --git a/src/Utils/xddTestsConvertIntoRebornFormat/und/1c85fafa-c8c3-4b1c-a5a5-06833393c6c5 b/src/Utils/xddTestsConvertIntoRebornFormat/und/1c85fafa-c8c3-4b1c-a5a5-06833393c6c5 index afd28ef1..31de94fe 100644 --- a/src/Utils/xddTestsConvertIntoRebornFormat/und/1c85fafa-c8c3-4b1c-a5a5-06833393c6c5 +++ b/src/Utils/xddTestsConvertIntoRebornFormat/und/1c85fafa-c8c3-4b1c-a5a5-06833393c6c5 @@ -1,10 +1,15 @@ {1, {1, {0, -{9, -{0, +{12, +{1, {0,0,1c85fafa-c8c3-4b1c-a5a5-06833393c6c5},"УправляемаяФорма", -{1,"ru","Управляемая форма"},""},0,1}, +{1,"ru","Управляемая форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1, +{2, +{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, +{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} +} +}, {0} } },0} \ No newline at end of file diff --git a/src/Utils/xddTestsConvertIntoRebornFormat/und/1c85fafa-c8c3-4b1c-a5a5-06833393c6c5.0 b/src/Utils/xddTestsConvertIntoRebornFormat/und/1c85fafa-c8c3-4b1c-a5a5-06833393c6c5.0 index 3289531d..c2ca01b6 100644 --- a/src/Utils/xddTestsConvertIntoRebornFormat/und/1c85fafa-c8c3-4b1c-a5a5-06833393c6c5.0 +++ b/src/Utils/xddTestsConvertIntoRebornFormat/und/1c85fafa-c8c3-4b1c-a5a5-06833393c6c5.0 @@ -1,9 +1,9 @@ -{2, -{28,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, +{3, +{42,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1, {1,0},0,0,1,1,1,0,1,0, -{0}, +{0,0,0}, {0},1, -{17, +{21, {-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -14,10 +14,10 @@ {3,4, {0} }, -{6,3,0,1}, +{7,3,0,1,100}, {0,0,0},1, -{0,0,1},0,1},1,3d3cb80c-508b-41fa-8a18-680cdf5f1712, -{5, +{0,0,1},0,1,0,0,0,3,3},1,3d3cb80c-508b-41fa-8a18-680cdf5f1712, +{10, {1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -32,13 +32,21 @@ {3,2, {24} }, -{6,1,63, -{0},120,700,0,0,0,"Tahoma",1}, +{7,1,63, +{0},120,700,0,0,0,"Tahoma",1,100}, {0,0,0},1, -{4,0,0,3,0, +{5,0,0,3,0, +{0,0,0}, +{3,4, {0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} },1, -{17, +{21, {2,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, {0, {0, @@ -49,19 +57,68 @@ {3,4, {0} }, -{6,3,0,1}, +{7,3,0,1,100}, {0,0,0},1, -{1,1},0,1},1,2},"","",1, -{17, +{1,1},0,1,0,0,0,3,3},1,2, +{1, +{1,1, +{"ru","Конвертация тестов из формата 3.Х в новый формат (4.Х) работает только в режиме обычного приложения. + +Запустите 1С в указанном приложении!"} +},0},0,1, +{10, +{3,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"Декорация1ExtendedTooltip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},1,0,0,1,0,3,3},"","",1, +{21, {0},0,0,0,7,"Navigator", {1,0}, {1,0},0,1,0,0,0,2,2, {3,4, {0} }, -{6,3,0,1}, -{0,0,0},0,0,1} -},"", +{7,3,0,1,100}, +{0,0,0},0,0,1,0,1, +{10, +{0},0,0,0,0,"NavigatorExtendedTooltip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0,0,0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0,1,0,0,1,0,3,3},0,3,3},1,"",2,0,0,0,0,0,3,3,0,0,2},"", {4,1, {9, {1},0,"Объект", @@ -98,5 +155,4 @@ L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} {0,0}, {0,0}, {0,0}, -{0,0} -} \ No newline at end of file +{0,0},0,0} \ No newline at end of file diff --git a/src/Utils/xddTestsConvertIntoRebornFormat/und/eab4f8c5-602e-4d5a-bdfa-910323eb3c1f b/src/Utils/xddTestsConvertIntoRebornFormat/und/eab4f8c5-602e-4d5a-bdfa-910323eb3c1f index a8cea11c..509d55f2 100644 --- a/src/Utils/xddTestsConvertIntoRebornFormat/und/eab4f8c5-602e-4d5a-bdfa-910323eb3c1f +++ b/src/Utils/xddTestsConvertIntoRebornFormat/und/eab4f8c5-602e-4d5a-bdfa-910323eb3c1f @@ -4,9 +4,9 @@ {1, {4,2bd25281-0454-4bf1-9b52-a17b78c7834f,0de42236-0e00-4267-adec-f129a632c3d5, {0, -{0, +{1, {0,0,6641570f-5fe8-41b8-9fdd-a7d1b233a01c},"xddTestsConvertIntoRebornFormat", -{1,"ru","Конвертация тестов xUnitFor1C в версию4 из формата версии 3"},""} +{1,"ru","Конвертация тестов xUnitFor1C в версию4 из формата версии 3"},"",0,0} },eefa7064-8a52-4268-a696-7bf0e82d0af8,"",1c85fafa-c8c3-4b1c-a5a5-06833393c6c5},4, {2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, {3daea016-69b7-4ed4-9453-127911372fe6,7,66035cac-eeb6-4708-9998-7f619b73e7f1,d41c4a3c-7890-4572-a6c9-1e1ad5f3d0a8,fcfede74-2426-4bbc-9d8c-cbb168909665,ca555899-4850-4863-9cf3-a59edea89072,07ad65a2-ee47-46ed-8632-42d4a0bf76b0,9809c3cc-c2aa-427f-9e39-0d7b776446b0,efc43c90-f8d2-444b-a250-5d567bef39ad}, diff --git a/src/Utils/xddTestsConvertIntoRebornFormat/und/eefa7064-8a52-4268-a696-7bf0e82d0af8 b/src/Utils/xddTestsConvertIntoRebornFormat/und/eefa7064-8a52-4268-a696-7bf0e82d0af8 index d6a99c31..4e539061 100644 --- a/src/Utils/xddTestsConvertIntoRebornFormat/und/eefa7064-8a52-4268-a696-7bf0e82d0af8 +++ b/src/Utils/xddTestsConvertIntoRebornFormat/und/eefa7064-8a52-4268-a696-7bf0e82d0af8 @@ -1,10 +1,15 @@ {1, {1, {0, -{9, -{0, +{12, +{1, {0,0,eefa7064-8a52-4268-a696-7bf0e82d0af8},"Форма", -{1,"ru","Форма"},""},0,0}, +{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,0, +{2, +{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, +{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} +} +}, {0} } },0} \ No newline at end of file diff --git a/src/Utils/xddTestsConvertIntoRebornFormat/und/versions b/src/Utils/xddTestsConvertIntoRebornFormat/und/versions index 7f4ee28e..8e21d251 100644 --- a/src/Utils/xddTestsConvertIntoRebornFormat/und/versions +++ b/src/Utils/xddTestsConvertIntoRebornFormat/und/versions @@ -1 +1 @@ -{1,26,"",18239fec-439e-4bb4-85d8-25b1f5b22738,"141fdc44-831c-400c-8419-7bc7ffbd3b69",2b088792-66b2-43c0-b887-1c421adb5c5b,"fcfede74-2426-4bbc-9d8c-cbb168909665.0",5ad156d2-e4f0-4d1a-917f-f2446b59ddd3,"copyinfo",b884f2cb-8d35-438c-9f25-f221326fc805,"d41c4a3c-7890-4572-a6c9-1e1ad5f3d0a8.0",39d05639-ddce-4428-870a-98bde02cf6ee,"eefa7064-8a52-4268-a696-7bf0e82d0af8",e9f584f7-915e-424f-b22c-799db7487a1a,"eefa7064-8a52-4268-a696-7bf0e82d0af8.0",bcaee597-5426-4792-9815-83e7449be603,"07ad65a2-ee47-46ed-8632-42d4a0bf76b0.0",b1e885af-774e-4969-a523-db65350ac02c,"9809c3cc-c2aa-427f-9e39-0d7b776446b0",0bcc087a-b388-4c69-8229-b181a9fcd059,"ca555899-4850-4863-9cf3-a59edea89072.0",15c75afe-d85b-4fb4-9ed2-612085a56957,"66035cac-eeb6-4708-9998-7f619b73e7f1.0",1fb2688c-6272-4290-a053-0beffefba90c,"efc43c90-f8d2-444b-a250-5d567bef39ad.0",55c5e554-fa7e-45fc-8e65-7c92412d5045,"ca555899-4850-4863-9cf3-a59edea89072",391d1acd-c551-49f9-8fbd-75d86b26e1c1,"efc43c90-f8d2-444b-a250-5d567bef39ad",a04de733-1e2e-44d4-9727-82eb026f5666,"version",39a02aa0-6352-406b-a329-c2b17c2f7a2c,"root",860316aa-d086-4a95-8a25-1fa87015bc18,"d41c4a3c-7890-4572-a6c9-1e1ad5f3d0a8",d077632e-06ec-4b35-a4f6-c60e5d8d244f,"eab4f8c5-602e-4d5a-bdfa-910323eb3c1f",fa3d5f35-d801-477e-ab58-992a14b88ef8,"versions",21873d54-3b62-4c4c-a813-ee21ba1b3fcd,"07ad65a2-ee47-46ed-8632-42d4a0bf76b0",48de7cdb-371d-432c-b7f0-61d6167168b1,"1c85fafa-c8c3-4b1c-a5a5-06833393c6c5.0",56d368e4-970d-4fc2-9180-79ae2506cad4,"1c85fafa-c8c3-4b1c-a5a5-06833393c6c5",db6eb8f9-8fec-44a2-bd05-2d5a7ce4a382,"9809c3cc-c2aa-427f-9e39-0d7b776446b0.0",6eebdfda-29b4-4ac2-8da7-ed6088bc194e,"66035cac-eeb6-4708-9998-7f619b73e7f1",75943565-18f1-47c1-a78e-f446523491de,"6641570f-5fe8-41b8-9fdd-a7d1b233a01c.0",ff535776-787a-41c4-9e9d-0b2dcfd8b3d7,"fcfede74-2426-4bbc-9d8c-cbb168909665",c5f33640-42d7-4a35-a93b-7b811bb32e78} \ No newline at end of file +{1,26,"",ccab8fff-a6c9-4f82-947b-dd4e01fb88fc,"07ad65a2-ee47-46ed-8632-42d4a0bf76b0",48de7cdb-371d-432c-b7f0-61d6167168b1,"07ad65a2-ee47-46ed-8632-42d4a0bf76b0.0",b1e885af-774e-4969-a523-db65350ac02c,"141fdc44-831c-400c-8419-7bc7ffbd3b69",2b088792-66b2-43c0-b887-1c421adb5c5b,"1c85fafa-c8c3-4b1c-a5a5-06833393c6c5",1c72f8f3-ae49-4a4d-a370-4e287181edbe,"1c85fafa-c8c3-4b1c-a5a5-06833393c6c5.0",af4c49e9-d15c-4563-9d9f-939ec0295d0e,"66035cac-eeb6-4708-9998-7f619b73e7f1",75943565-18f1-47c1-a78e-f446523491de,"66035cac-eeb6-4708-9998-7f619b73e7f1.0",1fb2688c-6272-4290-a053-0beffefba90c,"6641570f-5fe8-41b8-9fdd-a7d1b233a01c.0",fff86b9c-7070-43a8-ad71-06c2d7ce0e84,"9809c3cc-c2aa-427f-9e39-0d7b776446b0",0bcc087a-b388-4c69-8229-b181a9fcd059,"9809c3cc-c2aa-427f-9e39-0d7b776446b0.0",6eebdfda-29b4-4ac2-8da7-ed6088bc194e,"ca555899-4850-4863-9cf3-a59edea89072",391d1acd-c551-49f9-8fbd-75d86b26e1c1,"ca555899-4850-4863-9cf3-a59edea89072.0",15c75afe-d85b-4fb4-9ed2-612085a56957,"copyinfo",7165b876-4376-42f7-b0b1-3a0da68ed690,"d41c4a3c-7890-4572-a6c9-1e1ad5f3d0a8",d077632e-06ec-4b35-a4f6-c60e5d8d244f,"d41c4a3c-7890-4572-a6c9-1e1ad5f3d0a8.0",39d05639-ddce-4428-870a-98bde02cf6ee,"eab4f8c5-602e-4d5a-bdfa-910323eb3c1f",091506f2-1cf3-40f8-9fe2-ed9bc2306eff,"eefa7064-8a52-4268-a696-7bf0e82d0af8",b6795d26-b73a-4df1-9fcd-815543a9fb89,"eefa7064-8a52-4268-a696-7bf0e82d0af8.0",88b9df41-daf4-4d58-ad56-9db8b5f5fa2e,"efc43c90-f8d2-444b-a250-5d567bef39ad",a04de733-1e2e-44d4-9727-82eb026f5666,"efc43c90-f8d2-444b-a250-5d567bef39ad.0",55c5e554-fa7e-45fc-8e65-7c92412d5045,"fcfede74-2426-4bbc-9d8c-cbb168909665",c5f33640-42d7-4a35-a93b-7b811bb32e78,"fcfede74-2426-4bbc-9d8c-cbb168909665.0",5ad156d2-e4f0-4d1a-917f-f2446b59ddd3,"root",f473c2ad-1d9b-4ff0-83ab-833fbbbe98f4,"version",c12f2d64-0c77-4d2e-8112-f5608ae8da3d,"versions",0d9fe72d-83fb-4e39-aa8d-1d74c814a5a9} \ No newline at end of file diff --git "a/src/xddTestRunner/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" "b/src/xddTestRunner/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" new file mode 100644 index 00000000..a414248f --- /dev/null +++ "b/src/xddTestRunner/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.bsl" @@ -0,0 +1,1155 @@ +&НаКлиенте +Перем КэшФормПлагинов; +&НаКлиенте +Перем ПодключенныеВнешниеОбработки; + +// { События формы +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + ОбъектНаСервере = РеквизитФормыВЗначение("Объект"); + + ЭтаФорма.Заголовок = ОбъектНаСервере.ЗаголовокФормы(); + + Если НЕ Объект.ЭтоВстроеннаяОбработка Тогда // Используемое имя файла меняется в зависимости от того + // встроена обработка в конфигурацию или нет + ИспользуемоеИмяФайла = ОбъектНаСервере.ИспользуемоеИмяФайла; + КонецЕсли; + + ОбновитьКомандыИсторииЗагрузкиТестов(); +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии() + ЗагрузитьПлагины(); + КэшироватьПеречисленияПлагинов(); + СброситьПодключенныеВнешниеОбработки(); + + ЭтоПакетныйЗапуск = ЗначениеЗаполнено(ПараметрЗапуска); + Если ЭтоПакетныйЗапуск Тогда + ВыполнитьПакетныйЗапуск(ПараметрЗапуска); + Иначе + ПерезагрузитьПоследниеТестыПоИстории(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПриЗакрытии() + + // Для пакетного запуска нет смысла вызывать это событие, + Если НЕ ЭтоПакетныйЗапуск Тогда + ПриЗакрытииНаСервере(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЗакрытииНаСервере() + ЭтотОбъектНаСервере().СохранитьНастройки(); +КонецПроцедуры + +&НаКлиенте +Процедура ОбработатьСобытиеВыполненияТестов(Знач ИмяСобытия, Знач Параметр) Экспорт + Если ИмяСобытия = Объект.ВозможныеСобытия.ВыполненТестовыйМетод Тогда + Если Параметр.Состояние = Объект.СостоянияТестов.НеРеализован Тогда + Если Элементы.ИндикаторВыполнения.ЦветРамки <> WebЦвета.Красный Тогда + Элементы.ИндикаторВыполнения.ЦветРамки = WebЦвета.Золотой; + КонецЕсли; + ИначеЕсли Параметр.Состояние = Объект.СостоянияТестов.Сломан Тогда + Элементы.ИндикаторВыполнения.ЦветРамки = WebЦвета.Красный; + КонецЕсли; + ИндикаторВыполнения = ИндикаторВыполнения + 1; + КонецЕсли; + ОбновитьОтображениеДанных(); +КонецПроцедуры +// } События формы + +// { Управляющие воздействия пользователя +&НаКлиенте +Процедура ЗагрузитьТестыПоУмолчанию(Команда) + ЗагрузчикПоУмолчанию = ЗагрузчикПоУмолчанию(); + ИдентификаторЗагрузчикаПоУмолчанию = ЗагрузчикПоУмолчанию.ОписаниеПлагина(Объект.ТипыПлагинов).Идентификатор; + Подключаемый_ИнтерактивныйВызовЗагрузчика(Новый Структура("Имя", ИдентификаторЗагрузчикаПоУмолчанию)); +КонецПроцедуры + +&НаКлиенте +Процедура КомандаВыполнитьВсеТесты(Команда) + ВыполнитьТестыНаКлиенте(); +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьТестыНаКлиенте(Знач Фильтр = Неопределено) + Если ЗначениеЗаполнено(ЭтаФорма.ДеревоОтЗагрузчика) Тогда + ОчиститьСообщения(); + + КоличествоТестовыхМетодов = ПолучитьКоличествоТестовыхМетодов(ЭтаФорма.ДеревоОтЗагрузчика, Фильтр); + ИнициализироватьИндикаторВыполнения(КоличествоТестовыхМетодов); + + СброситьПодключенныеВнешниеОбработки(); + РезультатыТестирования = ВыполнитьТесты(Плагин(ИдентификаторЗагрузчика), ЭтаФорма.ДеревоОтЗагрузчика, Фильтр, ЭтаФорма); + + ОбновитьДеревоТестовНаОснованииРезультатовТестирования(ДеревоТестов.ПолучитьЭлементы()[0], РезультатыТестирования); + + ГенераторОтчетаMXL = Плагин("ГенераторОтчетаMXL"); + Отчет = ГенераторОтчетаMXL.СоздатьОтчет(ЭтаФорма, РезультатыТестирования); + ГенераторОтчетаMXL.Показать(Отчет); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура КомандаВыполнитьВыделенныеТесты(Команда) + Фильтр = Новый Массив; + ВыделенныеСтроки = Элементы.ДеревоТестов.ВыделенныеСтроки; + Для каждого ИдентификаторВыделеннойСтроки Из ВыделенныеСтроки Цикл + ВыделеннаяСтрока = ДеревоТестов.НайтиПоИдентификатору(ИдентификаторВыделеннойСтроки); + Фильтр.Добавить(Новый УникальныйИдентификатор(ВыделеннаяСтрока.Ключ)); + КонецЦикла; + Если Фильтр.Количество() > 0 Тогда + ВыполнитьТестыНаКлиенте(Фильтр); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура КомандаПерезагрузитьФорму(Команда) + Закрыть(); + + Если Объект.ЭтоВстроеннаяОбработка Тогда // Для встроенной в конф. обработки открываем форму + ОткрытьФорму(ЭтаФорма.ИмяФормы); + Иначе + АдресХранилища = ""; + ПоместитьФайл(АдресХранилища, ЭтаФорма.ИспользуемоеИмяФайла, , Ложь); + ПодключитьФайлОбработкиНаСервере(АдресХранилища, Неопределено); + + НоваяФорма = ПолучитьФорму(ЭтаФорма.ИмяФормы,,,Истина); + НоваяФорма.ИспользуемоеИмяФайла = ЭтаФорма.ИспользуемоеИмяФайла; + НоваяФорма.Открыть(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПерезагрузитьПоследниеТестыПоИстории(Команда = Неопределено) + ИсторияЗагрузкиТестов = Объект.Настройки.ИсторияЗагрузкиТестов; + Если ИсторияЗагрузкиТестов.Количество() > 0 Тогда + ЭлементИстории = ИсторияЗагрузкиТестов[0]; + Попытка + ЗагрузитьТесты(ЭлементИстории.ИдентификаторЗагрузчика, ЭлементИстории.Путь); + Исключение + // TODO + Сообщить("Не удалось загрузить тесты из истории <" + ЭлементИстории.ИдентификаторЗагрузчика + ": " + ЭлементИстории.Путь + ">" + Символы.ПС + ОписаниеОшибки()); + КонецПопытки; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ГенераторМакетовДанных(Команда) + ОткрытьИнструмент("СериализаторMXL", ПолучитьПутьКПлагинам()); +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьГУИД(Команда) + ОткрытьИнструмент("xddGuidShow"); +КонецПроцедуры + +&НаКлиенте +Процедура КонвертерТестов(Команда) + ОткрытьИнструмент("xddTestsConvertIntoRebornFormat"); +КонецПроцедуры + +&НаКлиенте +Процедура ПреобразоватьЖурналДействийПользователяВТест(Команда) + ОткрытьИнструмент("UILogToScript"); +КонецПроцедуры +// } Управляющие воздействия пользователя + +// { Плагины +&НаКлиенте +Процедура ЗагрузитьПлагины() + Объект.Плагины = Новый Структура; + КэшФормПлагинов = Новый Структура; + + // Для встроенного в состав конфигурации браузера тестов + // плагины также загружаем из встроенных обработок + Если Объект.ЭтоВстроеннаяОбработка Тогда + ЗагрузитьВстроенныеПлагины(); + Для Каждого Плагин Из Объект.Плагины Цикл + КэшФормПлагинов.Вставить(Плагин.Ключ, Истина); + КонецЦикла; + Иначе + КаталогПлагинов = ПолучитьПутьКПлагинам(); + НайденныеФайлы = НайтиФайлы(КаталогПлагинов, "*.epf", Ложь); + ПомещаемыеФайлы = Новый Массив; + ИдентификаторыПлагинов = Новый Соответствие; + Для каждого ФайлОбработки Из НайденныеФайлы Цикл + + ПомещаемыйФайл = Новый ОписаниеПередаваемогоФайла(ФайлОбработки.ПолноеИмя); + ПомещаемыеФайлы.Добавить(ПомещаемыйФайл); + + ИмяПлагина = ФайлОбработки.ИмяБезРасширения; + ИдентификаторыПлагинов.Вставить(ФайлОбработки.ПолноеИмя, ИмяПлагина); + + КонецЦикла; + + ЗагруженныеФайлы = Новый Массив; + Если ПомещаемыеФайлы.Количество() Тогда + ПоместитьФайлы(ПомещаемыеФайлы, ЗагруженныеФайлы,,Ложь, ЭтаФорма.УникальныйИдентификатор); + КонецЕсли; + + ОписанияПлагинов = ПодключитьПлагиныНаСервере(ЗагруженныеФайлы); + + Для Каждого ЗагруженныйФайл Из ЗагруженныеФайлы Цикл + ИмяПлагина = ИдентификаторыПлагинов[ЗагруженныйФайл.Имя]; + + ОписаниеПлагина = ОписанияПлагинов[ЗагруженныйФайл.Имя]; + Объект.Плагины.Вставить(ОписаниеПлагина.Идентификатор, ИмяПлагина); + КэшФормПлагинов.Вставить(ОписаниеПлагина.Идентификатор, Истина); + + КонецЦикла; + КонецЕсли; + + ДобавитьКомандыЗагрузчиковНаФорме(); + +КонецПроцедуры + +&НаСервере +Функция ПодключитьПлагиныНаСервере(Знач ЗагружаемыеФайлы) + + ОписанияПлагинов = Новый Соответствие; + + Для Каждого ОписаниеФайла Из ЗагружаемыеФайлы Цикл + ФайлОбъект = Новый Файл(ОписаниеФайла.Имя); + ИмяПлагина = ФайлОбъект.ИмяБезРасширения; + ПодключитьФайлОбработкиНаСервере(ОписаниеФайла.Хранение, ИмяПлагина); + + Попытка + ОбъектОбработки = ВнешниеОбработки.Создать(ИмяПлагина, Ложь); + ОбъектОбработки.Инициализация(ЭтотОбъектНаСервере()); + ОписанияПлагинов.Вставить(ОписаниеФайла.Имя, ОбъектОбработки.ОписаниеПлагина(Объект.ТипыПлагинов)); + Исключение + Ошибка = "Возникла ошибка при загрузке плагина: "+ОписаниеФайла.Имя + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + Сообщить(Ошибка); + Продолжить; + КонецПопытки; + + КонецЦикла; + + Возврат Новый ФиксированноеСоответствие(ОписанияПлагинов); + +КонецФункции // ПодключитьПлагиныНаСервере() + +&НаКлиенте +Процедура КэшироватьПеречисленияПлагинов() + Объект.ТипыУзловДереваТестов = Плагин("ПостроительДереваТестов").Объект.ТипыУзловДереваТестов; +КонецПроцедуры + +&НаКлиенте +Функция Плагин(Знач Идентификатор) Экспорт + + ОбъектПлагин = Неопределено; + ИдентификаторБезПрефиксовПодсистемы = ПолучитьИдентификаторБезПрефиксаПодсистемы(Идентификатор, Объект.ИспользуемыйПрефиксПодсистемы); + Если КэшФормПлагинов.Свойство(ИдентификаторБезПрефиксовПодсистемы) Тогда + ОбъектПлагин = КэшФормПлагинов[ИдентификаторБезПрефиксовПодсистемы]; + КонецЕсли; + + Если ОбъектПлагин = Неопределено Тогда + ВызватьИсключение НСтр("ru = 'Неизвестный идентификатор плагина: <"+Идентификатор+">'"); + ИначеЕсли ОбъектПлагин = Истина Тогда + // загрузка клиентского плагина "По требованию" + ИмяПлагина = Объект.Плагины[ПолучитьИдентификаторБезПрефиксаПодсистемы(Идентификатор, Объект.ИспользуемыйПрефиксПодсистемы)]; + Попытка + Если Объект.ЭтоВстроеннаяОбработка Тогда + ОбъектПлагин = ПолучитьФорму("Обработка." + ДополнитьИдентификаторПрефиксомПодсистемы(ИмяПлагина, Объект.ИспользуемыйПрефиксПодсистемы) + ".Форма", , ЭтаФорма); + Иначе + ОбъектПлагин = ПолучитьФорму("ВнешняяОбработка." + ИмяПлагина + ".Форма", , ЭтаФорма); + КонецЕсли; + КэшФормПлагинов.Вставить(ИдентификаторБезПрефиксовПодсистемы, ОбъектПлагин); + Исключение + // TODO добавить поведение при отсутствии управляемой формы у плагина + ВызватьИсключение; + КонецПопытки; + + КонецЕсли; + + Возврат ОбъектПлагин; +КонецФункции + +&НаСервере +Процедура ДобавитьКомандыЗагрузчиковНаФорме() + ОписанияЗагрузчиков = ПолучитьОписанияЗагрузчиковНаСервере(); + Для каждого Описание Из ОписанияЗагрузчиков Цикл + Команда = ЭтаФорма.Команды.Добавить(Описание.Идентификатор); + Команда.Действие = "Подключаемый_ИнтерактивныйВызовЗагрузчика"; + ПунктМеню = ЭтаФорма.Элементы.Добавить(Команда.Имя, Тип("КнопкаФормы"), ЭтаФорма.Элементы.ПлагиныЗагрузчики); + ПунктМеню.Заголовок = Описание.Представление; + ПунктМеню.ИмяКоманды = Команда.Имя; + КонецЦикла; +КонецПроцедуры + +&НаКлиенте +Функция ПолучитьОписанияПлагиновПоТипу(Знач ТипПлагина) Экспорт + Результат = ПолучитьОписанияПлагиновПоТипуНаСервере(ТипПлагина); + + Возврат Результат; +КонецФункции + +&НаСервере +Функция ПолучитьОписанияПлагиновПоТипуНаСервере(Знач ТипПлагина) + ОбъектНаСервере = РеквизитФормыВЗначение("Объект"); + Результат = ОбъектНаСервере.ПолучитьОписанияПлагиновПоТипу(ТипПлагина); + + Возврат Результат; +КонецФункции + +&НаСервере +Функция ПолучитьОписанияЗагрузчиковНаСервере() + ОбъектНаСервере = РеквизитФормыВЗначение("Объект"); + ОписанияЗагрузчиков = ОбъектНаСервере.ПолучитьОписанияПлагиновПоТипу(ОбъектНаСервере.ТипыПлагинов.Загрузчик); + + Возврат ОписанияЗагрузчиков; +КонецФункции + +&НаКлиенте +Функция ЗагрузчикПоУмолчанию() Экспорт + Возврат Плагин("ЗагрузчикКаталога"); +КонецФункции +// } Плагины + +// { Работа с деревом тестов +&НаКлиенте +Процедура Подключаемый_ИнтерактивныйВызовЗагрузчика(Команда) + ИдентификаторВыбранногоЗагрузчика = Команда.Имя; + Путь = Плагин(ИдентификаторВыбранногоЗагрузчика).ВыбратьПутьИнтерактивно(); + Если ЗначениеЗаполнено(Путь) Тогда + ЗагрузитьТесты(ИдентификаторВыбранногоЗагрузчика, Путь); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ЗагрузитьТесты(Знач ИдентификаторВыбранногоЗагрузчика, Знач Путь) + ИнициализироватьИндикаторВыполнения(); + + ЭтаФорма.ИдентификаторЗагрузчика = ИдентификаторВыбранногоЗагрузчика; + ФормаЗагрузчика = Плагин(ИдентификаторВыбранногоЗагрузчика); + + Попытка + ЭтаФорма.ДеревоОтЗагрузчика = ФормаЗагрузчика.Загрузить(ЭтаФорма, Путь); + Исключение + Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + Возврат; + КонецПопытки; + + ЭлементыДереваТестов = ЭтаФорма.ДеревоТестов.ПолучитьЭлементы(); + ЭлементыДереваТестов.Очистить(); + ЗаполнитьДеревоТестов(ЭтаФорма.ДеревоТестов, ДеревоОтЗагрузчика); + + КоличествоТестовыхСлучаев = ЗаполнитьКоличествоТестовыхСлучаевПоВсемуДеревуТестов(ЭтаФорма.ДеревоТестов); + РазвернутьСтрокиДерева(КоличествоТестовыхСлучаев < 30); + + СохранитьВИсториюЗагрузкиТестовНаСервере(ИдентификаторВыбранногоЗагрузчика, Путь); + ОбновитьКомандыИсторииЗагрузкиТестов(); +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьДеревоТестов(РодительскаяСтрокаДереваТестов, Знач КонтейнерДереваТестовЗагрузчика) + СтрокаКонтейнера = РодительскаяСтрокаДереваТестов.ПолучитьЭлементы().Добавить(); + СтрокаКонтейнера.Имя = КонтейнерДереваТестовЗагрузчика.Имя; + СтрокаКонтейнера.ИконкаУзла = КонтейнерДереваТестовЗагрузчика.ИконкаУзла; + СтрокаКонтейнера.Ключ = КонтейнерДереваТестовЗагрузчика.Ключ; + + Для каждого ЭлементКоллекции Из КонтейнерДереваТестовЗагрузчика.Строки Цикл + Если ЭлементКоллекции.Тип = Объект.ТипыУзловДереваТестов.Контейнер Тогда + ЗаполнитьДеревоТестов(СтрокаКонтейнера, ЭлементКоллекции); + ИначеЕсли ЭлементКоллекции.Тип = Объект.ТипыУзловДереваТестов.Элемент Тогда + СтрокаЭлемента = СтрокаКонтейнера.ПолучитьЭлементы().Добавить(); + СтрокаЭлемента.Имя = ЭлементКоллекции.Представление; + СтрокаЭлемента.Путь = ЭлементКоллекции.Путь; + СтрокаЭлемента.ИконкаУзла = ЭлементКоллекции.ИконкаУзла; + СтрокаЭлемента.Ключ = ЭлементКоллекции.Ключ; + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +&НаКлиенте +Функция ЗаполнитьКоличествоТестовыхСлучаевПоВсемуДеревуТестов(РодительскаяСтрока) + КоллекцияСтрок = РодительскаяСтрока.ПолучитьЭлементы(); + Если КоллекцияСтрок.Количество() = 0 Тогда + Возврат 1; + КонецЕсли; + ОбщееКоличествоТестов = 0; + Для каждого СтрокаДерева из КоллекцияСтрок Цикл + КоличествоТестовВСтроке = ЗаполнитьКоличествоТестовыхСлучаевПоВсемуДеревуТестов(СтрокаДерева); + СтрокаДерева.КоличествоТестов = КоличествоТестовВСтроке; + ОбщееКоличествоТестов = ОбщееКоличествоТестов + КоличествоТестовВСтроке; + КонецЦикла; + + Возврат ОбщееКоличествоТестов; +КонецФункции + +&НаКлиенте +Процедура РазвернутьСтрокиДерева(Знач ВключаяПодчиненные = Ложь) + Для каждого СтрокаДерева из ДеревоТестов.ПолучитьЭлементы() Цикл + Идентификатор = СтрокаДерева.ПолучитьИдентификатор(); + Элементы.ДеревоТестов.Развернуть(Идентификатор, ВключаяПодчиненные); + КонецЦикла; +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьДеревоТестовНаОснованииРезультатовТестирования(УзелДереваТестов, Знач РезультатТестирования) + УзелДереваТестов.Состояние = РезультатТестирования.Состояние; + УзелДереваТестов.ВремяВыполнения = РезультатТестирования.ВремяВыполнения; + Если РезультатТестирования.Тип = Объект.ТипыУзловДереваТестов.Контейнер Тогда + Для каждого ДочернийРезультатТестирования Из РезультатТестирования.Строки Цикл + ДочернийУзелДереваТестов = НайтиСтрокуВДеревеТестовПоКлючу(УзелДереваТестов, ДочернийРезультатТестирования.Ключ); + ОбновитьДеревоТестовНаОснованииРезультатовТестирования(ДочернийУзелДереваТестов, ДочернийРезультатТестирования); + КонецЦикла; + ИначеЕсли РезультатТестирования.Тип = Объект.ТипыУзловДереваТестов.Элемент Тогда + Если РезультатТестирования.Свойство("Сообщение") И ЗначениеЗаполнено(РезультатТестирования.Сообщение) Тогда + Сообщить(РезультатТестирования.Сообщение, СтатусСообщения.ОченьВажное); + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция НайтиСтрокуВДеревеТестовПоКлючу(УзелДереваТестов, Знач Ключ) + Результат = Неопределено; + Для каждого ЭлементКоллекции Из УзелДереваТестов.ПолучитьЭлементы() Цикл + Если ЭлементКоллекции.Ключ = Ключ Тогда + Результат = ЭлементКоллекции; + Прервать; + КонецЕсли; + КонецЦикла; + + Возврат Результат; +КонецФункции +// } Работа с деревом тестов + +// { Выполнение тестов +&НаКлиенте +Функция ПолучитьКоличествоТестовыхМетодов(Знач КонтейнерДереваТестов, Знач Фильтр = Неопределено) Экспорт + Возврат ПолучитьКоличествоТестовыхМетодовНаСервере(КонтейнерДереваТестов, Фильтр); +КонецФункции + +&НаСервере +Функция ПолучитьКоличествоТестовыхМетодовНаСервере(Знач КонтейнерДереваТестов, Знач Фильтр) + Возврат ЭтотОбъектНаСервере().ПолучитьКоличествоТестовыхМетодов(КонтейнерДереваТестов, Фильтр); +КонецФункции + +&НаКлиенте +Функция ВыполнитьТесты(Знач Загрузчик, Знач КонтейнерДереваТестов, Знач Фильтр = Неопределено, Знач Подписчик = Неопределено) Экспорт + РезультатТестирования = СоздатьКонтейнерРезультатовТестирования(КонтейнерДереваТестов); + ФильтрДляДочернихУзлов = Неопределено; + Если Не УзелДереваТестовУдовлетворяетФильтру(КонтейнерДереваТестов, Фильтр) Тогда + ФильтрДляДочернихУзлов = Фильтр; + КонецЕсли; + + Если КонтейнерДереваТестов.СлучайныйПорядокВыполнения Тогда + СтрокиКонтейнера = ПеремешатьМассив(КонтейнерДереваТестов.Строки); + Иначе + СтрокиКонтейнера = КонтейнерДереваТестов.Строки; + КонецЕсли; + + Для каждого ДочернийУзел Из СтрокиКонтейнера Цикл + ДочернийРезультатТестирования = Неопределено; + Если ДочернийУзел.Тип = Объект.ТипыУзловДереваТестов.Контейнер Тогда + ДочернийРезультатТестирования = ВыполнитьТесты(Загрузчик, ДочернийУзел, ФильтрДляДочернихУзлов, Подписчик); + ИначеЕсли ДочернийУзел.Тип = Объект.ТипыУзловДереваТестов.Элемент Тогда + Если УзелДереваТестовУдовлетворяетФильтру(ДочернийУзел, ФильтрДляДочернихУзлов) Тогда + КонтекстВыполнения = ПолучитьКонтекстВыполненияПоПути(Загрузчик, ДочернийУзел.Путь); + // Заполняем служебные поля, если они имеются + Если ПеременнаяСодержитСвойство(КонтекстВыполнения, "ИспользуемыйПрефиксПодсистемы") Тогда + КонтекстВыполнения.ИспользуемыйПрефиксПодсистемы = Объект.ИспользуемыйПрефиксПодсистемы; + КонецЕсли; + Объект.ТекущийКонтейнер = КонтейнерДереваТестов; + ДочернийРезультатТестирования = ВыполнитьТестовыйМетод(КонтекстВыполнения, ДочернийУзел); + КонтейнерДереваТестов.Контекст = Объект.ТекущийКонтейнер.Контекст; + + Если Подписчик <> Неопределено Тогда + ОповеститьОСобытии(Подписчик, Объект.ВозможныеСобытия.ВыполненТестовыйМетод, ДочернийРезультатТестирования); + КонецЕсли; + КонецЕсли; + КонецЕсли; + Если ДочернийРезультатТестирования <> Неопределено Тогда + РезультатТестирования.Строки.Добавить(ДочернийРезультатТестирования); + РезультатТестирования.Состояние = ВыбратьХудшееСостояниеВыполненияТестов(РезультатТестирования.Состояние, ДочернийРезультатТестирования.Состояние); + ЗаполнитьДанныеСтатистики(РезультатТестирования, ДочернийРезультатТестирования); + Если Не КонтейнерДереваТестов.СлучайныйПорядокВыполнения И ДочернийРезультатТестирования.Состояние <> Объект.СостоянияТестов.Пройден Тогда + Прервать; + КонецЕсли; + КонецЕсли; + КонецЦикла; + Если РезультатТестирования.Строки.Количество() = 0 Тогда + РезультатТестирования = Неопределено; + КонецЕсли; + + Возврат РезультатТестирования; +КонецФункции + +&НаКлиенте +Функция УзелДереваТестовУдовлетворяетФильтру(Знач УзелДереваТестов, Знач Фильтр) + Возврат (Фильтр = Неопределено) Или (Фильтр.Найти(УзелДереваТестов.Ключ) <> Неопределено); +КонецФункции + +&НаКлиенте +Функция ПолучитьКонтекстВыполненияПоПути(Знач Загрузчик, Знач Путь) + КонтекстВыполнения = Загрузчик.ПолучитьКонтекстПоПути(ЭтаФорма, Путь); + + Возврат КонтекстВыполнения; +КонецФункции + +&НаКлиенте +Функция ЭтоСерверныйКонтекстВыполнения(Знач КонтекстВыполнения) + Результат = ТипЗнч(КонтекстВыполнения) = Тип("ФиксированнаяСтруктура"); + + Возврат Результат; +КонецФункции + +&НаКлиенте +Процедура ЗаполнитьДанныеСтатистики(РезультатТестирования, Знач ДочернийРезультатТестирования) + Если ДочернийРезультатТестирования.Тип = Объект.ТипыУзловДереваТестов.Контейнер Тогда + РезультатТестирования.КоличествоТестов = РезультатТестирования.КоличествоТестов + ДочернийРезультатТестирования.КоличествоТестов; + РезультатТестирования.КоличествоСломанныхТестов = РезультатТестирования.КоличествоСломанныхТестов + ДочернийРезультатТестирования.КоличествоСломанныхТестов; + РезультатТестирования.КоличествоНеРеализованныхТестов = РезультатТестирования.КоличествоНеРеализованныхТестов + ДочернийРезультатТестирования.КоличествоНеРеализованныхТестов; + РезультатТестирования.КоличествоОшибочныхТестов = РезультатТестирования.КоличествоОшибочныхТестов + ДочернийРезультатТестирования.КоличествоОшибочныхТестов; + + ИначеЕсли ДочернийРезультатТестирования.Тип = Объект.ТипыУзловДереваТестов.Элемент Тогда + РезультатТестирования.КоличествоТестов = РезультатТестирования.КоличествоТестов + 1; + Если ДочернийРезультатТестирования.Состояние = Объект.СостоянияТестов.Сломан Тогда + РезультатТестирования.КоличествоСломанныхТестов = РезультатТестирования.КоличествоСломанныхТестов + 1; + ИначеЕсли ДочернийРезультатТестирования.Состояние = Объект.СостоянияТестов.НеРеализован Тогда + РезультатТестирования.КоличествоНеРеализованныхТестов = РезультатТестирования.КоличествоНеРеализованныхТестов + 1; + ИначеЕсли ДочернийРезультатТестирования.Состояние = Объект.СостоянияТестов.НеизвестнаяОшибка Тогда + РезультатТестирования.КоличествоОшибочныхТестов = РезультатТестирования.КоличествоОшибочныхТестов + 1; + КонецЕсли; + КонецЕсли; + РезультатТестирования.ВремяВыполнения = РезультатТестирования.ВремяВыполнения + ДочернийРезультатТестирования.ВремяВыполнения; +КонецПроцедуры + +&НаКлиенте +Функция ВыбратьХудшееСостояниеВыполненияТестов(Знач Состояние1, Знач Состояние2) + Возврат Макс(Состояние1, Состояние2); +КонецФункции + +&НаКлиенте +Функция ВыполнитьТестовыйМетод(Знач КонтекстВыполнения, Знач ЭлементДереваТестов) + Перем РезультатТестирования; + + Если ЭтоСерверныйКонтекстВыполнения(КонтекстВыполнения) Тогда + РезультатТестирования = ВыделитьТестовыйМетодНаСервереСОбработкойОшибокПередачиМеждуНаКлиентомИСервером(КонтекстВыполнения, ЭлементДереваТестов); + Иначе + РезультатТестирования = ВыполнитьТестовыйМетодНаКлиенте(КонтекстВыполнения, ЭлементДереваТестов); + КонецЕсли; + + Возврат РезультатТестирования; +КонецФункции + +&НаКлиенте +Функция ВыполнитьТестовыйМетодНаКлиенте(Знач КонтекстВыполнения, Знач ЭлементДереваТестов) Экспорт + + РезультатТестирования = СоздатьЭлементРезультатовТестирования(ЭлементДереваТестов); + НачалоВыполнения = ТекущаяУниверсальнаяДатаВМиллисекундах(); + + Если ВыполнитьИнициализациюКонтекста(КонтекстВыполнения, РезультатТестирования) Тогда + + Попытка + ВыполнитьНеобязательнуюПроцедуруТестовогоСлучая(КонтекстВыполнения, ЭлементДереваТестов.ПередЗапускомТеста); + ВыполнитьПроцедуруКонтекста(КонтекстВыполнения, ЭлементДереваТестов.ИмяМетода, ЭлементДереваТестов.Параметры); + + РезультатТестирования.Состояние = Объект.СостоянияТестов.Пройден; + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + КраткийТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + Если ЕстьОшибка_МетодОбъектаНеОбнаружен(КраткийТекстОшибки, ЭлементДереваТестов.ИмяМетода) Тогда + РезультатТестирования.Состояние = Объект.СостоянияТестов.НеРеализован; + Сообщение = НСтр("ru = 'Отсутствует реализация тестового метода (%1).'"); + РезультатТестирования.Сообщение = СтрЗаменить(Сообщение, "%1", ЭлементДереваТестов.ИмяМетода); + Иначе + РезультатТестирования.Сообщение = ТекстОшибки; + Если ЭтоОшибкаПроверки(КраткийТекстОшибки) Тогда + РезультатТестирования.Состояние = Объект.СостоянияТестов.Сломан; + ИначеЕсли ЭтоПропущенныйТест(КраткийТекстОшибки) Тогда + РезультатТестирования.Состояние = Объект.СостоянияТестов.НеРеализован; + Иначе + РезультатТестирования.Состояние = Объект.СостоянияТестов.НеизвестнаяОшибка; + КонецЕсли; + КонецЕсли; + КонецПопытки; + Попытка + ВыполнитьНеобязательнуюПроцедуруТестовогоСлучая(КонтекстВыполнения, ЭлементДереваТестов.ПослеЗапускаТеста); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + РезультатТестирования.Сообщение = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + + КраткийТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + Если ЭтоОшибкаПроверки(КраткийТекстОшибки) Тогда + РезультатТестирования.Состояние = Объект.СостоянияТестов.Сломан; + Иначе + РезультатТестирования.Состояние = Объект.СостоянияТестов.НеизвестнаяОшибка; + КонецЕсли; + + КонецПопытки; + КонецЕсли; + + ОкончаниеВыполнения = ТекущаяУниверсальнаяДатаВМиллисекундах(); + РезультатТестирования.ВремяВыполнения = (ОкончаниеВыполнения - НачалоВыполнения) / 1000; + + Возврат РезультатТестирования; +КонецФункции + +&НаКлиенте +Функция ВыполнитьИнициализациюКонтекста(КонтекстВыполнения, РезультатТестирования) + Попытка + КонтекстВыполнения.Инициализация(ЭтаФорма); + Возврат Истина; + Исключение + РезультатТестирования.Сообщение = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + РезультатТестирования.Состояние = Объект.СостоянияТестов.НеизвестнаяОшибка; + КонецПопытки; + Возврат Ложь; +КонецФункции + +&НаКлиенте +Функция ВыделитьТестовыйМетодНаСервереСОбработкойОшибокПередачиМеждуНаКлиентомИСервером(Знач КонтекстВыполнения, Знач ЭлементДереваТестов) + + Перем ПолныйТекстОшибки, РезультатТестирования; + + Попытка + РезультатТестирования = ВыполнитьТестовыйМетодНаСервере(КонтекстВыполнения, ЭлементДереваТестов); + Исключение + ПолныйТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + РезультатТестирования = СоздатьЭлементРезультатовТестирования(ЭлементДереваТестов); + РезультатТестирования.Сообщение = ПолныйТекстОшибки; + РезультатТестирования.Состояние = Объект.СостоянияТестов.НеизвестнаяОшибка; + КонецПопытки; + + Возврат РезультатТестирования; +КонецФункции + +&НаСервере +Функция ВыполнитьТестовыйМетодНаСервере(Знач ОписаниеКонтекста, Знач ЭлементДереваТестов) + ОбъектНаСервере = ЭтотОбъектНаСервере(); + + Если ОписаниеКонтекста.ЭтоВнутренняяОбработка Тогда + ЭтоОтчет = (Метаданные.Отчеты.Найти(ОписаниеКонтекста.Идентификатор) <> Неопределено); + Иначе + ФайлОбработки = Новый Файл(ЭлементДереваТестов.Путь); + ЭтоОтчет = (НРег(ФайлОбработки.Расширение) = ".erf"); + КонецЕсли; + + КонтекстВыполнения = СоздатьОбъектПлагина(ОписаниеКонтекста.Идентификатор, ОписаниеКонтекста.ЭтоВнутренняяОбработка, ЭтоОтчет); + КонтекстВыполнения.Инициализация(ОбъектНаСервере); + + // Заполняем служебные поля, если они имеются + ЗаполнитьСвойствоПриНаличии(КонтекстВыполнения, "ПутьКФайлуПолный", ЭлементДереваТестов.Путь); + + РезультатТестирования = ОбъектНаСервере.ВыполнитьТестовыйМетод(КонтекстВыполнения, ЭлементДереваТестов); + + Возврат РезультатТестирования; +КонецФункции + +&НаКлиенте +Процедура ВыполнитьНеобязательнуюПроцедуруТестовогоСлучая(Знач КонтекстВыполнения, Знач ИмяПроцедуры) + Попытка + ВыполнитьПроцедуруКонтекста(КонтекстВыполнения, ИмяПроцедуры); + Исключение + ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + Если Не ЕстьОшибка_МетодОбъектаНеОбнаружен(ТекстОшибки, ИмяПроцедуры) Тогда + ВызватьИсключение; + КонецЕсли; + КонецПопытки; +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьПроцедуруКонтекста(Знач КонтекстВыполнения, Знач ПроцедураКонтекста, Знач Параметры = Неопределено) + СтрокаПараметров = СформироватьСтрокуПараметров(Параметры); + ИcполняемыйКод = "КонтекстВыполнения." + ПроцедураКонтекста + "(" + СтрокаПараметров + ");"; + Выполнить(ИcполняемыйКод); +КонецПроцедуры + +&НаКлиенте +Функция СформироватьСтрокуПараметров(Знач Параметры) + СтрокаПараметров = ""; + Если ТипЗнч(Параметры) = Тип("Массив") Тогда + Для Сч = 0 По Параметры.Количество() - 1 Цикл + СтрокаПараметров = СтрокаПараметров + ",Параметры[" + Формат(Сч, "ЧН=0; ЧГ=") + "]"; + КонецЦикла; + КонецЕсли; + + Возврат Сред(СтрокаПараметров, 2); +КонецФункции + +&НаКлиенте +Функция ЕстьОшибка_МетодОбъектаНеОбнаружен(Знач ТекстОшибки, Знач ИмяМетода) + Результат = Ложь; + Если Найти(ТекстОшибки, "Метод объекта не обнаружен (" + ИмяМетода + ")") > 0 + ИЛИ Найти(ТекстОшибки, "Object method not found (" + ИмяМетода + ")") > 0 Тогда + Результат = Истина; + КонецЕсли; + + Возврат Результат; +КонецФункции + +Функция ЭтоОшибкаПроверки(ТекстОшибки) + + Возврат Найти(ТекстОшибки, "["+ Объект.СтатусыРезультатаТестирования.ОшибкаПроверки + "]") = 1; + +КонецФункции + +Функция ЭтоПропущенныйТест(ТекстОшибки) + + Возврат Найти(ТекстОшибки, "["+ Объект.СтатусыРезультатаТестирования.ТестПропущен + "]") > 0; + +КонецФункции + +// } Выполнение тестов + +// { Генерация результатов тестирования +&НаКлиенте +Функция СоздатьКонтейнерРезультатовТестирования(Знач КонтейнерДереваТестов) + ГруппаРезультатовТестирования = Новый Структура; + ГруппаРезультатовТестирования.Вставить("Ключ", КонтейнерДереваТестов.Ключ); + ГруппаРезультатовТестирования.Вставить("Тип", КонтейнерДереваТестов.Тип); + ГруппаРезультатовТестирования.Вставить("Имя", КонтейнерДереваТестов.Имя); + ГруппаРезультатовТестирования.Вставить("Состояние", Объект.СостоянияТестов.НеВыполнен); + ГруппаРезультатовТестирования.Вставить("КоличествоТестов", 0); + ГруппаРезультатовТестирования.Вставить("КоличествоСломанныхТестов", 0); + ГруппаРезультатовТестирования.Вставить("КоличествоОшибочныхТестов", 0); + ГруппаРезультатовТестирования.Вставить("КоличествоНеРеализованныхТестов", 0); + ГруппаРезультатовТестирования.Вставить("ВремяВыполнения", 0); + ГруппаРезультатовТестирования.Вставить("Строки", Новый Массив); + + Возврат ГруппаРезультатовТестирования; +КонецФункции + +&НаКлиенте +Функция СоздатьЭлементРезультатовТестирования(Знач ЭлементДереваТестов) + РезультатТестирования = Новый Структура; + РезультатТестирования.Вставить("Ключ", ЭлементДереваТестов.Ключ); + РезультатТестирования.Вставить("Тип", ЭлементДереваТестов.Тип); + РезультатТестирования.Вставить("Путь", ЭлементДереваТестов.Путь); + РезультатТестирования.Вставить("ИмяМетода", ЭлементДереваТестов.ИмяМетода); + РезультатТестирования.Вставить("Представление", ЭлементДереваТестов.Представление); + РезультатТестирования.Вставить("Параметры", ЭлементДереваТестов.Параметры); + РезультатТестирования.Вставить("Состояние", Объект.СостоянияТестов.НеВыполнен); + РезультатТестирования.Вставить("ВремяВыполнения", 0); + РезультатТестирования.Вставить("Сообщение", ""); + + Возврат РезультатТестирования; +КонецФункции +// } Генерация результатов тестирования + +// { История загрузки тестов +&НаСервере +Процедура СохранитьВИсториюЗагрузкиТестовНаСервере(Знач ИдентификаторЗагрузчика, Знач Путь) + ЭтотОбъектНаСервере = ЭтотОбъектНаСервере(); + ЭтотОбъектНаСервере.СохранитьВИсториюЗагрузкиТестов(ИдентификаторЗагрузчика, Путь); + ЗначениеВРеквизитФормы(ЭтотОбъектНаСервере, "Объект"); +КонецПроцедуры + +&НаСервере +Процедура ОбновитьКомандыИсторииЗагрузкиТестов() + ИсторияЗагрузкиТестов = Объект.Настройки.ИсторияЗагрузкиТестов; + ПодменюИсторияЗагрузкиТестов = Элементы.ПодменюИсторияЗагрузкиТестов; + Для Сч = 0 По ИсторияЗагрузкиТестов.Количество() - 1 Цикл + ИмяКоманды = "История_" + Сч; + НайденнаяКоманда = Команды.Найти(ИмяКоманды); + Если НайденнаяКоманда = Неопределено Тогда + НоваяКоманда = Команды.Добавить(ИмяКоманды); + НоваяКоманда.Действие = "Подключаемый_ЗагрузитьТестыИзИстории"; + ПунктМеню = Элементы.Добавить(НоваяКоманда.Имя, Тип("КнопкаФормы"), ПодменюИсторияЗагрузкиТестов); + ПунктМеню.ИмяКоманды = НоваяКоманда.Имя; + Иначе + ПунктМеню = Элементы.Найти(ИмяКоманды); + КонецЕсли; + ЭлементИстории = ИсторияЗагрузкиТестов[Сч]; + ПунктМеню.Заголовок = ЭлементИстории.ИдентификаторЗагрузчика + ": " + ЭлементИстории.Путь; + КонецЦикла; +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ЗагрузитьТестыИзИстории(Команда) + ИндексИстории = Число(Сред(Команда.Имя, Найти(Команда.Имя, "_") + 1)); + ИсторияЗагрузкиТестов = Объект.Настройки.ИсторияЗагрузкиТестов; + ЭлементИстории = ИсторияЗагрузкиТестов[ИндексИстории]; + ЗагрузитьТесты(ЭлементИстории.ИдентификаторЗагрузчика, ЭлементИстории.Путь); +КонецПроцедуры +// } История загрузки тестов + +// { Пакетный запуск +&НаКлиенте +Процедура ВыполнитьПакетныйЗапуск(Знач ПараметрЗапуска) + Перем РезультатыТестирования; + + ПарсерКоманднойСтроки = ЭтаФорма.Плагин("ПарсерКоманднойСтроки"); + ПараметрыЗапуска = ПарсерКоманднойСтроки.Разобрать(ПараметрЗапуска); + + Параметры_xddRun = Неопределено; + Если ПараметрыЗапуска.Свойство(ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddRun, Параметры_xddRun) Тогда + РезультатыТестирования = ЗагрузитьИВыполнитьТесты_ПакетныйРежим(Параметры_xddRun); + КонецЕсли; + + Параметры_xddReport = Неопределено; + Если ЗначениеЗаполнено(РезультатыТестирования) И ПараметрыЗапуска.Свойство(ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddReport, Параметры_xddReport) Тогда + СформироватьОтчетОТестированииИЭкспортировать_ПакетныйРежим(Параметры_xddReport, РезультатыТестирования); + КонецЕсли; + + Если ПараметрыЗапуска.Свойство(ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddShutdown) Тогда + ЗавершитьРаботуСистемы(Ложь); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция ЗагрузитьИВыполнитьТесты_ПакетныйРежим(Знач Параметры_xddRun) + Попытка + ИдентификаторЗагрузчика = Параметры_xddRun[0]; + Загрузчик = ЭтаФорма.Плагин(ИдентификаторЗагрузчика); + + ПутьКТестам = Параметры_xddRun[1]; + ДеревоТестовОтЗагрузчика = Загрузчик.Загрузить(ЭтаФорма, ПутьКТестам); + + РезультатыТестирования = ЭтаФорма.ВыполнитьТесты(Загрузчик, ДеревоТестовОтЗагрузчика); + Исключение + ОписаниеОшибки = "Ошибка загрузки и выполнения тестов в пакетном режиме + |" + ОписаниеОшибки(); + ЗафиксироватьОшибкуВЖурналеРегистрации(ОписаниеОшибки); + КонецПопытки; + + Возврат РезультатыТестирования; +КонецФункции + +&НаКлиенте +Процедура СформироватьОтчетОТестированииИЭкспортировать_ПакетныйРежим(Знач Параметры_xddReport, Знач РезультатыТестирования) + Попытка + ИдентификаторГенератораОтчета = Параметры_xddReport[0]; + ГенераторОтчета = ЭтаФорма.Плагин(ИдентификаторГенератораОтчета); + + Отчет = ГенераторОтчета.СоздатьОтчет(ЭтаФорма, РезультатыТестирования); + + ПутьКОтчету = Параметры_xddReport[1]; + ГенераторОтчета.Экспортировать(Отчет, ПутьКОтчету); + Исключение + ОписаниеОшибки = "Ошибка формирования и экспорта отчета о тестировании в пакетном режиме + |" + ОписаниеОшибки(); + ЗафиксироватьОшибкуВЖурналеРегистрации(ОписаниеОшибки); + КонецПопытки; +КонецПроцедуры + +&НаСервере +Процедура ЗафиксироватьОшибкуВЖурналеРегистрации(Знач ОписаниеОшибки) + ЗаписьЖурналаРегистрации(ЭтотОбъектНаСервере().Метаданные().Имя, УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки); +КонецПроцедуры +// } Пакетный запуск + +// { Контекст +&НаКлиенте +Процедура СохранитьКонтекст(Знач Контекст) Экспорт + Если Объект.ТекущийКонтейнер.СлучайныйПорядокВыполнения Тогда + ВызватьИсключение Объект.ВозможныеИсключения.СохранятьКонтекстТолькоВСтрогомРежиме; + КонецЕсли; + Объект.ТекущийКонтейнер.Контекст = Контекст; +КонецПроцедуры + +&НаКлиенте +Функция ПолучитьКонтекст() Экспорт + Если Объект.ТекущийКонтейнер.СлучайныйПорядокВыполнения Тогда + ВызватьИсключение Объект.ВозможныеИсключения.ПолучатьКонтекстТолькоВСтрогомРежиме; + КонецЕсли; + + Возврат Объект.ТекущийКонтейнер.Контекст; +КонецФункции +// } Контекст + +Процедура ВызватьОшибкуПроверки(СообщениеОшибки = "") Экспорт + + Префикс = "["+ Объект.СтатусыРезультатаТестирования.ОшибкаПроверки + "]"; + ВызватьИсключение Префикс + " " + СообщениеОшибки; + +КонецПроцедуры + +Процедура ПропуститьТест(Знач Сообщение = "") Экспорт + + Префикс = "[" + Объект.СтатусыРезультатаТестирования.ТестПропущен + "]"; + Если ПустаяСтрока(Сообщение) Тогда + Сообщение = НСтр("ru = 'Тест пропущен'"); + КонецЕсли; + ВызватьИсключение Префикс + " " + Сообщение; + +КонецПроцедуры + +// Выводит сообщение. В тестах ВСЕГДА должна использоваться ВМЕСТО метода Сообщить(). +// +Функция ВывестиСообщение(ТекстСообщения, Статус=Неопределено) Экспорт + + Сообщить(ТекстСообщения, Статус); + +КонецФункции + +// { Внешние интерфейсные инструменты +&НаКлиенте +Процедура ОткрытьИнструмент(Знач ИмяИнструмента, Знач ПутьИнструмента = "", Знач ИмяФормы = "Форма") + + // Для встроенного в состав конфигурации браузера тестов + // инструменты находятся также в составке конфигурации + Если Объект.ЭтоВстроеннаяОбработка Тогда + // Преобразование имени инструмента к имени обработки + Если ИмяИнструмента = "UILogToScript" Тогда + ИмяИнструмента = "ПреобразованиеЖурналаДействийПользователя"; + КонецЕсли; + ИмяИнструмента = ДополнитьИдентификаторПрефиксомПодсистемы(ИмяИнструмента, Объект.ИспользуемыйПрефиксПодсистемы); + ФормаИнструмента = ПолучитьФорму("Обработка." + ИмяИнструмента + "." + ИмяФормы); + Иначе + Если Не ПустаяСтрока(ПутьИнструмента) Тогда + ПутьКВнешнимИнструментам = ПутьИнструмента + "\"; + Иначе + ПутьКВнешнимИнструментам = ПолучитьПутьКВнешнимИнструментам(); + КонецЕсли; + ПутьИнструмента = ПутьКВнешнимИнструментам + ИмяИнструмента + ".epf"; + ФайлИнструмента = Новый Файл(ПутьИнструмента); + Если Не ФайлИнструмента.Существует() Тогда + Сообщить("Инструмент <" + ИмяИнструмента + "> не найден в каталоге <" + ФайлИнструмента.Путь + ">"); + Возврат; + КонецЕсли; + АдресХранилища = ""; + ПоместитьФайл(АдресХранилища, ФайлИнструмента.ПолноеИмя, , Ложь); + ПодключитьФайлОбработкиНаСервере(АдресХранилища, ИмяИнструмента); + + ФормаИнструмента = ПолучитьФорму("ВнешняяОбработка." + ИмяИнструмента + "." + ИмяФормы); + Если ФормаИнструмента = Неопределено Тогда + Сообщить("Инструмент <" + ИмяИнструмента + ">: не удалось получить основную форму!"); + Возврат; + КонецЕсли; + КонецЕсли; + ФормаИнструмента.Открыть(); + ФормаИнструмента = Неопределено; +КонецПроцедуры + +&НаКлиенте +Функция ПолучитьПутьКПлагинам() + // Для встроенного в состав конфигурации браузера тестов + // используемое имя файла не используется + Если НЕ Объект.ЭтоВстроеннаяОбработка Тогда + ФайлЯдра = Новый Файл(ЭтаФорма["ИспользуемоеИмяФайла"]); + Результат = ФайлЯдра.Путь + "Plugins\"; + КонецЕсли; + + Возврат Результат; +КонецФункции + +&НаКлиенте +Функция ПолучитьПутьКВнешнимИнструментам() + ФайлЯдра = Новый Файл(ЭтаФорма.ИспользуемоеИмяФайла); + Результат = ФайлЯдра.Путь + "Utils\"; + + Возврат Результат; +КонецФункции +// } Внешние интерфейстные инструменты + +// { Helpers +&НаКлиенте +Процедура ПодключитьВнешнююОбработку(ФайлОбработки) Экспорт + Если ПодключенныеВнешниеОбработки.Получить(ФайлОбработки.ИмяБезРасширения) = Неопределено Тогда + + ЭтоОтчет = (НРег(ФайлОбработки.Расширение) = ".erf"); + АдресХранилища = ""; + ПоместитьФайл(АдресХранилища, ФайлОбработки.ПолноеИмя, , Ложь, ЭтаФорма.УникальныйИдентификатор); + + ПодключитьФайлОбработкиНаСервере(АдресХранилища, ФайлОбработки.ИмяБезРасширения, ЭтоОтчет); + + ПодключенныеВнешниеОбработки.Вставить(ФайлОбработки.ИмяБезРасширения, Истина); + КонецЕсли; +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ПодключитьФайлОбработкиНаСервере(Знач АдресХранилища, Знач ИдентификаторОбработки, ЭтоОтчет = Ложь) + Если ЭтоОтчет = Истина Тогда + ВнешниеОтчеты.Подключить(АдресХранилища, ИдентификаторОбработки, Ложь); + Иначе + ВнешниеОбработки.Подключить(АдресХранилища, ИдентификаторОбработки, Ложь); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция ПолучитьОписаниеКонтекстаВыполнения(Знач Идентификатор, Знач ЭтоВнутренняяОбработка = Ложь) Экспорт + ОписаниеКонтекстаВыполнения = Новый Структура("Идентификатор, ЭтоВнутренняяОбработка", Идентификатор, ЭтоВнутренняяОбработка); + + Возврат Новый ФиксированнаяСтруктура(ОписаниеКонтекстаВыполнения); +КонецФункции + +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции + +&НаКлиенте +Процедура ИнициализироватьИндикаторВыполнения(Знач КоличествоТестовыхМетодов = 0) + Элементы.ИндикаторВыполнения.МаксимальноеЗначение = КоличествоТестовыхМетодов; + ИндикаторВыполнения = 0; + Элементы.ИндикаторВыполнения.ЦветРамки = Новый Цвет(0, 174, 0); // Зеленый +КонецПроцедуры + +&НаКлиенте +Процедура ОповеститьОСобытии(Знач Подписчик, Знач Событие, Знач ПараметрыСобытия) + Выполнить("Подписчик.ОбработатьСобытиеВыполненияТестов(Событие, ПараметрыСобытия);"); +КонецПроцедуры + +&НаКлиенте +Функция ПеремешатьМассив(Знач ИсходныйМассив) Экспорт + Результат = Новый Массив; + Для Каждого Элемент Из ИсходныйМассив Цикл + Результат.Добавить(Элемент); + КонецЦикла; + + // алгоритм перемешивания взят из книги Кнута "Искусство программирования" т.2 + ГСЧ = Новый ГенераторСлучайныхЧисел(); + ПоследнийИндекс = Результат.ВГраница(); + Для Индекс = 1 По ПоследнийИндекс Цикл + ТекущийИндекс = ПоследнийИндекс - Индекс + 1; + НовыйИндекс = ГСЧ.СлучайноеЧисло(0, ТекущийИндекс); + Если НовыйИндекс <> ТекущийИндекс Тогда + Значение = Результат[НовыйИндекс]; + Результат[НовыйИндекс] = Результат[ТекущийИндекс]; + Результат[ТекущийИндекс] = Значение; + КонецЕсли; + КонецЦикла; + + Возврат Результат; +КонецФункции + +&НаКлиенте +Функция НайтиРезультатТестированияПоИдентификатору(Знач КонтейнерРезультатовТестирования, Знач ИдентификаторТеста, Знач ВключатьПодчиненные = Ложь) Экспорт + Результат = НайтиРезультатТестированияПоИдентификатору_НаСервере(КонтейнерРезультатовТестирования, ИдентификаторТеста, ВключатьПодчиненные); + + Возврат Результат; +КонецФункции + +&НаСервере +Функция НайтиРезультатТестированияПоИдентификатору_НаСервере(Знач КонтейнерРезультатовТестирования, Знач ИдентификаторТеста, Знач ВключатьПодчиненные) Экспорт + Результат = ЭтотОбъектНаСервере().НайтиРезультатТестированияПоИдентификатору(КонтейнерРезультатовТестирования, ИдентификаторТеста, ВключатьПодчиненные); + + Возврат Результат; +КонецФункции + +&НаКлиенте +Процедура СброситьПодключенныеВнешниеОбработки() + ПодключенныеВнешниеОбработки = Новый Соответствие; +КонецПроцедуры + +&НаКлиенте +Функция ПараметрыМетода(Знач Парам1, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, Знач Парам4 = Неопределено, Знач Парам5 = Неопределено, Знач Парам6 = Неопределено, Знач Парам7 = Неопределено, Знач Парам8 = Неопределено, Знач Парам9 = Неопределено) Экспорт + ВсеПараметры = Новый Массив; + ВсеПараметры.Добавить(Парам1); + ВсеПараметры.Добавить(Парам2); + ВсеПараметры.Добавить(Парам3); + ВсеПараметры.Добавить(Парам4); + ВсеПараметры.Добавить(Парам5); + ВсеПараметры.Добавить(Парам6); + ВсеПараметры.Добавить(Парам7); + ВсеПараметры.Добавить(Парам8); + ВсеПараметры.Добавить(Парам9); + + ИндексСПоследнимПараметром = 0; + Для Сч = 0 По ВсеПараметры.ВГраница() Цикл + Индекс = ВсеПараметры.ВГраница() - Сч; + Если ВсеПараметры[Индекс] <> Неопределено Тогда + ИндексСПоследнимПараметром = Индекс; + Прервать; + КонецЕсли; + КонецЦикла; + + ПараметрыМетода = Новый Массив; + Для Сч = 0 По ИндексСПоследнимПараметром Цикл + ПараметрыМетода.Добавить(ВсеПараметры[Сч]); + КонецЦикла; + + Возврат ПараметрыМетода; +КонецФункции + +&НаСервере +Процедура ЗагрузитьВстроенныеПлагины() + + ОбъектНаСервере = ЭтотОбъектНаСервере(); + Объект.Плагины = ОбъектНаСервере.ПолучитьПлагины(); + +КонецПроцедуры + +// } Helpers + +// { Подсистема конфигурации xUnitFor1C + +// Универсальная функция для проверки наличия +// свойств у значения любого типа данных +// Переменные: +// 1. Переменная - переменная любого типа, +// для которой необходимо проверить наличие свойства +// 2. ИмяСвойства - переменная типа "Строка", +// содержащая искомое свойства +// +&НаКлиентеНаСервереБезКонтекста +Функция ПеременнаяСодержитСвойство(Переменная, ИмяСвойства) + // Инициализируем структуру для теста + // с ключом (значение переменной "ИмяСвойства") + // и значением произвольного GUID'а + GUIDПроверка = Новый УникальныйИдентификатор; + СтруктураПроверка = Новый Структура; + СтруктураПроверка.Вставить(ИмяСвойства, GUIDПроверка); + // Заполняем созданную структуру из переданного + // значения переменной + ЗаполнитьЗначенияСвойств(СтруктураПроверка, Переменная); + // Если значение для свойства структуры осталось + // NULL, то искомое свойство не найдено, + // и наоборот. + Если СтруктураПроверка[ИмяСвойства] = GUIDПроверка Тогда + Возврат Ложь; + Иначе + Возврат Истина; + КонецЕсли; +КонецФункции +&НаКлиентеНаСервереБезКонтекста +Функция ЗаполнитьСвойствоПриНаличии(ОбъектЗаполнения, ИмяСвойство, ЗначениеСвойства) + + Если ПеременнаяСодержитСвойство(ОбъектЗаполнения, ИмяСвойство) Тогда + ОбъектЗаполнения[ИмяСвойство] = ЗначениеСвойства; + КонецЕсли; + +КонецФункции + +&НаКлиенте +Функция ДополнитьИдентификаторПрефиксомПодсистемы(Знач Идентификатор, Знач ИспользуемыйПрефиксПодсистемы) Экспорт + + Если НЕ ЗначениеЗаполнено(ИспользуемыйПрефиксПодсистемы) Тогда + Возврат Идентификатор; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(ИспользуемыйПрефиксПодсистемы); + Если Лев(Идентификатор, ДлинаПрефикса) = ИспользуемыйПрефиксПодсистемы Тогда + Возврат Идентификатор; + Иначе + Возврат ИспользуемыйПрефиксПодсистемы + Идентификатор; + КонецЕсли; + +КонецФункции +&НаКлиенте +Функция ПолучитьИдентификаторБезПрефиксаПодсистемы(Знач Идентификатор, Знач ИспользуемыйПрефиксПодсистемы) Экспорт + + Если НЕ ЗначениеЗаполнено(ИспользуемыйПрефиксПодсистемы) Тогда + Возврат Идентификатор; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(ИспользуемыйПрефиксПодсистемы); + Если Лев(Идентификатор, ДлинаПрефикса) = ИспользуемыйПрефиксПодсистемы Тогда + Возврат Прав(Идентификатор, СтрДлина(Идентификатор) - ДлинаПрефикса); + Иначе + Возврат Идентификатор; + КонецЕсли; + +КонецФункции + +&НаСервере +Функция СоздатьОбъектПлагина(Идентификатор, ВстроенаВКонфигурацию = Ложь, ЭтоОтчет = Ложь) + + ОбъектНаСервере = ЭтотОбъектНаСервере(); + + Возврат ОбъектНаСервере.СоздатьОбъектПлагина(Идентификатор, ВстроенаВКонфигурацию, ЭтоОтчет); + +КонецФункции + +// } Подсистема конфигурации xUnitFor1C diff --git "a/src/xddTestRunner/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/xddTestRunner/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" deleted file mode 100644 index e0581d0d..00000000 --- "a/src/xddTestRunner/Form/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/\320\244\320\276\321\200\320\274\320\260.txt" +++ /dev/null @@ -1 +0,0 @@ -&НаКлиенте Перем КэшФормПлагинов; &НаКлиенте Перем ПодключенныеВнешниеОбработки; // { События формы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОбъектНаСервере = РеквизитФормыВЗначение("Объект"); ЭтаФорма.Заголовок = ОбъектНаСервере.ЗаголовокФормы(); ИспользуемоеИмяФайла = ОбъектНаСервере.ИспользуемоеИмяФайла; ОбновитьКомандыИсторииЗагрузкиТестов(); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии() ЗагрузитьПлагины(); КэшироватьПеречисленияПлагинов(); СброситьПодключенныеВнешниеОбработки(); ЭтоПакетныйЗапуск = ЗначениеЗаполнено(ПараметрЗапуска); Если ЭтоПакетныйЗапуск Тогда ВыполнитьПакетныйЗапуск(ПараметрЗапуска); Иначе ПерезагрузитьПоследниеТестыПоИстории(); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПриЗакрытии() ПриЗакрытииНаСервере(); КонецПроцедуры &НаСервере Процедура ПриЗакрытииНаСервере() ЭтотОбъектНаСервере().СохранитьНастройки(); КонецПроцедуры &НаКлиенте Процедура ОбработатьСобытиеВыполненияТестов(Знач ИмяСобытия, Знач Параметр) Экспорт Если ИмяСобытия = Объект.ВозможныеСобытия.ВыполненТестовыйМетод Тогда Если Параметр.Состояние = Объект.СостоянияТестов.НеРеализован Тогда Если Элементы.ИндикаторВыполнения.ЦветРамки <> WebЦвета.Красный Тогда Элементы.ИндикаторВыполнения.ЦветРамки = WebЦвета.Золотой; КонецЕсли; ИначеЕсли Параметр.Состояние = Объект.СостоянияТестов.Сломан Тогда Элементы.ИндикаторВыполнения.ЦветРамки = WebЦвета.Красный; КонецЕсли; ИндикаторВыполнения = ИндикаторВыполнения + 1; КонецЕсли; ОбновитьОтображениеДанных(); КонецПроцедуры // } События формы // { Управляющие воздействия пользователя &НаКлиенте Процедура ЗагрузитьТестыПоУмолчанию(Команда) ЗагрузчикПоУмолчанию = ЗагрузчикПоУмолчанию(); ИдентификаторЗагрузчикаПоУмолчанию = ЗагрузчикПоУмолчанию.ОписаниеПлагина(Объект.ТипыПлагинов).Идентификатор; Подключаемый_ИнтерактивныйВызовЗагрузчика(Новый Структура("Имя", ИдентификаторЗагрузчикаПоУмолчанию)); КонецПроцедуры &НаКлиенте Процедура КомандаВыполнитьВсеТесты(Команда) ВыполнитьТестыНаКлиенте(); КонецПроцедуры &НаКлиенте Процедура ВыполнитьТестыНаКлиенте(Знач Фильтр = Неопределено) Если ЗначениеЗаполнено(ЭтаФорма.ДеревоОтЗагрузчика) Тогда ОчиститьСообщения(); КоличествоТестовыхМетодов = ПолучитьКоличествоТестовыхМетодов(ЭтаФорма.ДеревоОтЗагрузчика, Фильтр); ИнициализироватьИндикаторВыполнения(КоличествоТестовыхМетодов); СброситьПодключенныеВнешниеОбработки(); РезультатыТестирования = ВыполнитьТесты(Плагин(ИдентификаторЗагрузчика), ЭтаФорма.ДеревоОтЗагрузчика, Фильтр, ЭтаФорма); ОбновитьДеревоТестовНаОснованииРезультатовТестирования(ДеревоТестов.ПолучитьЭлементы()[0], РезультатыТестирования); ГенераторОтчетаMXL = Плагин("ГенераторОтчетаMXL"); Отчет = ГенераторОтчетаMXL.СоздатьОтчет(ЭтаФорма, РезультатыТестирования); ГенераторОтчетаMXL.Показать(Отчет); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура КомандаВыполнитьВыделенныеТесты(Команда) Фильтр = Новый Массив; ВыделенныеСтроки = Элементы.ДеревоТестов.ВыделенныеСтроки; Для каждого ИдентификаторВыделеннойСтроки Из ВыделенныеСтроки Цикл ВыделеннаяСтрока = ДеревоТестов.НайтиПоИдентификатору(ИдентификаторВыделеннойСтроки); Фильтр.Добавить(Новый УникальныйИдентификатор(ВыделеннаяСтрока.Ключ)); КонецЦикла; Если Фильтр.Количество() > 0 Тогда ВыполнитьТестыНаКлиенте(Фильтр); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура КомандаПерезагрузитьФорму(Команда) Закрыть(); АдресХранилища = ""; ПоместитьФайл(АдресХранилища, ЭтаФорма.ИспользуемоеИмяФайла, , Ложь); ПодключитьФайлОбработкиНаСервере(АдресХранилища, Неопределено); НоваяФорма = ПолучитьФорму(ЭтаФорма.ИмяФормы,,,Истина); НоваяФорма.ИспользуемоеИмяФайла = ЭтаФорма.ИспользуемоеИмяФайла; НоваяФорма.Открыть(); КонецПроцедуры &НаКлиенте Процедура ПерезагрузитьПоследниеТестыПоИстории(Команда = Неопределено) ИсторияЗагрузкиТестов = Объект.Настройки.ИсторияЗагрузкиТестов; Если ИсторияЗагрузкиТестов.Количество() > 0 Тогда ЭлементИстории = ИсторияЗагрузкиТестов[0]; Попытка ЗагрузитьТесты(ЭлементИстории.ИдентификаторЗагрузчика, ЭлементИстории.Путь); Исключение // TODO Сообщить("Не удалось загрузить тесты из истории <" + ЭлементИстории.ИдентификаторЗагрузчика + ": " + ЭлементИстории.Путь + ">" + Символы.ПС + ОписаниеОшибки()); КонецПопытки; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ГенераторМакетовДанных(Команда) ОткрытьИнструмент("СериализаторMXL", ПолучитьПутьКПлагинам()); КонецПроцедуры &НаКлиенте Процедура ПоказатьГУИД(Команда) ОткрытьИнструмент("xddGuidShow"); КонецПроцедуры &НаКлиенте Процедура КонвертерТестов(Команда) ОткрытьИнструмент("xddTestsConvertIntoRebornFormat"); КонецПроцедуры // } Управляющие воздействия пользователя // { Плагины &НаКлиенте Процедура ЗагрузитьПлагины() Объект.Плагины = Новый Структура; КэшФормПлагинов = Новый Структура; КаталогПлагинов = ПолучитьПутьКПлагинам(); НайденныеФайлы = НайтиФайлы(КаталогПлагинов, "*.epf", Ложь); ПомещаемыеФайлы = Новый Массив; ИдентификаторыПлагинов = Новый Соответствие; Для каждого ФайлОбработки Из НайденныеФайлы Цикл ПомещаемыйФайл = Новый ОписаниеПередаваемогоФайла(ФайлОбработки.ПолноеИмя); ПомещаемыеФайлы.Добавить(ПомещаемыйФайл); ИмяПлагина = ФайлОбработки.ИмяБезРасширения; ИдентификаторыПлагинов.Вставить(ФайлОбработки.ПолноеИмя, ИмяПлагина); КонецЦикла; ЗагруженныеФайлы = Новый Массив; Если ПомещаемыеФайлы.Количество() Тогда ПоместитьФайлы(ПомещаемыеФайлы, ЗагруженныеФайлы,,Ложь, ЭтаФорма.УникальныйИдентификатор); КонецЕсли; ОписанияПлагинов = ПодключитьПлагиныНаСервере(ЗагруженныеФайлы); Для Каждого ЗагруженныйФайл Из ЗагруженныеФайлы Цикл ИмяПлагина = ИдентификаторыПлагинов[ЗагруженныйФайл.Имя]; ОписаниеПлагина = ОписанияПлагинов[ЗагруженныйФайл.Имя]; Объект.Плагины.Вставить(ОписаниеПлагина.Идентификатор, ИмяПлагина); КэшФормПлагинов.Вставить(ОписаниеПлагина.Идентификатор, Истина); КонецЦикла; ДобавитьКомандыЗагрузчиковНаФорме(); КонецПроцедуры &НаСервере Функция ПодключитьПлагиныНаСервере(Знач ЗагружаемыеФайлы) ОписанияПлагинов = Новый Соответствие; Для Каждого ОписаниеФайла Из ЗагружаемыеФайлы Цикл ФайлОбъект = Новый Файл(ОписаниеФайла.Имя); ИмяПлагина = ФайлОбъект.ИмяБезРасширения; ПодключитьФайлОбработкиНаСервере(ОписаниеФайла.Хранение, ИмяПлагина); Попытка ОбъектОбработки = ВнешниеОбработки.Создать(ИмяПлагина, Ложь); ОбъектОбработки.Инициализация(ЭтотОбъектНаСервере()); ОписанияПлагинов.Вставить(ОписаниеФайла.Имя, ОбъектОбработки.ОписаниеПлагина(Объект.ТипыПлагинов)); Исключение Ошибка = "Возникла ошибка при загрузке плагина: "+ОписаниеФайла.Имя + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); Сообщить(Ошибка); Продолжить; КонецПопытки; КонецЦикла; Возврат Новый ФиксированноеСоответствие(ОписанияПлагинов); КонецФункции // ПодключитьПлагиныНаСервере() &НаКлиенте Процедура КэшироватьПеречисленияПлагинов() Объект.ТипыУзловДереваТестов = Плагин("ПостроительДереваТестов").Объект.ТипыУзловДереваТестов; КонецПроцедуры &НаКлиенте Функция Плагин(Знач Идентификатор) Экспорт ОбъектПлагин = КэшФормПлагинов[Идентификатор]; Если ОбъектПлагин = Неопределено Тогда ВызватьИсключение НСтр("ru = 'Неизвестный идентификатор плагина: <"+Идентификатор+">'"); ИначеЕсли ОбъектПлагин = Истина Тогда // загрузка клиентского плагина "По требованию" ИмяПлагина = Объект.Плагины[Идентификатор]; Попытка ОбъектПлагин = ПолучитьФорму("ВнешняяОбработка." + ИмяПлагина + ".Форма", , ЭтаФорма); КэшФормПлагинов.Вставить(Идентификатор, ОбъектПлагин); Исключение // TODO добавить поведение при отсутствии управляемой формы у плагина ВызватьИсключение; КонецПопытки; КонецЕсли; Возврат ОбъектПлагин; КонецФункции &НаСервере Процедура ДобавитьКомандыЗагрузчиковНаФорме() ОписанияЗагрузчиков = ПолучитьОписанияЗагрузчиковНаСервере(); Для каждого Описание Из ОписанияЗагрузчиков Цикл Команда = ЭтаФорма.Команды.Добавить(Описание.Идентификатор); Команда.Действие = "Подключаемый_ИнтерактивныйВызовЗагрузчика"; ПунктМеню = ЭтаФорма.Элементы.Добавить(Команда.Имя, Тип("КнопкаФормы"), ЭтаФорма.Элементы.ПлагиныЗагрузчики); ПунктМеню.Заголовок = Описание.Представление; ПунктМеню.ИмяКоманды = Команда.Имя; КонецЦикла; КонецПроцедуры &НаКлиенте Функция ПолучитьОписанияПлагиновПоТипу(Знач ТипПлагина) Экспорт Результат = ПолучитьОписанияПлагиновПоТипуНаСервере(ТипПлагина); Возврат Результат; КонецФункции &НаСервере Функция ПолучитьОписанияПлагиновПоТипуНаСервере(Знач ТипПлагина) ОбъектНаСервере = РеквизитФормыВЗначение("Объект"); Результат = ОбъектНаСервере.ПолучитьОписанияПлагиновПоТипу(ТипПлагина); Возврат Результат; КонецФункции &НаСервере Функция ПолучитьОписанияЗагрузчиковНаСервере() ОбъектНаСервере = РеквизитФормыВЗначение("Объект"); ОписанияЗагрузчиков = ОбъектНаСервере.ПолучитьОписанияПлагиновПоТипу(ОбъектНаСервере.ТипыПлагинов.Загрузчик); Возврат ОписанияЗагрузчиков; КонецФункции &НаКлиенте Функция ЗагрузчикПоУмолчанию() Экспорт Возврат Плагин("ЗагрузчикКаталога"); КонецФункции // } Плагины // { Работа с деревом тестов &НаКлиенте Процедура Подключаемый_ИнтерактивныйВызовЗагрузчика(Команда) ИдентификаторВыбранногоЗагрузчика = Команда.Имя; Путь = Плагин(ИдентификаторВыбранногоЗагрузчика).ВыбратьПутьИнтерактивно(); Если ЗначениеЗаполнено(Путь) Тогда ЗагрузитьТесты(ИдентификаторВыбранногоЗагрузчика, Путь); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ЗагрузитьТесты(Знач ИдентификаторВыбранногоЗагрузчика, Знач Путь) ИнициализироватьИндикаторВыполнения(); ЭтаФорма.ИдентификаторЗагрузчика = ИдентификаторВыбранногоЗагрузчика; ФормаЗагрузчика = Плагин(ИдентификаторВыбранногоЗагрузчика); Попытка ЭтаФорма.ДеревоОтЗагрузчика = ФормаЗагрузчика.Загрузить(ЭтаФорма, Путь); Исключение Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Возврат; КонецПопытки; ЭлементыДереваТестов = ЭтаФорма.ДеревоТестов.ПолучитьЭлементы(); ЭлементыДереваТестов.Очистить(); ЗаполнитьДеревоТестов(ЭтаФорма.ДеревоТестов, ДеревоОтЗагрузчика); КоличествоТестовыхСлучаев = ЗаполнитьКоличествоТестовыхСлучаевПоВсемуДеревуТестов(ЭтаФорма.ДеревоТестов); РазвернутьСтрокиДерева(КоличествоТестовыхСлучаев < 30); СохранитьВИсториюЗагрузкиТестовНаСервере(ИдентификаторВыбранногоЗагрузчика, Путь); ОбновитьКомандыИсторииЗагрузкиТестов(); КонецПроцедуры &НаКлиенте Процедура ЗаполнитьДеревоТестов(РодительскаяСтрокаДереваТестов, Знач КонтейнерДереваТестовЗагрузчика) СтрокаКонтейнера = РодительскаяСтрокаДереваТестов.ПолучитьЭлементы().Добавить(); СтрокаКонтейнера.Имя = КонтейнерДереваТестовЗагрузчика.Имя; СтрокаКонтейнера.ИконкаУзла = КонтейнерДереваТестовЗагрузчика.ИконкаУзла; СтрокаКонтейнера.Ключ = КонтейнерДереваТестовЗагрузчика.Ключ; Для каждого ЭлементКоллекции Из КонтейнерДереваТестовЗагрузчика.Строки Цикл Если ЭлементКоллекции.Тип = Объект.ТипыУзловДереваТестов.Контейнер Тогда ЗаполнитьДеревоТестов(СтрокаКонтейнера, ЭлементКоллекции); ИначеЕсли ЭлементКоллекции.Тип = Объект.ТипыУзловДереваТестов.Элемент Тогда СтрокаЭлемента = СтрокаКонтейнера.ПолучитьЭлементы().Добавить(); СтрокаЭлемента.Имя = ЭлементКоллекции.Представление; СтрокаЭлемента.Путь = ЭлементКоллекции.Путь; СтрокаЭлемента.ИконкаУзла = ЭлементКоллекции.ИконкаУзла; СтрокаЭлемента.Ключ = ЭлементКоллекции.Ключ; КонецЕсли; КонецЦикла; КонецПроцедуры &НаКлиенте Функция ЗаполнитьКоличествоТестовыхСлучаевПоВсемуДеревуТестов(РодительскаяСтрока) КоллекцияСтрок = РодительскаяСтрока.ПолучитьЭлементы(); Если КоллекцияСтрок.Количество() = 0 Тогда Возврат 1; КонецЕсли; ОбщееКоличествоТестов = 0; Для каждого СтрокаДерева из КоллекцияСтрок Цикл КоличествоТестовВСтроке = ЗаполнитьКоличествоТестовыхСлучаевПоВсемуДеревуТестов(СтрокаДерева); СтрокаДерева.КоличествоТестов = КоличествоТестовВСтроке; ОбщееКоличествоТестов = ОбщееКоличествоТестов + КоличествоТестовВСтроке; КонецЦикла; Возврат ОбщееКоличествоТестов; КонецФункции &НаКлиенте Процедура РазвернутьСтрокиДерева(Знач ВключаяПодчиненные = Ложь) Для каждого СтрокаДерева из ДеревоТестов.ПолучитьЭлементы() Цикл Идентификатор = СтрокаДерева.ПолучитьИдентификатор(); Элементы.ДеревоТестов.Развернуть(Идентификатор, ВключаяПодчиненные); КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ОбновитьДеревоТестовНаОснованииРезультатовТестирования(УзелДереваТестов, Знач РезультатТестирования) УзелДереваТестов.Состояние = РезультатТестирования.Состояние; УзелДереваТестов.ВремяВыполнения = РезультатТестирования.ВремяВыполнения; Если РезультатТестирования.Тип = Объект.ТипыУзловДереваТестов.Контейнер Тогда Для каждого ДочернийРезультатТестирования Из РезультатТестирования.Строки Цикл ДочернийУзелДереваТестов = НайтиСтрокуВДеревеТестовПоКлючу(УзелДереваТестов, ДочернийРезультатТестирования.Ключ); ОбновитьДеревоТестовНаОснованииРезультатовТестирования(ДочернийУзелДереваТестов, ДочернийРезультатТестирования); КонецЦикла; ИначеЕсли РезультатТестирования.Тип = Объект.ТипыУзловДереваТестов.Элемент Тогда Если РезультатТестирования.Свойство("Сообщение") И ЗначениеЗаполнено(РезультатТестирования.Сообщение) Тогда Сообщить(РезультатТестирования.Сообщение, СтатусСообщения.ОченьВажное); КонецЕсли; КонецЕсли; КонецПроцедуры &НаКлиенте Функция НайтиСтрокуВДеревеТестовПоКлючу(УзелДереваТестов, Знач Ключ) Результат = Неопределено; Для каждого ЭлементКоллекции Из УзелДереваТестов.ПолучитьЭлементы() Цикл Если ЭлементКоллекции.Ключ = Ключ Тогда Результат = ЭлементКоллекции; Прервать; КонецЕсли; КонецЦикла; Возврат Результат; КонецФункции // } Работа с деревом тестов // { Выполнение тестов &НаКлиенте Функция ПолучитьКоличествоТестовыхМетодов(Знач КонтейнерДереваТестов, Знач Фильтр = Неопределено) Экспорт Возврат ПолучитьКоличествоТестовыхМетодовНаСервере(КонтейнерДереваТестов, Фильтр); КонецФункции &НаСервере Функция ПолучитьКоличествоТестовыхМетодовНаСервере(Знач КонтейнерДереваТестов, Знач Фильтр) Возврат ЭтотОбъектНаСервере().ПолучитьКоличествоТестовыхМетодов(КонтейнерДереваТестов, Фильтр); КонецФункции &НаКлиенте Функция ВыполнитьТесты(Знач Загрузчик, Знач КонтейнерДереваТестов, Знач Фильтр = Неопределено, Знач Подписчик = Неопределено) Экспорт РезультатТестирования = СоздатьКонтейнерРезультатовТестирования(КонтейнерДереваТестов); ФильтрДляДочернихУзлов = Неопределено; Если Не УзелДереваТестовУдовлетворяетФильтру(КонтейнерДереваТестов, Фильтр) Тогда ФильтрДляДочернихУзлов = Фильтр; КонецЕсли; Если КонтейнерДереваТестов.СлучайныйПорядокВыполнения Тогда СтрокиКонтейнера = ПеремешатьМассив(КонтейнерДереваТестов.Строки); Иначе СтрокиКонтейнера = КонтейнерДереваТестов.Строки; КонецЕсли; Для каждого ДочернийУзел Из СтрокиКонтейнера Цикл ДочернийРезультатТестирования = Неопределено; Если ДочернийУзел.Тип = Объект.ТипыУзловДереваТестов.Контейнер Тогда ДочернийРезультатТестирования = ВыполнитьТесты(Загрузчик, ДочернийУзел, ФильтрДляДочернихУзлов, Подписчик); ИначеЕсли ДочернийУзел.Тип = Объект.ТипыУзловДереваТестов.Элемент Тогда Если УзелДереваТестовУдовлетворяетФильтру(ДочернийУзел, ФильтрДляДочернихУзлов) Тогда КонтекстВыполнения = ПолучитьКонтекстВыполненияПоПути(Загрузчик, ДочернийУзел.Путь); Объект.ТекущийКонтейнер = КонтейнерДереваТестов; ДочернийРезультатТестирования = ВыполнитьТестовыйМетод(КонтекстВыполнения, ДочернийУзел); КонтейнерДереваТестов.Контекст = Объект.ТекущийКонтейнер.Контекст; Если Подписчик <> Неопределено Тогда ОповеститьОСобытии(Подписчик, Объект.ВозможныеСобытия.ВыполненТестовыйМетод, ДочернийРезультатТестирования); КонецЕсли; КонецЕсли; КонецЕсли; Если ДочернийРезультатТестирования <> Неопределено Тогда РезультатТестирования.Строки.Добавить(ДочернийРезультатТестирования); РезультатТестирования.Состояние = ВыбратьХудшееСостояниеВыполненияТестов(РезультатТестирования.Состояние, ДочернийРезультатТестирования.Состояние); ЗаполнитьДанныеСтатистики(РезультатТестирования, ДочернийРезультатТестирования); Если Не КонтейнерДереваТестов.СлучайныйПорядокВыполнения И ДочернийРезультатТестирования.Состояние <> Объект.СостоянияТестов.Пройден Тогда Прервать; КонецЕсли; КонецЕсли; КонецЦикла; Если РезультатТестирования.Строки.Количество() = 0 Тогда РезультатТестирования = Неопределено; КонецЕсли; Возврат РезультатТестирования; КонецФункции &НаКлиенте Функция УзелДереваТестовУдовлетворяетФильтру(Знач УзелДереваТестов, Знач Фильтр) Возврат (Фильтр = Неопределено) Или (Фильтр.Найти(УзелДереваТестов.Ключ) <> Неопределено); КонецФункции &НаКлиенте Функция ПолучитьКонтекстВыполненияПоПути(Знач Загрузчик, Знач Путь) КонтекстВыполнения = Загрузчик.ПолучитьКонтекстПоПути(ЭтаФорма, Путь); Возврат КонтекстВыполнения; КонецФункции &НаКлиенте Функция ЭтоСерверныйКонтекстВыполнения(Знач КонтекстВыполнения) Результат = ТипЗнч(КонтекстВыполнения) = Тип("ФиксированнаяСтруктура"); Возврат Результат; КонецФункции &НаКлиенте Процедура ЗаполнитьДанныеСтатистики(РезультатТестирования, Знач ДочернийРезультатТестирования) Если ДочернийРезультатТестирования.Тип = Объект.ТипыУзловДереваТестов.Контейнер Тогда РезультатТестирования.КоличествоТестов = РезультатТестирования.КоличествоТестов + ДочернийРезультатТестирования.КоличествоТестов; РезультатТестирования.КоличествоСломанныхТестов = РезультатТестирования.КоличествоСломанныхТестов + ДочернийРезультатТестирования.КоличествоСломанныхТестов; РезультатТестирования.КоличествоНеРеализованныхТестов = РезультатТестирования.КоличествоНеРеализованныхТестов + ДочернийРезультатТестирования.КоличествоНеРеализованныхТестов; РезультатТестирования.КоличествоОшибочныхТестов = РезультатТестирования.КоличествоОшибочныхТестов + ДочернийРезультатТестирования.КоличествоОшибочныхТестов; ИначеЕсли ДочернийРезультатТестирования.Тип = Объект.ТипыУзловДереваТестов.Элемент Тогда РезультатТестирования.КоличествоТестов = РезультатТестирования.КоличествоТестов + 1; Если ДочернийРезультатТестирования.Состояние = Объект.СостоянияТестов.Сломан Тогда РезультатТестирования.КоличествоСломанныхТестов = РезультатТестирования.КоличествоСломанныхТестов + 1; ИначеЕсли ДочернийРезультатТестирования.Состояние = Объект.СостоянияТестов.НеРеализован Тогда РезультатТестирования.КоличествоНеРеализованныхТестов = РезультатТестирования.КоличествоНеРеализованныхТестов + 1; ИначеЕсли ДочернийРезультатТестирования.Состояние = Объект.СостоянияТестов.НеизвестнаяОшибка Тогда РезультатТестирования.КоличествоОшибочныхТестов = РезультатТестирования.КоличествоОшибочныхТестов + 1; КонецЕсли; КонецЕсли; РезультатТестирования.ВремяВыполнения = РезультатТестирования.ВремяВыполнения + ДочернийРезультатТестирования.ВремяВыполнения; КонецПроцедуры &НаКлиенте Функция ВыбратьХудшееСостояниеВыполненияТестов(Знач Состояние1, Знач Состояние2) Возврат Макс(Состояние1, Состояние2); КонецФункции &НаКлиенте Функция ВыполнитьТестовыйМетод(Знач КонтекстВыполнения, Знач ЭлементДереваТестов) Перем РезультатТестирования; Если ЭтоСерверныйКонтекстВыполнения(КонтекстВыполнения) Тогда РезультатТестирования = ВыделитьТестовыйМетодНаСервереСОбработкойОшибокПередачиМеждуНаКлиентомИСервером(КонтекстВыполнения, ЭлементДереваТестов); Иначе РезультатТестирования = ВыполнитьТестовыйМетодНаКлиенте(КонтекстВыполнения, ЭлементДереваТестов); КонецЕсли; Возврат РезультатТестирования; КонецФункции &НаКлиенте Функция ВыполнитьТестовыйМетодНаКлиенте(Знач КонтекстВыполнения, Знач ЭлементДереваТестов) Экспорт РезультатТестирования = СоздатьЭлементРезультатовТестирования(ЭлементДереваТестов); НачалоВыполнения = ТекущаяУниверсальнаяДатаВМиллисекундах(); Если ВыполнитьИнициализациюКонтекста(КонтекстВыполнения, РезультатТестирования) Тогда Попытка ВыполнитьНеобязательнуюПроцедуруТестовогоСлучая(КонтекстВыполнения, ЭлементДереваТестов.ПередЗапускомТеста); ВыполнитьПроцедуруКонтекста(КонтекстВыполнения, ЭлементДереваТестов.ИмяМетода, ЭлементДереваТестов.Параметры); РезультатТестирования.Состояние = Объект.СостоянияТестов.Пройден; Исключение ИнформацияОбОшибке = ИнформацияОбОшибке(); ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); КраткийТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); Если ЕстьОшибка_МетодОбъектаНеОбнаружен(КраткийТекстОшибки, ЭлементДереваТестов.ИмяМетода) Тогда РезультатТестирования.Состояние = Объект.СостоянияТестов.НеРеализован; Сообщение = НСтр("ru = 'Отсутствует реализация тестового метода (%1).'"); РезультатТестирования.Сообщение = СтрЗаменить(Сообщение, "%1", ЭлементДереваТестов.ИмяМетода); Иначе РезультатТестирования.Сообщение = ТекстОшибки; Если ЭтоОшибкаПроверки(КраткийТекстОшибки) Тогда РезультатТестирования.Состояние = Объект.СостоянияТестов.Сломан; ИначеЕсли ЭтоПропущенныйТест(КраткийТекстОшибки) Тогда РезультатТестирования.Состояние = Объект.СостоянияТестов.НеРеализован; Иначе РезультатТестирования.Состояние = Объект.СостоянияТестов.НеизвестнаяОшибка; КонецЕсли; КонецЕсли; КонецПопытки; Попытка ВыполнитьНеобязательнуюПроцедуруТестовогоСлучая(КонтекстВыполнения, ЭлементДереваТестов.ПослеЗапускаТеста); Исключение ИнформацияОбОшибке = ИнформацияОбОшибке(); РезультатТестирования.Сообщение = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); КраткийТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); Если ЭтоОшибкаПроверки(КраткийТекстОшибки) Тогда РезультатТестирования.Состояние = Объект.СостоянияТестов.Сломан; Иначе РезультатТестирования.Состояние = Объект.СостоянияТестов.НеизвестнаяОшибка; КонецЕсли; КонецПопытки; КонецЕсли; ОкончаниеВыполнения = ТекущаяУниверсальнаяДатаВМиллисекундах(); РезультатТестирования.ВремяВыполнения = (ОкончаниеВыполнения - НачалоВыполнения) / 1000; Возврат РезультатТестирования; КонецФункции &НаКлиенте Функция ВыполнитьИнициализациюКонтекста(КонтекстВыполнения, РезультатТестирования) Попытка КонтекстВыполнения.Инициализация(ЭтаФорма); Возврат Истина; Исключение РезультатТестирования.Сообщение = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); РезультатТестирования.Состояние = Объект.СостоянияТестов.НеизвестнаяОшибка; КонецПопытки; Возврат Ложь; КонецФункции &НаКлиенте Функция ВыделитьТестовыйМетодНаСервереСОбработкойОшибокПередачиМеждуНаКлиентомИСервером(Знач КонтекстВыполнения, Знач ЭлементДереваТестов) Перем ПолныйТекстОшибки, РезультатТестирования; Попытка РезультатТестирования = ВыполнитьТестовыйМетодНаСервере(КонтекстВыполнения, ЭлементДереваТестов); Исключение ПолныйТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); РезультатТестирования = СоздатьЭлементРезультатовТестирования(ЭлементДереваТестов); РезультатТестирования.Сообщение = ПолныйТекстОшибки; РезультатТестирования.Состояние = Объект.СостоянияТестов.НеизвестнаяОшибка; КонецПопытки; Возврат РезультатТестирования; КонецФункции &НаСервере Функция ВыполнитьТестовыйМетодНаСервере(Знач ОписаниеКонтекста, Знач ЭлементДереваТестов) ОбъектНаСервере = ЭтотОбъектНаСервере(); Если ОписаниеКонтекста.ЭтоВнутренняяОбработка Тогда КонтекстВыполнения = Обработки[ОписаниеКонтекста.Идентификатор].Создать(); Иначе КонтекстВыполнения = ВнешниеОбработки.Создать(ОписаниеКонтекста.Идентификатор, Ложь); КонецЕсли; КонтекстВыполнения.Инициализация(ОбъектНаСервере); РезультатТестирования = ОбъектНаСервере.ВыполнитьТестовыйМетод(КонтекстВыполнения, ЭлементДереваТестов); Возврат РезультатТестирования; КонецФункции &НаКлиенте Процедура ВыполнитьНеобязательнуюПроцедуруТестовогоСлучая(Знач КонтекстВыполнения, Знач ИмяПроцедуры) Попытка ВыполнитьПроцедуруКонтекста(КонтекстВыполнения, ИмяПроцедуры); Исключение ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); Если Не ЕстьОшибка_МетодОбъектаНеОбнаружен(ТекстОшибки, ИмяПроцедуры) Тогда ВызватьИсключение; КонецЕсли; КонецПопытки; КонецПроцедуры &НаКлиенте Процедура ВыполнитьПроцедуруКонтекста(Знач КонтекстВыполнения, Знач ПроцедураКонтекста, Знач Параметры = Неопределено) СтрокаПараметров = СформироватьСтрокуПараметров(Параметры); ИcполняемыйКод = "КонтекстВыполнения." + ПроцедураКонтекста + "(" + СтрокаПараметров + ");"; Выполнить(ИcполняемыйКод); КонецПроцедуры &НаКлиенте Функция СформироватьСтрокуПараметров(Знач Параметры) СтрокаПараметров = ""; Если ТипЗнч(Параметры) = Тип("Массив") Тогда Для Сч = 0 По Параметры.Количество() - 1 Цикл СтрокаПараметров = СтрокаПараметров + ",Параметры[" + Формат(Сч, "ЧН=0; ЧГ=") + "]"; КонецЦикла; КонецЕсли; Возврат Сред(СтрокаПараметров, 2); КонецФункции &НаКлиенте Функция ЕстьОшибка_МетодОбъектаНеОбнаружен(Знач ТекстОшибки, Знач ИмяМетода) Результат = Ложь; Если Найти(ТекстОшибки, "Метод объекта не обнаружен (" + ИмяМетода + ")") > 0 ИЛИ Найти(ТекстОшибки, "Object method not found (" + ИмяМетода + ")") > 0 Тогда Результат = Истина; КонецЕсли; Возврат Результат; КонецФункции Функция ЭтоОшибкаПроверки(ТекстОшибки) Возврат Найти(ТекстОшибки, "["+ Объект.СтатусыРезультатаТестирования.ОшибкаПроверки + "]") = 1; КонецФункции Функция ЭтоПропущенныйТест(ТекстОшибки) Возврат Найти(ТекстОшибки, "["+ Объект.СтатусыРезультатаТестирования.ТестПропущен + "]") > 0; КонецФункции // } Выполнение тестов // { Генерация результатов тестирования &НаКлиенте Функция СоздатьКонтейнерРезультатовТестирования(Знач КонтейнерДереваТестов) ГруппаРезультатовТестирования = Новый Структура; ГруппаРезультатовТестирования.Вставить("Ключ", КонтейнерДереваТестов.Ключ); ГруппаРезультатовТестирования.Вставить("Тип", КонтейнерДереваТестов.Тип); ГруппаРезультатовТестирования.Вставить("Имя", КонтейнерДереваТестов.Имя); ГруппаРезультатовТестирования.Вставить("Состояние", Объект.СостоянияТестов.НеВыполнен); ГруппаРезультатовТестирования.Вставить("КоличествоТестов", 0); ГруппаРезультатовТестирования.Вставить("КоличествоСломанныхТестов", 0); ГруппаРезультатовТестирования.Вставить("КоличествоОшибочныхТестов", 0); ГруппаРезультатовТестирования.Вставить("КоличествоНеРеализованныхТестов", 0); ГруппаРезультатовТестирования.Вставить("ВремяВыполнения", 0); ГруппаРезультатовТестирования.Вставить("Строки", Новый Массив); Возврат ГруппаРезультатовТестирования; КонецФункции &НаКлиенте Функция СоздатьЭлементРезультатовТестирования(Знач ЭлементДереваТестов) РезультатТестирования = Новый Структура; РезультатТестирования.Вставить("Ключ", ЭлементДереваТестов.Ключ); РезультатТестирования.Вставить("Тип", ЭлементДереваТестов.Тип); РезультатТестирования.Вставить("Путь", ЭлементДереваТестов.Путь); РезультатТестирования.Вставить("ИмяМетода", ЭлементДереваТестов.ИмяМетода); РезультатТестирования.Вставить("Представление", ЭлементДереваТестов.Представление); РезультатТестирования.Вставить("Параметры", ЭлементДереваТестов.Параметры); РезультатТестирования.Вставить("Состояние", Объект.СостоянияТестов.НеВыполнен); РезультатТестирования.Вставить("ВремяВыполнения", 0); РезультатТестирования.Вставить("Сообщение", ""); Возврат РезультатТестирования; КонецФункции // } Генерация результатов тестирования // { История загрузки тестов &НаСервере Процедура СохранитьВИсториюЗагрузкиТестовНаСервере(Знач ИдентификаторЗагрузчика, Знач Путь) ЭтотОбъектНаСервере = ЭтотОбъектНаСервере(); ЭтотОбъектНаСервере.СохранитьВИсториюЗагрузкиТестов(ИдентификаторЗагрузчика, Путь); ЗначениеВРеквизитФормы(ЭтотОбъектНаСервере, "Объект"); КонецПроцедуры &НаСервере Процедура ОбновитьКомандыИсторииЗагрузкиТестов() ИсторияЗагрузкиТестов = Объект.Настройки.ИсторияЗагрузкиТестов; ПодменюИсторияЗагрузкиТестов = Элементы.ПодменюИсторияЗагрузкиТестов; Для Сч = 0 По ИсторияЗагрузкиТестов.Количество() - 1 Цикл ИмяКоманды = "История_" + Сч; НайденнаяКоманда = Команды.Найти(ИмяКоманды); Если НайденнаяКоманда = Неопределено Тогда НоваяКоманда = Команды.Добавить(ИмяКоманды); НоваяКоманда.Действие = "Подключаемый_ЗагрузитьТестыИзИстории"; ПунктМеню = Элементы.Добавить(НоваяКоманда.Имя, Тип("КнопкаФормы"), ПодменюИсторияЗагрузкиТестов); ПунктМеню.ИмяКоманды = НоваяКоманда.Имя; Иначе ПунктМеню = Элементы.Найти(ИмяКоманды); КонецЕсли; ЭлементИстории = ИсторияЗагрузкиТестов[Сч]; ПунктМеню.Заголовок = ЭлементИстории.ИдентификаторЗагрузчика + ": " + ЭлементИстории.Путь; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура Подключаемый_ЗагрузитьТестыИзИстории(Команда) ИндексИстории = Число(Сред(Команда.Имя, Найти(Команда.Имя, "_") + 1)); ИсторияЗагрузкиТестов = Объект.Настройки.ИсторияЗагрузкиТестов; ЭлементИстории = ИсторияЗагрузкиТестов[ИндексИстории]; ЗагрузитьТесты(ЭлементИстории.ИдентификаторЗагрузчика, ЭлементИстории.Путь); КонецПроцедуры // } История загрузки тестов // { Пакетный запуск &НаКлиенте Процедура ВыполнитьПакетныйЗапуск(Знач ПараметрЗапуска) Перем РезультатыТестирования; ПарсерКоманднойСтроки = ЭтаФорма.Плагин("ПарсерКоманднойСтроки"); ПараметрыЗапуска = ПарсерКоманднойСтроки.Разобрать(ПараметрЗапуска); Параметры_xddRun = Неопределено; Если ПараметрыЗапуска.Свойство(ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddRun, Параметры_xddRun) Тогда РезультатыТестирования = ЗагрузитьИВыполнитьТесты_ПакетныйРежим(Параметры_xddRun); КонецЕсли; Параметры_xddReport = Неопределено; Если ЗначениеЗаполнено(РезультатыТестирования) И ПараметрыЗапуска.Свойство(ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddReport, Параметры_xddReport) Тогда СформироватьОтчетОТестированииИЭкспортировать_ПакетныйРежим(Параметры_xddReport, РезультатыТестирования); КонецЕсли; Если ПараметрыЗапуска.Свойство(ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddShutdown) Тогда ЗавершитьРаботуСистемы(Ложь); КонецЕсли; КонецПроцедуры &НаКлиенте Функция ЗагрузитьИВыполнитьТесты_ПакетныйРежим(Знач Параметры_xddRun) Попытка ИдентификаторЗагрузчика = Параметры_xddRun[0]; Загрузчик = ЭтаФорма.Плагин(ИдентификаторЗагрузчика); ПутьКТестам = Параметры_xddRun[1]; ДеревоТестовОтЗагрузчика = Загрузчик.Загрузить(ЭтаФорма, ПутьКТестам); РезультатыТестирования = ЭтаФорма.ВыполнитьТесты(Загрузчик, ДеревоТестовОтЗагрузчика); Исключение ОписаниеОшибки = "Ошибка загрузки и выполнения тестов в пакетном режиме |" + ОписаниеОшибки(); ЗафиксироватьОшибкуВЖурналеРегистрации(ОписаниеОшибки); КонецПопытки; Возврат РезультатыТестирования; КонецФункции &НаКлиенте Процедура СформироватьОтчетОТестированииИЭкспортировать_ПакетныйРежим(Знач Параметры_xddReport, Знач РезультатыТестирования) Попытка ИдентификаторГенератораОтчета = Параметры_xddReport[0]; ГенераторОтчета = ЭтаФорма.Плагин(ИдентификаторГенератораОтчета); Отчет = ГенераторОтчета.СоздатьОтчет(ЭтаФорма, РезультатыТестирования); ПутьКОтчету = Параметры_xddReport[1]; ГенераторОтчета.Экспортировать(Отчет, ПутьКОтчету); Исключение ОписаниеОшибки = "Ошибка формирования и экспорта отчета о тестировании в пакетном режиме |" + ОписаниеОшибки(); ЗафиксироватьОшибкуВЖурналеРегистрации(ОписаниеОшибки); КонецПопытки; КонецПроцедуры &НаСервере Процедура ЗафиксироватьОшибкуВЖурналеРегистрации(Знач ОписаниеОшибки) ЗаписьЖурналаРегистрации(ЭтотОбъектНаСервере().Метаданные().Имя, УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки); КонецПроцедуры // } Пакетный запуск // { Контекст &НаКлиенте Процедура СохранитьКонтекст(Знач Контекст) Экспорт Если Объект.ТекущийКонтейнер.СлучайныйПорядокВыполнения Тогда ВызватьИсключение Объект.ВозможныеИсключения.СохранятьКонтекстТолькоВСтрогомРежиме; КонецЕсли; Объект.ТекущийКонтейнер.Контекст = Контекст; КонецПроцедуры &НаКлиенте Функция ПолучитьКонтекст() Экспорт Если Объект.ТекущийКонтейнер.СлучайныйПорядокВыполнения Тогда ВызватьИсключение Объект.ВозможныеИсключения.ПолучатьКонтекстТолькоВСтрогомРежиме; КонецЕсли; Возврат Объект.ТекущийКонтейнер.Контекст; КонецФункции // } Контекст Процедура ВызватьОшибкуПроверки(СообщениеОшибки = "") Экспорт Префикс = "["+ Объект.СтатусыРезультатаТестирования.ОшибкаПроверки + "]"; ВызватьИсключение Префикс + " " + СообщениеОшибки; КонецПроцедуры Процедура ПропуститьТест(Знач Сообщение = "") Экспорт Префикс = "[" + Объект.СтатусыРезультатаТестирования.ТестПропущен + "]"; Если ПустаяСтрока(Сообщение) Тогда Сообщение = НСтр("ru = 'Тест пропущен'"); КонецЕсли; ВызватьИсключение Префикс + " " + Сообщение; КонецПроцедуры // Выводит сообщение. В тестах ВСЕГДА должна использоваться ВМЕСТО метода Сообщить(). // Функция ВывестиСообщение(ТекстСообщения, Статус=Неопределено) Экспорт Сообщить(ТекстСообщения, Статус); КонецФункции // { Внешние интерфейсные инструменты &НаКлиенте Процедура ОткрытьИнструмент(Знач ИмяИнструмента, Знач ПутьИнструмента = "", Знач ИмяФормы = "Форма") Если Не ПустаяСтрока(ПутьИнструмента) Тогда ПутьКВнешнимИнструментам = ПутьИнструмента + "\"; Иначе ПутьКВнешнимИнструментам = ПолучитьПутьКВнешнимИнструментам(); КонецЕсли; ПутьИнструмента = ПутьКВнешнимИнструментам + ИмяИнструмента + ".epf"; ФайлИнструмента = Новый Файл(ПутьИнструмента); Если Не ФайлИнструмента.Существует() Тогда Сообщить("Инструмент <" + ИмяИнструмента + "> не найден в каталоге <" + ФайлИнструмента.Путь + ">"); Возврат; КонецЕсли; АдресХранилища = ""; ПоместитьФайл(АдресХранилища, ФайлИнструмента.ПолноеИмя, , Ложь); ПодключитьФайлОбработкиНаСервере(АдресХранилища, Неопределено); ФормаИнструмента = ПолучитьФорму("ВнешняяОбработка." + ИмяИнструмента + "." + ИмяФормы); Если ФормаИнструмента = Неопределено Тогда Сообщить("Инструмент <" + ИмяИнструмента + ">: не удалось получить основную форму!"); Возврат; КонецЕсли; ФормаИнструмента.Открыть(); ФормаИнструмента = Неопределено; КонецПроцедуры &НаКлиенте Функция ПолучитьПутьКПлагинам() ФайлЯдра = Новый Файл(ЭтаФорма.ИспользуемоеИмяФайла); Результат = ФайлЯдра.Путь + "Plugins\"; Возврат Результат; КонецФункции &НаКлиенте Функция ПолучитьПутьКВнешнимИнструментам() ФайлЯдра = Новый Файл(ЭтаФорма.ИспользуемоеИмяФайла); Результат = ФайлЯдра.Путь + "Utils\"; Возврат Результат; КонецФункции // } Внешние интерфейстные инструменты // { Helpers &НаКлиенте Процедура ПодключитьВнешнююОбработку(ФайлОбработки) Экспорт Если ПодключенныеВнешниеОбработки.Получить(ФайлОбработки.ИмяБезРасширения) = Неопределено Тогда АдресХранилища = ""; ПоместитьФайл(АдресХранилища, ФайлОбработки.ПолноеИмя, , Ложь, ЭтаФорма.УникальныйИдентификатор); ПодключитьФайлОбработкиНаСервере(АдресХранилища, ФайлОбработки.ИмяБезРасширения); ПодключенныеВнешниеОбработки.Вставить(ФайлОбработки.ИмяБезРасширения, Истина); КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Процедура ПодключитьФайлОбработкиНаСервере(Знач АдресХранилища, Знач ИдентификаторОбработки) ВнешниеОбработки.Подключить(АдресХранилища, ИдентификаторОбработки, Ложь); КонецПроцедуры &НаКлиенте Функция ПолучитьОписаниеКонтекстаВыполнения(Знач Идентификатор, Знач ЭтоВнутренняяОбработка = Ложь) Экспорт ОписаниеКонтекстаВыполнения = Новый Структура("Идентификатор, ЭтоВнутренняяОбработка", Идентификатор, ЭтоВнутренняяОбработка); Возврат Новый ФиксированнаяСтруктура(ОписаниеКонтекстаВыполнения); КонецФункции &НаСервере Функция ЭтотОбъектНаСервере() Возврат РеквизитФормыВЗначение("Объект"); КонецФункции &НаКлиенте Процедура ИнициализироватьИндикаторВыполнения(Знач КоличествоТестовыхМетодов = 0) Элементы.ИндикаторВыполнения.МаксимальноеЗначение = КоличествоТестовыхМетодов; ИндикаторВыполнения = 0; Элементы.ИндикаторВыполнения.ЦветРамки = Новый Цвет(0, 174, 0); // Зеленый КонецПроцедуры &НаКлиенте Процедура ОповеститьОСобытии(Знач Подписчик, Знач Событие, Знач ПараметрыСобытия) Выполнить("Подписчик.ОбработатьСобытиеВыполненияТестов(Событие, ПараметрыСобытия);"); КонецПроцедуры &НаКлиенте Функция ПеремешатьМассив(Знач ИсходныйМассив) Экспорт Результат = Новый Массив; Для Каждого Элемент Из ИсходныйМассив Цикл Результат.Добавить(Элемент); КонецЦикла; // алгоритм перемешивания взят из книги Кнута "Искусство программирования" т.2 ГСЧ = Новый ГенераторСлучайныхЧисел(); ПоследнийИндекс = Результат.ВГраница(); Для Индекс = 1 По ПоследнийИндекс Цикл ТекущийИндекс = ПоследнийИндекс - Индекс + 1; НовыйИндекс = ГСЧ.СлучайноеЧисло(0, ТекущийИндекс); Если НовыйИндекс <> ТекущийИндекс Тогда Значение = Результат[НовыйИндекс]; Результат[НовыйИндекс] = Результат[ТекущийИндекс]; Результат[ТекущийИндекс] = Значение; КонецЕсли; КонецЦикла; Возврат Результат; КонецФункции &НаКлиенте Функция НайтиРезультатТестированияПоИдентификатору(Знач КонтейнерРезультатовТестирования, Знач ИдентификаторТеста, Знач ВключатьПодчиненные = Ложь) Экспорт Результат = НайтиРезультатТестированияПоИдентификатору_НаСервере(КонтейнерРезультатовТестирования, ИдентификаторТеста, ВключатьПодчиненные); Возврат Результат; КонецФункции &НаСервере Функция НайтиРезультатТестированияПоИдентификатору_НаСервере(Знач КонтейнерРезультатовТестирования, Знач ИдентификаторТеста, Знач ВключатьПодчиненные) Экспорт Результат = ЭтотОбъектНаСервере().НайтиРезультатТестированияПоИдентификатору(КонтейнерРезультатовТестирования, ИдентификаторТеста, ВключатьПодчиненные); Возврат Результат; КонецФункции &НаКлиенте Процедура СброситьПодключенныеВнешниеОбработки() ПодключенныеВнешниеОбработки = Новый Соответствие; КонецПроцедуры &НаКлиенте Функция ПараметрыМетода(Знач Парам1, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, Знач Парам4 = Неопределено, Знач Парам5 = Неопределено, Знач Парам6 = Неопределено, Знач Парам7 = Неопределено, Знач Парам8 = Неопределено, Знач Парам9 = Неопределено) Экспорт ВсеПараметры = Новый Массив; ВсеПараметры.Добавить(Парам1); ВсеПараметры.Добавить(Парам2); ВсеПараметры.Добавить(Парам3); ВсеПараметры.Добавить(Парам4); ВсеПараметры.Добавить(Парам5); ВсеПараметры.Добавить(Парам6); ВсеПараметры.Добавить(Парам7); ВсеПараметры.Добавить(Парам8); ВсеПараметры.Добавить(Парам9); ИндексСПоследнимПараметром = 0; Для Сч = 0 По ВсеПараметры.ВГраница() Цикл Индекс = ВсеПараметры.ВГраница() - Сч; Если ВсеПараметры[Индекс] <> Неопределено Тогда ИндексСПоследнимПараметром = Индекс; Прервать; КонецЕсли; КонецЦикла; ПараметрыМетода = Новый Массив; Для Сч = 0 По ИндексСПоследнимПараметром Цикл ПараметрыМетода.Добавить(ВсеПараметры[Сч]); КонецЦикла; Возврат ПараметрыМетода; КонецФункции // } Helpers \ No newline at end of file diff --git "a/src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/form" "b/src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/form" index 716a0379..58e955e1 100644 --- "a/src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/form" +++ "b/src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/form" @@ -216,7 +216,9 @@ {8, {8, {16, -{1,0}, +{1,1, +{"ru","Колонка1"} +}, {1,0}, {1,0},26,0,-1,-1,-1,12590594, {3,0, @@ -318,60 +320,60 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {3,3, {0},"",-1,-1,0, { -{#base64:iVBORw0KGgoAAAANSUhEUgAAAHAAAAAQCAYAAADOFPsRAAAACXBIWXMAAA7EAAAO -xAGVKw4bAAAAB3RJTUUH3wkIDgYGUr9hfQAAAAd0RVh0QXV0aG9yAKmuzEgAAAAM -dEVYdERlc2NyaXB0aW9uABMJISMAAAAKdEVYdENvcHlyaWdodACsD8w6AAAADnRF -WHRDcmVhdGlvbiB0aW1lADX3DwkAAAAJdEVYdFNvZnR3YXJlAF1w/zoAAAALdEVY -dERpc2NsYWltZXIAt8C0jwAAAAh0RVh0V2FybmluZwDAG+aHAAAAB3RFWHRTb3Vy -Y2UA9f+D6wAAAAh0RVh0Q29tbWVudAD2zJa/AAAABnRFWHRUaXRsZQCo7tInAAAI -zUlEQVRYhe2Yf1BVZRrHP++558pBsCCoxRW3IdEk0rqU/WBHiUJzGq9ZrmlqjEZr -aq6zme0sTrobVvxhbtaqoWnZFmntbpk40+IUVow46ySIRjpo4g8MkptcucI93HvO -efePy0XuBS7hyuw/+8y8c87zPuf7vuec73me9/seIaVkoC3fmT7qwTnzikqLty0s -LKmpHah5ass/lXUHSmlqOo/nUgstbg93Tckle9YiMVBz/q9NHegJ8p3poyY9nlt0 -38OZ2S1NtUX5zvQBI/FExW4emPEkFy80cbH5J5oazlH6901kz1oUEbfhnQ9k8ZFm -9PaAr9k0dFPvjPfkT3fAc/PzxNXAv7mrvN9ZtGjqeAGgHtmUs9MyfA9LywRAKDaE -TT0ydmHZ2P4OGm75zvRRObNmFmU/cmuW1V7HlJmpWdfE2weMxGHp97Bnx1t8f/IU -3rZW9HYf46c/1SfuaH0DKQL0KB1NaOjSjWbX0GXvfl1j3FXDHzvVyOtLZ2BaVp/3 -alMUHl28gkVTxwOgWobv4dsWvgN+o+MKG5XrZ4+peiNTChFeeQRCUVDUQcfGPP15 -WqSJ8p3po3Jmziy6f9q4LLP1OyEvHbZk9E1iwuTrshDjeySxtXSn9OcvASCusr7f -Za81OZOSSi+bt7wtFhSsl/OmPkDm7Wl9jpOZ4WD2Q/f3a64XXl171fBBW/z21/zY -EsjUaLtK8TN9j6lKywJ/O77aNUgpsA+bTsbC90HpeG4hAg1AAKpK9cbc0d9unnTH -rQv2HAwfUAghgZUT7nGs5lBN8b5DO5UVS8dapv+MUFWfRE1Rfj15SLa/dXQ3Er2F -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 -WhMgEG/VAAAAAElFTkSuQmCC} +{#base64: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} },0}, {3,0, {0},"",-1,-1,1,0},16,16,d2314b5d-8da4-4e0f-822b-45e7500eae09, @@ -695,7 +697,7 @@ XFhJtSKWz30vMgcItzCmDw==},0} {1,0} },8,2,0,0,1,1, {5,d4746b64-45af-49b5-a280-c2206705887b,9,1,1, -{6,cc36d702-3c52-4147-ab99-b2f3cd2aa348,1,e1692cc2-605b-4535-84dd-28440238746c, +{6,d3594f71-1f62-4eaa-bb07-ee1a13be4998,1,e1692cc2-605b-4535-84dd-28440238746c, {3,"КнопкаВыполнитьВыделенныеТестыНажатие", {1,"КнопкаВыполнитьВыделенныеТестыНажатие", {1,1, @@ -801,8 +803,8 @@ gg==} },0}, {0,118,8} },1, -{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,1,cc36d702-3c52-4147-ab99-b2f3cd2aa348, -{8,"ВыполнитьТест",0,3, +{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,1,d3594f71-1f62-4eaa-bb07-ee1a13be4998, +{8,"ВыполнитьТест",0,4, {1,2, {"#","Выполнить тест"}, {"ru","Выполнить тест"} @@ -1150,14 +1152,14 @@ RU5ErkJggg==} },0}, {0,0,0},0,2, {5,4a024427-3a7c-4cdb-b06d-ea9b500fdeda,27,1,1, -{6,42a3606d-8950-4fd7-b850-943b3a2f1d27,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, +{6,eb8dd50c-f147-4b62-80a1-171f30af71fe,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, {1,4a024427-3a7c-4cdb-b06d-ea9b500fdeda,26},0},2, {5,4a024427-3a7c-4cdb-b06d-ea9b500fdeda,26,1,0, {0,0, {0} } }, -{5,31946946-0a9b-40a2-95cf-82f200778341,0,0,1,42a3606d-8950-4fd7-b850-943b3a2f1d27, +{5,31946946-0a9b-40a2-95cf-82f200778341,0,0,1,eb8dd50c-f147-4b62-80a1-171f30af71fe, {8,"ИсторияЗагрузкиТестов",0,1, {1,1, {"ru","История загрузки тестов"} @@ -1287,7 +1289,26 @@ AAAASUVORK5CYII=} },0}, {0,0,0},0,2, {5,41c23139-b710-4b93-a93e-1a3fe9843cfe,5,1,3, -{6,c991810f-3f09-4357-9e9f-15124490b527,1,e1692cc2-605b-4535-84dd-28440238746c, +{6,0eddd7cc-9cff-409d-a156-0d04fc40d296,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, +{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0}, +{6,eb4033ab-8924-45ac-b5a7-9ba3807e100e,1,e1692cc2-605b-4535-84dd-28440238746c, +{3,"КнопкаПерезагрузитьПерезагрузитьБраузерТестирования", +{1,"КнопкаПерезагрузитьПерезагрузитьБраузерТестирования", +{1,1, +{"ru","Перезагрузить браузер тестирования"} +}, +{1,1, +{"ru","Перезагрузить браузер тестирования"} +}, +{1,1, +{"ru","Перезагрузить браузер тестирования"} +}, +{3,0, +{0},"",-1,-1,1,0}, +{0,0,0} +} +},0}, +{6,9563860a-4345-466f-a621-c905d3d39a33,1,e1692cc2-605b-4535-84dd-28440238746c, {3,"ПерезагрузитьПоследниеТестыПоИстории", {1,"ПерезагрузитьПоследниеТестыПоИстории", {1,1, @@ -1342,35 +1363,16 @@ BguK5OCb5OCdsRjPzXIg/qV4LWdl5AGyvOJa/LLzgL7Lh5bic2AxDUSCuJ8sg4fZ fpcIxAUgkUoIHsoxHlpxsReNeI9EIrDkX2QLIpCML+Wkf5z+LcAAUD/gDNueXkgA AAAASUVORK5CYII=} },0} -}, -{6,1756061c-070b-4d61-a685-98b5831d8407,1,e1692cc2-605b-4535-84dd-28440238746c, -{3,"КнопкаПерезагрузитьПерезагрузитьБраузерТестирования", -{1,"КнопкаПерезагрузитьПерезагрузитьБраузерТестирования", -{1,1, -{"ru","Перезагрузить браузер тестирования"} -}, -{1,1, -{"ru","Перезагрузить браузер тестирования"} -}, -{1,1, -{"ru","Перезагрузить браузер тестирования"} -}, -{3,0, -{0},"",-1,-1,1,0}, -{0,0,0} -} -},0}, -{6,68394fe2-09ab-4cdc-860d-b6509936f835,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, -{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},1, -{5,31946946-0a9b-40a2-95cf-82f200778341,0,0,3,c991810f-3f09-4357-9e9f-15124490b527, +},1, +{5,31946946-0a9b-40a2-95cf-82f200778341,0,0,3,9563860a-4345-466f-a621-c905d3d39a33, {8,"ПерезагрузитьТесты",0,1, {1,1, {"ru","Перезагрузить тесты"} -},1,41c23139-b710-4b93-a93e-1a3fe9843cfe,1,1e2,0,0,1,0,0,0,0},68394fe2-09ab-4cdc-860d-b6509936f835, +},1,41c23139-b710-4b93-a93e-1a3fe9843cfe,1,1e2,0,0,1,0,0,0,0},0eddd7cc-9cff-409d-a156-0d04fc40d296, {8,"Разделитель",0,1, {1,1, {"ru","Действие"} -},0,41c23139-b710-4b93-a93e-1a3fe9843cfe,2,1e2,2,0,1,0,0,0,0},1756061c-070b-4d61-a685-98b5831d8407, +},0,41c23139-b710-4b93-a93e-1a3fe9843cfe,2,1e2,2,0,1,0,0,0,0},eb4033ab-8924-45ac-b5a7-9ba3807e100e, {8,"ПерезагрузитьБраузерТестирования",0,1, {1,1, {"#","Перезагрузить браузер тестирования"} @@ -2001,7 +2003,7 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} {0},"",-1,-1,1,0}, {0,0,0},0,2, {5,28c47454-3a17-4ec8-b47f-d5008bf3ea41,5,1,3, -{6,6413723a-f363-4dc1-8242-04ba67f9c8ed,1,e1692cc2-605b-4535-84dd-28440238746c, +{6,6e3cd77c-7c6e-4d8f-9d68-431947025a27,1,e1692cc2-605b-4535-84dd-28440238746c, {3,"КнопкаИнструментыГенераторМакетовДанных", {1,"КнопкаИнструментыГенераторМакетовДанных", {1,1, @@ -2027,7 +2029,7 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} {3,1, {0,01ec9d9a-7497-4d88-b93f-066c633a4866},"",-1,-1,1,0} }, -{6,aca3150f-03ff-4178-a9cb-330b016d2ab4,1,e1692cc2-605b-4535-84dd-28440238746c, +{6,36ee916f-5b94-49b2-9f4e-5ff12a36aafd,1,e1692cc2-605b-4535-84dd-28440238746c, {3,"КнопкаИнструментыКонвертерТестов", {1,"КнопкаИнструментыКонвертерТестов", {1,1, @@ -2044,7 +2046,7 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} {0,0,0} } },0}, -{6,06b4e225-3051-451b-90d9-e1ffb404eded,1,e1692cc2-605b-4535-84dd-28440238746c, +{6,b6affdd3-56e0-4f22-80e2-5a33812ad712,1,e1692cc2-605b-4535-84dd-28440238746c, {3,"КнопкаИнструментыПоказатьГУИД", {1,"КнопкаИнструментыПоказатьГУИД", {1,1, @@ -2061,15 +2063,15 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} {0,0,0} } },0},1, -{5,31946946-0a9b-40a2-95cf-82f200778341,0,0,3,6413723a-f363-4dc1-8242-04ba67f9c8ed, +{5,31946946-0a9b-40a2-95cf-82f200778341,0,0,3,6e3cd77c-7c6e-4d8f-9d68-431947025a27, {8,"ГенераторМакетовДанных",0,1, {1,1, {"#","Генератор макетов данных"} -},0,28c47454-3a17-4ec8-b47f-d5008bf3ea41,1,1e2,0,0,1,0,0,0,0},06b4e225-3051-451b-90d9-e1ffb404eded, +},0,28c47454-3a17-4ec8-b47f-d5008bf3ea41,1,1e2,0,0,1,0,0,0,0},b6affdd3-56e0-4f22-80e2-5a33812ad712, {8,"ПоказатьГУИД",0,1, {1,1, {"#","Показать ГУИД"} -},0,28c47454-3a17-4ec8-b47f-d5008bf3ea41,2,1e2,0,0,1,0,0,0,0},aca3150f-03ff-4178-a9cb-330b016d2ab4, +},0,28c47454-3a17-4ec8-b47f-d5008bf3ea41,2,1e2,0,0,1,0,0,0,0},36ee916f-5b94-49b2-9f4e-5ff12a36aafd, {8,"КонвертерТестов",0,1, {1,1, {"ru","Конвертер тестов в формат 4-й версии"} @@ -2201,7 +2203,7 @@ jdPrfwG2yJrgafgYZAAAAABJRU5ErkJggg==} {0} } } -},859,552,1,0,1,4,4,1300}, +},859,552,1,0,1,4,4,1312}, { {1},27, {4, diff --git "a/src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/module" "b/src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/module.bsl" similarity index 83% rename from "src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/module" rename to "src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/module.bsl" index d3d09e73..fec2d943 100644 --- "a/src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/module" +++ "b/src/xddTestRunner/Form/\320\244\320\276\321\200\320\274\320\260/module.bsl" @@ -1,4 +1,5 @@ -// { События формы +Перем ЭтоПакетныйЗапуск Экспорт; // Флаг определяет выполнен ли пакетный запуск +// { События формы Процедура ПриОткрытии() ЗагрузитьПлагины(); КэшироватьПеречисленияПлагинов(); @@ -72,6 +73,7 @@ КонецПроцедуры Процедура КнопкаПерезагрузитьПерезагрузитьБраузерТестирования(Кнопка) + Для каждого МетаФорма Из ЭтаФорма.Метаданные().Формы Цикл ТекФорма = ПолучитьФорму(МетаФорма); // может возвращать неопределено, если есть управляемая форма Если ТекФорма <> Неопределено И ТекФорма.Открыта() Тогда @@ -79,11 +81,18 @@ ТекФорма.Закрыть(); Если ТекФорма = ЭтаФорма Тогда НайденноеИмяФайла = Неопределено; - Выполнить("НайденноеИмяФайла = ЭтотОбъект.ИспользуемоеИмяФайла;"); - ВнешниеОбработки.Создать(НайденноеИмяФайла, Ложь).ПолучитьФорму(МетаФорма.Имя).Открыть(); + // Для встроенного в состав конфигурации браузера тестов + // открываем форму обработки заново + Если ЭтоВстроеннаяОбработка Тогда + ЭтотОбъект.ПолучитьФорму(МетаФорма.Имя).Открыть(); + Иначе + Выполнить("НайденноеИмяФайла = ЭтотОбъект.ИспользуемоеИмяФайла;"); + ВнешниеОбработки.Создать(НайденноеИмяФайла, Ложь).ПолучитьФорму(МетаФорма.Имя).Открыть(); + КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; + КонецПроцедуры Процедура СброситьЦиклическиеСсылки() @@ -121,20 +130,26 @@ Процедура ЗагрузитьПлагины() ЭтотОбъект.Плагины = Новый Структура; - КаталогПлагинов = ПолучитьПутьКПлагинам(); - НайденныеФайлы = НайтиФайлы(КаталогПлагинов, "*.epf", Ложь); - Для каждого ФайлОбработки Из НайденныеФайлы Цикл - Обработка = ВнешниеОбработки.Создать(ФайлОбработки.ПолноеИмя, Ложь); - Попытка - ОписаниеПлагина = Обработка.ОписаниеПлагина(ЭтотОбъект.ТипыПлагинов); - Обработка.Инициализация(ЭтотОбъект); - ЭтотОбъект.Плагины.Вставить(ОписаниеПлагина.Идентификатор, Обработка); - Исключение - Ошибка = "Возникла ошибка при загрузке плагина: "+ФайлОбработки.Имя + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - Сообщить(Ошибка); - Продолжить; - КонецПопытки; - КонецЦикла; + // Если браузер тестов встроен в состав конфигурации, то плагины + // получаем из встроеной подсистемы xUnitFor1C.Plugins + Если ЭтотОбъект.ЭтоВстроеннаяОбработка Тогда + ЭтотОбъект.Плагины = ЭтотОбъект.ПолучитьПлагины(); + Иначе + КаталогПлагинов = ПолучитьПутьКПлагинам(); + НайденныеФайлы = НайтиФайлы(КаталогПлагинов, "*.epf", Ложь); + Для каждого ФайлОбработки Из НайденныеФайлы Цикл + Обработка = ВнешниеОбработки.Создать(ФайлОбработки.ПолноеИмя, Ложь); + Попытка + ОписаниеПлагина = Обработка.ОписаниеПлагина(ЭтотОбъект.ТипыПлагинов); + Обработка.Инициализация(ЭтотОбъект); + ЭтотОбъект.Плагины.Вставить(ОписаниеПлагина.Идентификатор, Обработка); + Исключение + Ошибка = "Возникла ошибка при загрузке плагина: "+ФайлОбработки.Имя + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + Сообщить(Ошибка); + Продолжить; + КонецПопытки; + КонецЦикла; + КонецЕсли; ДобавитьКомандыЗагрузчиковНаФорме(); КонецПроцедуры @@ -322,30 +337,45 @@ // { Внешние интерфейстные инструменты Процедура ОткрытьИнструмент(Знач ИмяИнструмента, Знач ПутьИнструмента = "", Знач ИмяФормы = "Форма") - Если Не ПустаяСтрока(ПутьИнструмента) Тогда - ПутьКВнешнимИнструментам = ПутьИнструмента + "\"; + // Если браузер тестов встроен в конфигурацию, то обработки инструментов + // получаем также из состава конфигурации + Если ЭтотОбъект.ЭтоВстроеннаяОбработка Тогда + // Преобразование имени инструмента к имени обработки + Если ИмяИнструмента = "UILogToScript" Тогда + ИмяИнструмента = "ПреобразованиеЖурналаДействийПользователя"; + КонецЕсли; + НоваяФорма = ПолучитьФорму("Обработка." + ИмяИнструмента + "." + ИмяФормы); Иначе - ПутьКВнешнимИнструментам = ПолучитьПутьКВнешнимИнструментам(); - КонецЕсли; - ПутьИнструмента = ПутьКВнешнимИнструментам + ИмяИнструмента + ".epf"; - ФайлИнструмента = Новый Файл(ПутьИнструмента); - Если Не ФайлИнструмента.Существует() Тогда - Сообщить("Инструмент <" + ИмяИнструмента + "> не найден в каталоге <" + ФайлИнструмента.Путь + ">"); - Возврат; - КонецЕсли; - Обработка = ВнешниеОбработки.Создать(ФайлИнструмента.ПолноеИмя, Ложь); - НоваяФорма = Обработка.ПолучитьФорму(ИмяФормы); - Если НоваяФорма = Неопределено Тогда - Сообщить("Инструмент <" + ИмяИнструмента + ">: не удалось получить основную форму!"); - Возврат; + Если Не ПустаяСтрока(ПутьИнструмента) Тогда + ПутьКВнешнимИнструментам = ПутьИнструмента + "\"; + Иначе + ПутьКВнешнимИнструментам = ПолучитьПутьКВнешнимИнструментам(); + КонецЕсли; + ПутьИнструмента = ПутьКВнешнимИнструментам + ИмяИнструмента + ".epf"; + ФайлИнструмента = Новый Файл(ПутьИнструмента); + Если Не ФайлИнструмента.Существует() Тогда + Сообщить("Инструмент <" + ИмяИнструмента + "> не найден в каталоге <" + ФайлИнструмента.Путь + ">"); + Возврат; + КонецЕсли; + Обработка = ВнешниеОбработки.Создать(ФайлИнструмента.ПолноеИмя, Ложь); + НоваяФорма = Обработка.ПолучитьФорму(ИмяФормы); + Если НоваяФорма = Неопределено Тогда + Сообщить("Инструмент <" + ИмяИнструмента + ">: не удалось получить основную форму!"); + Возврат; + КонецЕсли; КонецЕсли; НоваяФорма.Открыть(); НоваяФорма = Неопределено; КонецПроцедуры Функция ПолучитьПутьКПлагинам() - ФайлЯдра = Новый Файл(ЭтаФорма.ИспользуемоеИмяФайла); - Результат = ФайлЯдра.Путь + "Plugins\"; + // Для встроенной в состав конфигурации обработки + // имя используемого файла не получаем, т.к. плагины + // получаются из встроенной подсистемы + Если НЕ ЭтотОбъект.ЭтоВстроеннаяОбработка Тогда + ФайлЯдра = Новый Файл(ЭтаФорма["ИспользуемоеИмяФайла"]); + Результат = ФайлЯдра.Путь + "Plugins\"; + КонецЕсли; Возврат Результат; КонецФункции diff --git a/src/xddTestRunner/ObjectModule.txt b/src/xddTestRunner/ObjectModule.bsl similarity index 71% rename from src/xddTestRunner/ObjectModule.txt rename to src/xddTestRunner/ObjectModule.bsl index 31ee5f28..24ab7ed3 100644 --- a/src/xddTestRunner/ObjectModule.txt +++ b/src/xddTestRunner/ObjectModule.bsl @@ -1,4 +1,21 @@ -Процедура Инициализация() + +Процедура Инициализация() + + ЭтоВстроеннаяОбработка = ОбработкаЯвляетсяВстроеннойВКонфигурацию(); + Если ЭтоВстроеннаяОбработка Тогда + // Для встроенной в состав конфигурации обработки + // может быть использван префикс, который определяет имена объектов + // фреймворка xUnitFor1C в составе конфигурации + // Например: Обработки.<префикс>xddTestRunner + // Если префикс не задан, то должны использоваться оригинальные + // имена обработок и подсистем. + // Для подсистем нужно добавлять префикс тольяо для главной - "xUnitFor1C" + ИспользуемыйПрефиксПодсистемы = ""; + Иначе + ПолныйПутьКФайлуБраузераТестов = ЭтотОбъект["ИспользуемоеИмяФайла"]; + КонецЕсли; + ПолноеИмяБраузераТестов = Метаданные().ПолноеИмя(); + ТипыПлагинов = ТипыПлагинов(); СостоянияТестов = СостоянияТестов(); СтатусыРезультатаТестирования = СтатусыРезультатаТестирования(); @@ -8,8 +25,8 @@ ЗагрузитьНастройки(); КонецПроцедуры -Функция Версия() Экспорт - Возврат "4.0.0.4"; +Функция Версия() Экспорт + Возврат "4.0.0.7"; КонецФункции Функция ЗаголовокФормы() Экспорт @@ -26,19 +43,24 @@ Возврат Новый ФиксированнаяСтруктура(Результат); КонецФункции -Функция Плагин(Знач Идентификатор) Экспорт - Плагин = Плагины[Идентификатор]; +Функция Плагин(Знач Идентификатор) Экспорт + + ИдентификаторПлагинаСПрефиксомПодсистемы = ДополнитьИдентификаторПрефиксомПодсистемы(Идентификатор); + ИдентификаторПлагинаБезПрефиксаПодсистемы = ПолучитьИдентификаторБезПрефиксаПодсистемы(Идентификатор); + Плагин = Плагины[ИдентификаторПлагинаБезПрефиксаПодсистемы]; Если ТипЗнч(Плагин) = Тип("Строка") Тогда - Плагин = ВнешниеОбработки.Создать(Плагин, Ложь); + Плагин = СоздатьОбъектПлагина(Плагин); КонецЕсли; Возврат Плагин; + КонецФункции Функция ПолучитьОписанияПлагиновПоТипу(Знач ТипПлагина) Экспорт Результат = Новый Массив; Для каждого КлючЗначение Из Плагины Цикл Плагин = Плагин(КлючЗначение.Ключ); + Плагин.Инициализация(ЭтотОбъект); ОписаниеПлагина = Плагин.ОписаниеПлагина(ТипыПлагинов); Если ОписаниеПлагина.Тип = ТипПлагина Тогда Результат.Добавить(ОписаниеПлагина); @@ -95,6 +117,8 @@ ИначеЕсли ДочернийУзел.Тип = ЭтотОбъект.ТипыУзловДереваТестов.Элемент Тогда Если УзелДереваТестовУдовлетворяетФильтру(ДочернийУзел, ФильтрДляДочернихУзлов) Тогда Контекст = Загрузчик.ПолучитьКонтекстПоПути(ЭтотОбъект, ДочернийУзел.Путь); + // Заполняем служебные поля, если они имеются + ЗаполнитьСвойствоПриНаличии(Контекст, "ПутьКФайлуПолный", ДочернийУзел.Путь); ЭтотОбъект.ТекущийКонтейнер = КонтейнерДереваТестов; ДочернийРезультатТестирования = ВыполнитьТестовыйМетод(Контекст, ДочернийУзел); @@ -317,7 +341,9 @@ // { Настройки браузера тестирования Процедура ЗагрузитьНастройки() Экспорт ЭтотОбъект.Настройки = ПолучитьПустыеНастройкиБраузераТестирования(); - СчитанныеНастройки = ХранилищеОбщихНастроек.Загрузить(Метаданные().Имя); + // Ключом настроек должно быть не имя обработки, а полное имя метаданных, т.к. имя внешней обработки + // может совпадать с именем обработки, встроенной в состав конфигурации + СчитанныеНастройки = ХранилищеОбщихНастроек.Загрузить(ЭтотОбъект.Метаданные().ПолноеИмя()); Если ТипЗнч(СчитанныеНастройки) = Тип("Структура") Тогда Для каждого СчитанныеКлючЗначение Из СчитанныеНастройки Цикл Если ЭтотОбъект.Настройки.Свойство(СчитанныеКлючЗначение.Ключ) И ТипЗнч(СчитанныеКлючЗначение.Значение) = ТипЗнч(ЭтотОбъект.Настройки[СчитанныеКлючЗначение.Ключ]) Тогда @@ -328,7 +354,14 @@ КонецПроцедуры Процедура СохранитьНастройки() Экспорт - ХранилищеОбщихНастроек.Сохранить(Метаданные().Имя, , ЭтотОбъект.Настройки); + Попытка + // Ключом настроек должно быть не имя обработки, а полное имя метаданных, т.к. имя внешней обработки + // может совпадать с именем обработки, встроенной в состав конфигурации + ХранилищеОбщихНастроек.Сохранить(ЭтотОбъект.Метаданные().ПолноеИмя(), , ЭтотОбъект.Настройки); + Исключение + // TODO: При пакетном запуске и тестировании в тонком клиенте возникает ошибка типа XDTO + // Могут возникнуть ошибки, пропускаем + КонецПопытки; КонецПроцедуры Функция ПолучитьПустыеНастройкиБраузераТестирования() @@ -489,4 +522,206 @@ КонецФункции // } Helpers +// { Подсистема конфигурации xUnitFor1C + +Функция ПолучитьГлавнуюПодсистему() Экспорт + + КоллекцияПодсистем = Метаданные.Подсистемы; + + ГлавнаяПодсистема = Неопределено; + + ИмяГлавнойПодсистемы = ИспользуемыйПрефиксПодсистемы + "xUnitFor1C"; + Для Каждого Подсистема Из КоллекцияПодсистем Цикл + Если Подсистема.Имя = ИмяГлавнойПодсистемы Тогда + ГлавнаяПодсистема = Подсистема; + Прервать; + Иначе + ГлавнаяПодсистема = НайтиПодсистемуПоИмени(Подсистема.Подсистемы, ИмяГлавнойПодсистемы); + Если ЗначениеЗаполнено(ГлавнаяПодсистема) Тогда + Прервать; + КонецЕсли; + КонецЕсли; + КонецЦикла; + + Если ГлавнаяПодсистема = Неопределено Тогда + ВызватьИсключение "Не удалось главную подсистему """ + ИмяГлавнойПодсистемы + """!"; + КонецЕсли; + + Возврат ГлавнаяПодсистема; + +КонецФункции + +Функция НайтиПодсистемуПоИмени(КоллекцияПодсистем, ИмяПодсистемыДляПоиска) + + Для Каждого Подсистема Из КоллекцияПодсистем Цикл + Если Подсистема.Имя = ИмяПодсистемыДляПоиска Тогда + Возврат Подсистема; + Иначе + Возврат НайтиПодсистемуПоИмени(Подсистема.Подсистемы, ИмяПодсистемыДляПоиска); + КонецЕсли; + КонецЦикла; + +КонецФункции + +Функция ПолучитьПлагины() Экспорт + + ГлавнаяПодсистема = ПолучитьГлавнуюПодсистему(); + + СтруктураПлагинов = Новый Структура; + + ДлинаПрефикса = СтрДлина(ИспользуемыйПрефиксПодсистемы); + + КоллекцияПлагинов = ГлавнаяПодсистема.Подсистемы.Plugins.Состав; + Для Каждого Плагин Из КоллекцияПлагинов Цикл + ИмяПлагина = Прав(Плагин.Имя, СтрДлина(Плагин.Имя) - ДлинаПрефикса); + СтруктураПлагинов.Вставить(ИмяПлагина, Плагин.Имя); + КонецЦикла; + + Возврат СтруктураПлагинов; + +КонецФункции + +Функция ПолучитьУтилиты() Экспорт + + ГлавнаяПодсистема = ПолучитьГлавнуюПодсистему(); + + СтруктураПлагинов = Новый Структура; + + ДлинаПрефикса = СтрДлина(ИспользуемыйПрефиксПодсистемы); + + КоллекцияПлагинов = ГлавнаяПодсистема.Подсистемы.Utils.Состав; + Для Каждого Плагин Из КоллекцияПлагинов Цикл + ИмяПлагина = Прав(Плагин.Имя, СтрДлина(Плагин.Имя) - ДлинаПрефикса); + СтруктураПлагинов.Вставить(ИмяПлагина, Плагин.Имя); + КонецЦикла; + + Возврат СтруктураПлагинов; + +КонецФункции + +Функция ОбработкаЯвляетсяВстроеннойВКонфигурацию() Экспорт + + ПолноеИмяТекущейОбработки = ЭтотОбъект.Метаданные().ПолноеИмя(); + ВстроеннаяВКонфигурациюОбработка = Метаданные.НайтиПоПолномуИмени(ПолноеИмяТекущейОбработки); + + ОбработкаВстроенаяВСоставКонфигурации = НЕ (ВстроеннаяВКонфигурациюОбработка = Неопределено); + + Возврат ОбработкаВстроенаяВСоставКонфигурации; + +КонецФункции + +Функция СлужебныеПараметрыОбработки() Экспорт + + СтруктураПараметров = Новый Структура; + СтруктураПараметров.Вставить("ПолноеИмяБраузераТестов", ПолноеИмяБраузераТестов); + СтруктураПараметров.Вставить("ПолныйПутьКФайлуБраузераТестов", ПолныйПутьКФайлуБраузераТестов); + + Возврат СтруктураПараметров; + +КонецФункции + +// Универсальная функция для проверки наличия +// свойств у значения любого типа данных +// Переменные: +// 1. Переменная - переменная любого типа, +// для которой необходимо проверить наличие свойства +// 2. ИмяСвойства - переменная типа "Строка", +// содержащая искомое свойства +// +Функция ПеременнаяСодержитСвойство(Переменная, ИмяСвойства) + // Инициализируем структуру для теста + // с ключом (значение переменной "ИмяСвойства") + // и значением произвольного GUID'а + GUIDПроверка = Новый УникальныйИдентификатор; + СтруктураПроверка = Новый Структура; + СтруктураПроверка.Вставить(ИмяСвойства, GUIDПроверка); + // Заполняем созданную структуру из переданного + // значения переменной + ЗаполнитьЗначенияСвойств(СтруктураПроверка, Переменная); + // Если значение для свойства структуры осталось + // NULL, то искомое свойство не найдено, + // и наоборот. + Если СтруктураПроверка[ИмяСвойства] = GUIDПроверка Тогда + Возврат Ложь; + Иначе + Возврат Истина; + КонецЕсли; +КонецФункции +Функция ЗаполнитьСвойствоПриНаличии(ОбъектЗаполнения, ИмяСвойство, ЗначениеСвойства) + + Если ПеременнаяСодержитСвойство(ОбъектЗаполнения, ИмяСвойство) Тогда + ОбъектЗаполнения[ИмяСвойство] = ЗначениеСвойства; + КонецЕсли; + +КонецФункции + +Функция ДополнитьИдентификаторПрефиксомПодсистемы(Знач Идентификатор) Экспорт + + Если НЕ ЗначениеЗаполнено(ИспользуемыйПрефиксПодсистемы) Тогда + Возврат Идентификатор; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(ИспользуемыйПрефиксПодсистемы); + Если Лев(Идентификатор, ДлинаПрефикса) = ИспользуемыйПрефиксПодсистемы Тогда + Возврат Идентификатор; + Иначе + Возврат ИспользуемыйПрефиксПодсистемы + Идентификатор; + КонецЕсли; + +КонецФункции +Функция ПолучитьИдентификаторБезПрефиксаПодсистемы(Знач Идентификатор) Экспорт + + Если НЕ ЗначениеЗаполнено(ИспользуемыйПрефиксПодсистемы) Тогда + Возврат Идентификатор; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(ИспользуемыйПрефиксПодсистемы); + Если Лев(Идентификатор, ДлинаПрефикса) = ИспользуемыйПрефиксПодсистемы Тогда + Возврат Прав(Идентификатор, СтрДлина(Идентификатор) - ДлинаПрефикса); + Иначе + Возврат Идентификатор; + КонецЕсли; + +КонецФункции + +Функция СоздатьОбъектПлагина(Идентификатор, ВстроенаВКонфигурацию = Ложь, ЭтоОтчет = Ложь) Экспорт + + ОбъектПлагина = Неопределено; + + Если ЭтотОбъект.ЭтоВстроеннаяОбработка + ИЛИ ВстроенаВКонфигурацию = Истина Тогда + + ИдентификаторСПрефиксомПодсистемы = ДополнитьИдентификаторПрефиксомПодсистемы(Идентификатор); + ИдентификаторБезПрефиксаПодсистемы = ПолучитьИдентификаторБезПрефиксаПодсистемы(Идентификатор); + + Если ЭтоОтчет = Истина Тогда + МенеджерВидаОбъектов = Отчеты; + МетаданныеВидаОбъектов = Метаданные.Отчеты; + Иначе + МенеджерВидаОбъектов = Обработки; + МетаданныеВидаОбъектов = Метаданные.Обработки; + КонецЕсли; + + Если НЕ МетаданныеВидаОбъектов.Найти(ИдентификаторСПрефиксомПодсистемы) = Неопределено Тогда + ОбъектПлагина = МенеджерВидаОбъектов[ИдентификаторСПрефиксомПодсистемы].Создать(); + ИначеЕсли НЕ МетаданныеВидаОбъектов.Найти(ИдентификаторБезПрефиксаПодсистемы) = Неопределено Тогда + ОбъектПлагина = МенеджерВидаОбъектов[ИдентификаторБезПрефиксаПодсистемы].Создать(); + КонецЕсли; + + КонецЕсли; + + Если ОбъектПлагина = Неопределено Тогда + Если ЭтоОтчет = Истина Тогда + ОбъектПлагина = ВнешниеОтчеты.Создать(Идентификатор, Ложь); + Иначе + ОбъектПлагина = ВнешниеОбработки.Создать(Идентификатор, Ложь); + КонецЕсли; + КонецЕсли; + + Возврат ОбъектПлагина; + +КонецФункции + +// } Подсистема конфигурации xUnitFor1C + Инициализация(); diff --git a/src/xddTestRunner/maps.txt b/src/xddTestRunner/maps.txt index daf3d6ba..b92b0d7d 100644 --- a/src/xddTestRunner/maps.txt +++ b/src/xddTestRunner/maps.txt @@ -1 +1 @@ -Form\УправляемаяФорма\Форма.txt-->ed07b230-8bf7-4423-b861-a31f23c7471f.0 (1 461, 2 457) +Form\УправляемаяФорма\Форма.bsl-->ed07b230-8bf7-4423-b861-a31f23c7471f.0 (1 484, 2 639) diff --git a/src/xddTestRunner/renames.txt b/src/xddTestRunner/renames.txt index 12526305..aa353b5a 100644 --- a/src/xddTestRunner/renames.txt +++ b/src/xddTestRunner/renames.txt @@ -1,5 +1,5 @@ 11ad5c96-c434-4088-bf66-ddff06c57ed8.0\info-->und\11ad5c96-c434-4088-bf66-ddff06c57ed8.0\info -11ad5c96-c434-4088-bf66-ddff06c57ed8.0\text-->ObjectModule.txt +11ad5c96-c434-4088-bf66-ddff06c57ed8.0\text-->ObjectModule.bsl 11ad5c96-c434-4088-bf66-ddff06c57ed8.1-->und\11ad5c96-c434-4088-bf66-ddff06c57ed8.1 5070e3c3-f74b-4ecd-9756-1136a230eca2-->und\5070e3c3-f74b-4ecd-9756-1136a230eca2 a1ce7ef7-f372-4589-b899-7fbf88efa7bf-->und\a1ce7ef7-f372-4589-b899-7fbf88efa7bf diff --git a/src/xddTestRunner/und/11ad5c96-c434-4088-bf66-ddff06c57ed8.1 b/src/xddTestRunner/und/11ad5c96-c434-4088-bf66-ddff06c57ed8.1 index df671b2e..05c68f59 100644 --- a/src/xddTestRunner/und/11ad5c96-c434-4088-bf66-ddff06c57ed8.1 +++ b/src/xddTestRunner/und/11ad5c96-c434-4088-bf66-ddff06c57ed8.1 @@ -4,314 +4,314 @@ cmFuc2l0aW9uYWwvL0VOIj48aHRtbD48aGVhZD48bWV0YSBjb250ZW50PSJ0ZXh0 L2h0bWw7Y2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIj48 L21ldGE+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJl Zj0idjhoZWxwOi8vc2VydmljZV9ib29rL3NlcnZpY2Vfc3R5bGUiPjwvbGluaz48 -bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik1TSFRNTCAxMS4wMC45NjAw -LjE4MTI1Ij48L21ldGE+PC9oZWFkPjxib2R5Pg0KPHA+PGEgaHJlZj0iaHR0cHM6 -Ly9naXRodWIuY29tL3hEcml2ZW5EZXZlbG9wbWVudC94VW5pdEZvcjFDL3dpa2ki -Pmh0dHBzOi8vZ2l0aHViLmNvbS94RHJpdmVuRGV2ZWxvcG1lbnQveFVuaXRGb3Ix -Qy93aWtpPC9hPjwvcD4NCjxoMT48L2gxPg0KPHA+eFVuaXRGb3IxQyAtINC90LDQ -sdC+0YAg0LjQvdGB0YLRgNGD0LzQtdC90YLQvtCyINC00LvRjyDQstGL0L/QvtC7 -0L3QtdC90LjRjyDRgtC10YHRgtC40YDQvtCy0LDQvdC40Y8gKNC80L7QtNGD0LvR -jNC90L7Qs9C+L9GO0L3QuNGCLCDQv9GA0LjQtdC80L7Rh9C90L7Qs9C+LCDRgdGG -0LXQvdCw0YDQvdC+0LPQviDQtNC70Y8gMdChIDguMywg0LjQvdGC0LXQs9GA0LDR -htC40L7QvdC90L7Qs9C+KSDQsiAx0KE60J/RgNC10LTQv9GA0LjRj9GC0LjQuCA4 -LjwvcD4NCjxwPnhVbml0Rm9yMUMg0YDQsNCx0L7RgtCw0LXRgiDRgSDQu9GO0LHR -i9C80Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0LzQuCwg0L/QvtC70L3QvtGB -0YLRjNGOINC90LXQt9Cw0LLQuNGB0LjQvNCwLCDQvdC+INC80L7QttC10YIg0LHR -i9GC0Ywg0LLRgdGC0YDQvtC10L3QsCDQsiDQutC+0L3RhNC40LPRg9GA0LDRhtC4 -0Y4uPC9wPg0KPHA+0J/QvtC30LLQvtC70Y/QtdGCINC+0YLQutGA0YvQstCw0YLR -jC/RgtC10YHRgtC40YDQvtCy0LDRgtGMINCyINGA0LDQt9C90YvRhSDRgNC10LbQ -uNC80LDRhSAtINC+0LHRi9GH0L3QvtC1INC/0YDQuNC70L7QttC10L3QuNC1LCDR -gtC+0L3QutC40Lkg0Lgg0YLQvtC70YHRgtGL0Lkg0LrQu9C40LXQvdGCINGD0L/R -gNCw0LLQu9GP0LXQvNC+0LPQviDQv9GA0LjQu9C+0LbQtdC90LjRjy4gPC9wPg0K -PHA+0KLQtdGB0YLRiyDQvNC+0LPRg9GCINCx0YvRgtGMINC60LDQuiDQstC+INCy -0L3QtdGI0L3QuNGFINC+0LHRgNCw0LHQvtGC0LrQsNGFLCDRgtCw0Log0Lgg0LLQ -viDQstGB0YLRgNC+0LXQvdC90YvRhSDQvtCx0YDQsNCx0L7RgtC60LDRhS4gPC9w -Pg0KPHA+0JvRjtCx0YvQtSDQvdCw0LHQvtGA0Ysg0YLQtdGB0YLQvtCyINC80L7Q -s9GD0YIg0L/RgNC+0LPQvtC90Y/RgtGM0YHRjyDQsiDQv9C+0LvQvdC+0YHRgtGM -0Y4g0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60L7QvCDRgNC10LbQuNC80LUg0YfQ -tdGA0LXQtyA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20veERyaXZlbkRldmVs -b3BtZW50L3hVbml0Rm9yMUMvd2lraS8lRDAlOTclRDAlQjAlRDAlQkYlRDElODMl -RDElODElRDAlQkEtJUQxJTgyJUQwJUI1JUQxJTgxJUQxJTgyJUQwJUJFJUQwJUIy -LSVEMCVCOCVEMCVCNy0lRDAlQkElRDAlQkUlRDAlQkMlRDAlQjAlRDAlQkQlRDAl -QjQlRDAlQkQlRDAlQkUlRDAlQjktJUQxJTgxJUQxJTgyJUQxJTgwJUQwJUJFJUQw -JUJBJUQwJUI4LSVEMCVCOC0lRDAlQkYlRDAlQkUlRDAlQkIlRDElODMlRDElODcl -RDAlQjUlRDAlQkQlRDAlQjglRDAlQjUtJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJC -JUQwJUJFJUQwJUIyLSVEMSU4MCVEMCVCNSVEMCVCNyVEMSU4MyVEMCVCQiVEMSU4 -QyVEMSU4MiVEMCVCMCVEMSU4MiVEMCVCRSVEMCVCMiI+0YHQv9C10YbQuNCw0LvR -jNC90YPRjiDQutC+0LzQsNC90LTQvdGD0Y4g0YHRgtGA0L7QutGDINC30LDQv9GD -0YHQutCwPC9hPi4g0JDQstGC0L7Qt9Cw0L/Rg9GB0Log0LjRgdC/0L7Qu9GM0LfR -g9C10YLRgdGPINCyINGA0LDQt9C70LjRh9C90YvRhSBidWlsZC3RgdC10YDQstC1 -0YDQsNGFINC4INCyINGB0LjRgdGC0LXQvNCw0YUgQ29udGludW91cyBJbnRlZ3Jh -dGlvbi48L3A+DQo8cD48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20veERyaXZl -bkRldmVsb3BtZW50L3hVbml0Rm9yMUMvd2lraSI+0JTQu9GPINC00L7Qv9C+0LvQ -vdC40YLQtdC70YzQvdC+0Lkg0LjQvdGE0L7RgNC80LDRhtC40Lgg0YHQvC4gV2lr -aSDQv9GA0L7QtdC60YLQsDwvYT48L3A+DQo8aDI+PGEgYXJpYS1oaWRkZW49InRy -dWUiIGNsYXNzPSJhbmNob3IiIGhyZWY9IiMlRDAlQTclRDElODIlRDAlQkUtJUQw -JUJBLSVEMSU4NyVEMCVCNSVEMCVCQyVEMSU4MyIgbmFtZT0idXNlci1jb250ZW50 -LSVEMCVBNyVEMSU4MiVEMCVCRS0lRDAlQkEtJUQxJTg3JUQwJUI1JUQwJUJDJUQx -JTgzIj48c3BhbiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWxpbmsiPjwvc3Bhbj48 -L2E+0KfRgtC+INC6INGH0LXQvNGDPC9oMj4NCjx1bCBjbGFzcz0idGFzay1saXN0 -Ij48ZW0+DQo8bGkgc3R5bGU9IkJPWC1TSVpJTkc6IGJvcmRlci1ib3giPjxlbSBz -dHlsZT0iQk9YLVNJWklORzogYm9yZGVyLWJveCI+eGRkVGVzdFJ1bm5lci5lcGY8 -L2VtPjxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPsKgPC9zcGFu -Pi0g0LHRgNCw0YPQt9C10YAg0Lgg0LjRgdC/0L7Qu9C90LjRgtC10LvRjCDRgtC1 -0YHRgtC+0LIg0LTQu9GPINC+0LHRi9GH0L3QvtCz0L4g0L/RgNC40LvQvtC20LXQ -vdC40Y8g0Lgg0YPQv9GA0LDQstC70Y/QtdC80L7Qs9C+INC/0YDQuNC70L7QttC1 -0L3QuNGPIDHQoTrQn9GA0LXQtNC/0YDQuNGP0YLQuNGPIDggKNGC0L7Qu9GB0YLR -i9C5INC4INGC0L7QvdC60LjQuSDQutC70LjQtdC90YLRiykgDQo8L2xpPjxsaSBz -dHlsZT0iQk9YLVNJWklORzogYm9yZGVyLWJveCI+PGVtIHN0eWxlPSJCT1gtU0la -SU5HOiBib3JkZXItYm94Ij54ZGREYXRhRml4dHVyZUdlbi5lcGY8L2VtPjxzcGFu -IGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPsKgPC9zcGFuPi0g0LPQtdC9 -0LXRgNCw0YbQuNGPINC80LDQutC10YLQsCDQtNCw0L3QvdGL0YUg0LTQu9GPINC4 -0YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINCyINGC0LXRgdGC0LDRhS4g0JzQsNC6 -0LXRgiDQvNC+0LbQvdC+INCz0LXQvdC10YDQuNGC0Ywg0LjQtyDQsdC+0LXQstC+ -0Lkg0LHQsNC30Ysg0L3QsCDQvtGB0L3QvtCy0LUg0YDQtdCw0LvRjNC90YvRhSDQ -tNCw0L3QvdGL0YUuIA0KPC9saT48bGkgc3R5bGU9IkJPWC1TSVpJTkc6IGJvcmRl -ci1ib3giPjxlbSBzdHlsZT0iQk9YLVNJWklORzogYm9yZGVyLWJveCI+eGRkVGVz -dFJ1bm5lci5qczwvZW0+PHNwYW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFj -ZSI+wqA8L3NwYW4+LSDRgdC60YDQuNC/0YIg0LTQu9GPINCh0L3QtdCz0L7Qv9Cw -0YLQsCwg0L/QvtC30LLQvtC70Y/RjtGJ0LjQuSDQstGL0L/QvtC70L3Rj9GC0Ywg -0YLQtdGB0YLRiyDQv9GA0Y/QvNC+INC40Lcg0LrQvtC90YTQuNCz0YPRgNCw0YLQ -vtGA0LAgDQo8L2xpPjxsaSBzdHlsZT0iQk9YLVNJWklORzogYm9yZGVyLWJveCI+ -PGVtIHN0eWxlPSJCT1gtU0laSU5HOiBib3JkZXItYm94Ij5UZXN0cy88L2VtPjxz -cGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPsKgPC9zcGFuPi0g0LrQ -sNGC0LDQu9C+0LMg0YEg0L/RgNC40LzQtdGA0LDQvNC4INGC0LXRgdGC0L7QsiDQ -uCDRgSDRgtC10YHRgtCw0LzQuCDQtNC70Y8g0YHQsNC80L7RgtC10YHRgtC40YDQ -vtCy0LDQvdC40Y8geGRkVGVzdFJ1bm5lci5lcGYgKNC/0L7QtNC/0LDQv9C60LAg -c2VsZnRlc3RzKSANCjwvbGk+PGxpIHN0eWxlPSJCT1gtU0laSU5HOiBib3JkZXIt -Ym94Ij48ZW0gc3R5bGU9IkJPWC1TSVpJTkc6IGJvcmRlci1ib3giPlRlc3RzXENv -bW1vbkFwcFzRgtC10YHRgtGLX9Ce0YLQutGA0YvRgtC40LXQpNC+0YDQvNCa0L7Q -vdGE0LjQs9GD0YDQsNGG0LjQuC5lcGY8L2VtPjxzcGFuIGNsYXNzPSJBcHBsZS1j -b252ZXJ0ZWQtc3BhY2UiPsKgPC9zcGFuPi0g0YLQtdGB0YLRiyDQvtGC0LrRgNGL -0YLQuNGPINCy0YHQtdGFINGE0L7RgNC8INGB0L/RgNCw0LLQvtGH0L3QuNC60L7Q -siwg0LTQvtC60YPQvNC10L3RgtC+0LIsINC+0YLRh9C10YLQvtCyINC4INC+0LHR -gNCw0LHQvtGC0L7Qui4g0JTQu9GPINGB0L/RgNCw0LLQvtGH0L3QuNC60L7QsiDQ -uCDQtNC+0LrRg9C80LXQvdGC0L7QsiDQsiDRgtGA0LDQvdC30LDQutGG0LjQuCDR -gdC+0LfQtNCw0Y7RgtGB0Y8g0L3QvtCy0YvQtSDQuNC70Lgg0LrQvtC/0LjRgNGD -0Y7RgtGB0Y8g0LjQu9C4INC/0LXRgNC10LfQsNC/0LjRgdGL0LLQsNGO0YLRgdGP -INGB0YPRidC10YHRgtCy0YPRjtGJ0LjQtSDRjdC70LXQvNC10L3RgtGLLiANCjwv -bGk+PGxpIHN0eWxlPSJCT1gtU0laSU5HOiBib3JkZXItYm94Ij48ZW0gc3R5bGU9 -IkJPWC1TSVpJTkc6IGJvcmRlci1ib3giPlRlc3RzXENvbW1vbkFwcFzQotC10YHR -gl/Ql9Cw0L/Rg9GB0LrQotC10YHRgtC+0LLQktCh0LXQsNC90YHQtdCU0YDRg9Cz -0LjRhdCf0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LmVwZjwvZW0+PHNwYW4gY2xh -c3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+wqA8L3NwYW4+LSDQv9GA0LjQvNC1 -0YDRiyDQt9Cw0L/Rg9GB0LrQsCDRgtC10YHRgtC+0LIg0LTQu9GPINC/0L7Qu9GM -0LfQvtCy0LDRgtC10LvQtdC5INGBINC+0LPRgNCw0L3QuNGH0LXQvdC90YvQvNC4 -INC/0YDQsNCy0LDQvNC4LiDQn9C+0LvRjNC30L7QstCw0YLQtdC70Lgg0YHQvtC3 -0LTQsNGO0YLRgdGPINC90LAg0LvQtdGC0YMg0LjQtyDQv9GA0L7RgdGC0YvRhSDQ -vNCw0LrQtdGC0L7Qsi4gDQo8L2xpPjxsaSBzdHlsZT0iQk9YLVNJWklORzogYm9y -ZGVyLWJveCI+PGVtIHN0eWxlPSJCT1gtU0laSU5HOiBib3JkZXItYm94Ij5UZXN0 -c1xDb21tb25BcHBc0KLQtdGB0YJf0J/RgNC+0LLQtdGA0LjRgtGM0J7RgtGH0LXR -gtCd0LDQodC+0L7RgtCy0LXRgtGB0YLQstC40LXQrdGC0LDQu9C+0L3Rgy5lcGY8 -L2VtPjxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPsKgPC9zcGFu -Pi0g0L/RgNC40LzQtdGAINGC0LXRgdGC0LAg0L7RgtGH0LXRgtCwINC/0YPRgtC1 -0Lwg0YHRgNCw0LLQvdC10L3QuNGPINGBINGN0YLQsNC70L7QvdC90YvQvCDQvtC2 -0LjQtNCw0L3QuNC10Lwg0LjQtyDQvNCw0LrQtdGC0LAuPC9saT48L2VtPjwvdWw+ -PGgyPjxhIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYW5jaG9yIiBocmVmPSIj -JUQwJTkyJUQwJUJFJUQwJUI3JUQwJUJDJUQwJUJFJUQwJUI2JUQwJUJEJUQwJUJF -JUQxJTgxJUQxJTgyJUQwJUI4LXVuaXR0ZXN0cnVubmVyZXBmIiBuYW1lPSJ1c2Vy -LWNvbnRlbnQtJUQwJTkyJUQwJUJFJUQwJUI3JUQwJUJDJUQwJUJFJUQwJUI2JUQw -JUJEJUQwJUJFJUQxJTgxJUQxJTgyJUQwJUI4LXVuaXR0ZXN0cnVubmVyZXBmIj48 -c3BhbiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWxpbmsiPjwvc3Bhbj48L2E+0JrQ -sNC6INC/0L7QvNC+0YfRjCDQv9GA0L7QtdC60YLRgzwvaDI+DQo8cD7QnNGLINGA -0LDQtNGLINC70Y7QsdC+0Lkg0L/QvtC80L7RidC4OiA8L3A+DQo8b2wgY2xhc3M9 -InRhc2stbGlzdCI+PGxpPg0KPHA+0JXRgdC70Lgg0LLRiyDQt9Cw0L3QuNC80LDQ -tdGC0LXRgdGMINGA0LDQt9GA0LDQsdC+0YLQutC+0Lkg0L3QsCAx0KE60J/RgNC1 -0L/RgNC40Y/RgtC40LggOCDQv9GA0L7QsdGD0LnRgtC1INC/0LjRgdCw0YLRjCDQ -uCDQstGL0L/QvtC70L3Rj9GC0Ywg0YLQtdGB0YLRiyDQv9GA0Lgg0L/QvtC80L7R -idC4IHhVbml0Rm9yMUMsINGB0L7QvtCx0YnQsNC50YLQtSDQvdCw0Lwg0L7QsSDQ -vtCx0L3QsNGA0YPQttC10L3QvdGL0YUg0L7RiNC40LHQutCw0YUsINC/0LjRiNC4 -0YLQtSDQv9C+0LbQtdC70LDQvdC40Y8uINCU0LvRjyDRg9C/0YDQsNCy0LvQtdC9 -0LjRjyDRgdC+0L7QsdGJ0LXQvdC40Y/QvNC4INC+0LEg0L7RiNC40LHQutCw0YUg -0Lgg0L/QvtC20LXQu9Cw0L3QuNGP0LzQuCDQvNGLINC40YHQv9C+0LvRjNC30YPQ -tdC8IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rdW50YXNob3YvMUNVbml0 -L2lzc3Vlcz9zb3J0PWNyZWF0ZWQmYW1wO3N0YXRlPW9wZW4iPtCx0LDQsy3RgtGA -0LXQutC10YAgR2l0SHViJ9CwPC9hPi48L3A+DQo8L2xpPjxsaT4NCjxwPtCV0YHQ -u9C4INGDINCy0LDRgSDQtdGB0YLRjCDQstGA0LXQvNGPINGA0LDQt9C+0LHRgNCw -0YLRjNGB0Y8g0LIg0LjRgdGF0L7QtNC90L7QvCDQutC+0LTQtSwg0LLRiyDQvNC+ -0LbQtdGC0LUg0LLQt9GP0YLRjCDQvdCwINGB0LXQsdGPINGA0LXQsNC70LjQt9Cw -0YbQuNGOINC+0LTQvdC+0Lkg0LjQtyA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5j -b20va3VudGFzaG92L3hVbml0Rm9yMUMvaXNzdWVzP3NvcnQ9Y3JlYXRlZCZhbXA7 -c3RhdGU9b3BlbiI+0L7RgtC60YDRi9GC0YvRhSDQt9Cw0LTQsNGHPC9hPi48L3A+ -DQo8L2xpPjxsaT4NCjxwPtCV0YHQu9C4INCy0Ysg0YPQttC1INC40YHQv9C+0LvR -jNC30YPQtdGC0LUgeFVuaXRGb3IxQyDQvdCwINC/0YDQsNC60YLQuNC60LUsINC9 -0LDQv9C40YjQuNGC0LUg0L7QsSDRjdGC0L7QvCDRgdGC0LDRgtGM0Y4sINC90LDQ -v9GA0LjQvNC10YAsINC90LAgPGEgaHJlZj0iaHR0cDovL2luZm9zdGFydC5ydSI+ -0JjQvdGE0L7RgdGC0LDRgNGC0LU8L2E+LjwvcD48L2xpPjwvb2w+PGgyPjxhIGFy -aWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYW5jaG9yIiBocmVmPSIjJUQwJUExJUQw -JUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUJEJUQwJUI4JUQwJUI1LSVEMSU4NCVE -MCVCMCVEMCVCOSVEMCVCQiVEMCVCRSVEMCVCMi0lRDElODIlRDAlQjUlRDElODEl -RDElODIlRDAlQkUlRDAlQjIiIG5hbWU9InVzZXItY29udGVudC0lRDAlQTElRDAl +bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik1TSFRNTCAxMS4wMC4xMDU4 +Ni40MjAiPjwvbWV0YT48L2hlYWQ+PGJvZHk+DQo8cD48YSBocmVmPSJodHRwczov +L2dpdGh1Yi5jb20veERyaXZlbkRldmVsb3BtZW50L3hVbml0Rm9yMUMvd2lraSI+ +aHR0cHM6Ly9naXRodWIuY29tL3hEcml2ZW5EZXZlbG9wbWVudC94VW5pdEZvcjFD +L3dpa2k8L2E+PC9wPg0KPGgxPjwvaDE+DQo8cD54VW5pdEZvcjFDIC0g0L3QsNCx +0L7RgCDQuNC90YHRgtGA0YPQvNC10L3RgtC+0LIg0LTQu9GPINCy0YvQv9C+0LvQ +vdC10L3QuNGPINGC0LXRgdGC0LjRgNC+0LLQsNC90LjRjyAo0LzQvtC00YPQu9GM +0L3QvtCz0L4v0Y7QvdC40YIsINC/0YDQuNC10LzQvtGH0L3QvtCz0L4sINGB0YbQ +tdC90LDRgNC90L7Qs9C+INC00LvRjyAx0KEgOC4zLCDQuNC90YLQtdCz0YDQsNGG +0LjQvtC90L3QvtCz0L4pINCyIDHQoTrQn9GA0LXQtNC/0YDQuNGP0YLQuNC4IDgu +PC9wPg0KPHA+eFVuaXRGb3IxQyDRgNCw0LHQvtGC0LDQtdGCINGBINC70Y7QsdGL +0LzQuCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/QvNC4LCDQv9C+0LvQvdC+0YHR +gtGM0Y4g0L3QtdC30LDQstC40YHQuNC80LAsINC90L4g0LzQvtC20LXRgiDQsdGL +0YLRjCDQstGB0YLRgNC+0LXQvdCwINCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjR +ji48L3A+DQo8cD7Qn9C+0LfQstC+0LvRj9C10YIg0L7RgtC60YDRi9Cy0LDRgtGM +L9GC0LXRgdGC0LjRgNC+0LLQsNGC0Ywg0LIg0YDQsNC30L3Ri9GFINGA0LXQttC4 +0LzQsNGFIC0g0L7QsdGL0YfQvdC+0LUg0L/RgNC40LvQvtC20LXQvdC40LUsINGC +0L7QvdC60LjQuSDQuCDRgtC+0LvRgdGC0YvQuSDQutC70LjQtdC90YIg0YPQv9GA +0LDQstC70Y/QtdC80L7Qs9C+INC/0YDQuNC70L7QttC10L3QuNGPLiA8L3A+DQo8 +cD7QotC10YHRgtGLINC80L7Qs9GD0YIg0LHRi9GC0Ywg0LrQsNC6INCy0L4g0LLQ +vdC10YjQvdC40YUg0L7QsdGA0LDQsdC+0YLQutCw0YUsINGC0LDQuiDQuCDQstC+ +INCy0YHRgtGA0L7QtdC90L3Ri9GFINC+0LHRgNCw0LHQvtGC0LrQsNGFLiA8L3A+ +DQo8cD7Qm9GO0LHRi9C1INC90LDQsdC+0YDRiyDRgtC10YHRgtC+0LIg0LzQvtCz +0YPRgiDQv9GA0L7Qs9C+0L3Rj9GC0YzRgdGPINCyINC/0L7Qu9C90L7RgdGC0YzR +jiDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrQvtC8INGA0LXQttC40LzQtSDRh9C1 +0YDQtdC3IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS94RHJpdmVuRGV2ZWxv +cG1lbnQveFVuaXRGb3IxQy93aWtpLyVEMCU5NyVEMCVCMCVEMCVCRiVEMSU4MyVE +MSU4MSVEMCVCQS0lRDElODIlRDAlQjUlRDElODElRDElODIlRDAlQkUlRDAlQjIt +JUQwJUI4JUQwJUI3LSVEMCVCQSVEMCVCRSVEMCVCQyVEMCVCMCVEMCVCRCVEMCVC +NCVEMCVCRCVEMCVCRSVEMCVCOS0lRDElODElRDElODIlRDElODAlRDAlQkUlRDAl +QkElRDAlQjgtJUQwJUI4LSVEMCVCRiVEMCVCRSVEMCVCQiVEMSU4MyVEMSU4NyVE +MCVCNSVEMCVCRCVEMCVCOCVEMCVCNS0lRDElODQlRDAlQjAlRDAlQjklRDAlQkIl +RDAlQkUlRDAlQjItJUQxJTgwJUQwJUI1JUQwJUI3JUQxJTgzJUQwJUJCJUQxJThD +JUQxJTgyJUQwJUIwJUQxJTgyJUQwJUJFJUQwJUIyIj7RgdC/0LXRhtC40LDQu9GM +0L3Rg9GOINC60L7QvNCw0L3QtNC90YPRjiDRgdGC0YDQvtC60YMg0LfQsNC/0YPR +gdC60LA8L2E+LiDQkNCy0YLQvtC30LDQv9GD0YHQuiDQuNGB0L/QvtC70YzQt9GD +0LXRgtGB0Y8g0LIg0YDQsNC30LvQuNGH0L3Ri9GFIGJ1aWxkLdGB0LXRgNCy0LXR +gNCw0YUg0Lgg0LIg0YHQuNGB0YLQtdC80LDRhSBDb250aW51b3VzIEludGVncmF0 +aW9uLjwvcD4NCjxwPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS94RHJpdmVu +RGV2ZWxvcG1lbnQveFVuaXRGb3IxQy93aWtpIj7QlNC70Y8g0LTQvtC/0L7Qu9C9 +0LjRgtC10LvRjNC90L7QuSDQuNC90YTQvtGA0LzQsNGG0LjQuCDRgdC8LiBXaWtp +INC/0YDQvtC10LrRgtCwPC9hPjwvcD4NCjxoMj48YSBhcmlhLWhpZGRlbj0idHJ1 +ZSIgY2xhc3M9ImFuY2hvciIgaHJlZj0iIyVEMCVBNyVEMSU4MiVEMCVCRS0lRDAl +QkEtJUQxJTg3JUQwJUI1JUQwJUJDJUQxJTgzIiBuYW1lPSJ1c2VyLWNvbnRlbnQt +JUQwJUE3JUQxJTgyJUQwJUJFLSVEMCVCQS0lRDElODclRDAlQjUlRDAlQkMlRDEl +ODMiPjxzcGFuIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbGluayI+PC9zcGFuPjwv +YT7Qp9GC0L4g0Log0YfQtdC80YM8L2gyPg0KPHVsIGNsYXNzPSJ0YXNrLWxpc3Qi +PjxlbT4NCjxsaSBzdHlsZT0iQk9YLVNJWklORzogYm9yZGVyLWJveCI+PGVtIHN0 +eWxlPSJCT1gtU0laSU5HOiBib3JkZXItYm94Ij54ZGRUZXN0UnVubmVyLmVwZjwv +ZW0+PHNwYW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+wqA8L3NwYW4+ +LSDQsdGA0LDRg9C30LXRgCDQuCDQuNGB0L/QvtC70L3QuNGC0LXQu9GMINGC0LXR +gdGC0L7QsiDQtNC70Y8g0L7QsdGL0YfQvdC+0LPQviDQv9GA0LjQu9C+0LbQtdC9 +0LjRjyDQuCDRg9C/0YDQsNCy0LvRj9C10LzQvtCz0L4g0L/RgNC40LvQvtC20LXQ +vdC40Y8gMdChOtCf0YDQtdC00L/RgNC40Y/RgtC40Y8gOCAo0YLQvtC70YHRgtGL +0Lkg0Lgg0YLQvtC90LrQuNC5INC60LvQuNC10L3RgtGLKSANCjwvbGk+PGxpIHN0 +eWxlPSJCT1gtU0laSU5HOiBib3JkZXItYm94Ij48ZW0gc3R5bGU9IkJPWC1TSVpJ +Tkc6IGJvcmRlci1ib3giPnhkZERhdGFGaXh0dXJlR2VuLmVwZjwvZW0+PHNwYW4g +Y2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+wqA8L3NwYW4+LSDQs9C10L3Q +tdGA0LDRhtC40Y8g0LzQsNC60LXRgtCwINC00LDQvdC90YvRhSDQtNC70Y8g0LjR +gdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0LIg0YLQtdGB0YLQsNGFLiDQnNCw0LrQ +tdGCINC80L7QttC90L4g0LPQtdC90LXRgNC40YLRjCDQuNC3INCx0L7QtdCy0L7Q +uSDQsdCw0LfRiyDQvdCwINC+0YHQvdC+0LLQtSDRgNC10LDQu9GM0L3Ri9GFINC0 +0LDQvdC90YvRhS4gDQo8L2xpPjxsaSBzdHlsZT0iQk9YLVNJWklORzogYm9yZGVy +LWJveCI+PGVtIHN0eWxlPSJCT1gtU0laSU5HOiBib3JkZXItYm94Ij54ZGRUZXN0 +UnVubmVyLmpzPC9lbT48c3BhbiBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNl +Ij7CoDwvc3Bhbj4tINGB0LrRgNC40L/RgiDQtNC70Y8g0KHQvdC10LPQvtC/0LDR +gtCwLCDQv9C+0LfQstC+0LvRj9GO0YnQuNC5INCy0YvQv9C+0LvQvdGP0YLRjCDR +gtC10YHRgtGLINC/0YDRj9C80L4g0LjQtyDQutC+0L3RhNC40LPRg9GA0LDRgtC+ +0YDQsCANCjwvbGk+PGxpIHN0eWxlPSJCT1gtU0laSU5HOiBib3JkZXItYm94Ij48 +ZW0gc3R5bGU9IkJPWC1TSVpJTkc6IGJvcmRlci1ib3giPlRlc3RzLzwvZW0+PHNw +YW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+wqA8L3NwYW4+LSDQutCw +0YLQsNC70L7QsyDRgSDQv9GA0LjQvNC10YDQsNC80Lgg0YLQtdGB0YLQvtCyINC4 +INGBINGC0LXRgdGC0LDQvNC4INC00LvRjyDRgdCw0LzQvtGC0LXRgdGC0LjRgNC+ +0LLQsNC90LjRjyB4ZGRUZXN0UnVubmVyLmVwZiAo0L/QvtC00L/QsNC/0LrQsCBz +ZWxmdGVzdHMpIA0KPC9saT48bGkgc3R5bGU9IkJPWC1TSVpJTkc6IGJvcmRlci1i +b3giPjxlbSBzdHlsZT0iQk9YLVNJWklORzogYm9yZGVyLWJveCI+VGVzdHNcQ29t +bW9uQXBwXNGC0LXRgdGC0Ytf0J7RgtC60YDRi9GC0LjQtdCk0L7RgNC80JrQvtC9 +0YTQuNCz0YPRgNCw0YbQuNC4LmVwZjwvZW0+PHNwYW4gY2xhc3M9IkFwcGxlLWNv +bnZlcnRlZC1zcGFjZSI+wqA8L3NwYW4+LSDRgtC10YHRgtGLINC+0YLQutGA0YvR +gtC40Y8g0LLRgdC10YUg0YTQvtGA0Lwg0YHQv9GA0LDQstC+0YfQvdC40LrQvtCy +LCDQtNC+0LrRg9C80LXQvdGC0L7Qsiwg0L7RgtGH0LXRgtC+0LIg0Lgg0L7QsdGA +0LDQsdC+0YLQvtC6LiDQlNC70Y8g0YHQv9GA0LDQstC+0YfQvdC40LrQvtCyINC4 +INC00L7QutGD0LzQtdC90YLQvtCyINCyINGC0YDQsNC90LfQsNC60YbQuNC4INGB +0L7Qt9C00LDRjtGC0YHRjyDQvdC+0LLRi9C1INC40LvQuCDQutC+0L/QuNGA0YPR +jtGC0YHRjyDQuNC70Lgg0L/QtdGA0LXQt9Cw0L/QuNGB0YvQstCw0Y7RgtGB0Y8g +0YHRg9GJ0LXRgdGC0LLRg9GO0YnQuNC1INGN0LvQtdC80LXQvdGC0YsuIA0KPC9s +aT48bGkgc3R5bGU9IkJPWC1TSVpJTkc6IGJvcmRlci1ib3giPjxlbSBzdHlsZT0i +Qk9YLVNJWklORzogYm9yZGVyLWJveCI+VGVzdHNcQ29tbW9uQXBwXNCi0LXRgdGC +X9CX0LDQv9GD0YHQutCi0LXRgdGC0L7QstCS0KHQtdCw0L3RgdC10JTRgNGD0LPQ +uNGF0J/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuZXBmPC9lbT48c3BhbiBjbGFz +cz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj7CoDwvc3Bhbj4tINC/0YDQuNC80LXR +gNGLINC30LDQv9GD0YHQutCwINGC0LXRgdGC0L7QsiDQtNC70Y8g0L/QvtC70YzQ +t9C+0LLQsNGC0LXQu9C10Lkg0YEg0L7Qs9GA0LDQvdC40YfQtdC90L3Ri9C80Lgg +0L/RgNCw0LLQsNC80LguINCf0L7Qu9GM0LfQvtCy0LDRgtC10LvQuCDRgdC+0LfQ +tNCw0Y7RgtGB0Y8g0L3QsCDQu9C10YLRgyDQuNC3INC/0YDQvtGB0YLRi9GFINC8 +0LDQutC10YLQvtCyLiANCjwvbGk+PGxpIHN0eWxlPSJCT1gtU0laSU5HOiBib3Jk +ZXItYm94Ij48ZW0gc3R5bGU9IkJPWC1TSVpJTkc6IGJvcmRlci1ib3giPlRlc3Rz +XENvbW1vbkFwcFzQotC10YHRgl/Qn9GA0L7QstC10YDQuNGC0YzQntGC0YfQtdGC +0J3QsNCh0L7QvtGC0LLQtdGC0YHRgtCy0LjQtdCt0YLQsNC70L7QvdGDLmVwZjwv +ZW0+PHNwYW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+wqA8L3NwYW4+ +LSDQv9GA0LjQvNC10YAg0YLQtdGB0YLQsCDQvtGC0YfQtdGC0LAg0L/Rg9GC0LXQ +vCDRgdGA0LDQstC90LXQvdC40Y8g0YEg0Y3RgtCw0LvQvtC90L3Ri9C8INC+0LbQ +uNC00LDQvdC40LXQvCDQuNC3INC80LDQutC10YLQsC48L2xpPjwvZW0+PC91bD48 +aDI+PGEgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJhbmNob3IiIGhyZWY9IiMl +RDAlOTIlRDAlQkUlRDAlQjclRDAlQkMlRDAlQkUlRDAlQjYlRDAlQkQlRDAlQkUl +RDElODElRDElODIlRDAlQjgtdW5pdHRlc3RydW5uZXJlcGYiIG5hbWU9InVzZXIt +Y29udGVudC0lRDAlOTIlRDAlQkUlRDAlQjclRDAlQkMlRDAlQkUlRDAlQjYlRDAl +QkQlRDAlQkUlRDElODElRDElODIlRDAlQjgtdW5pdHRlc3RydW5uZXJlcGYiPjxz +cGFuIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbGluayI+PC9zcGFuPjwvYT7QmtCw +0Log0L/QvtC80L7Rh9GMINC/0YDQvtC10LrRgtGDPC9oMj4NCjxwPtCc0Ysg0YDQ +sNC00Ysg0LvRjtCx0L7QuSDQv9C+0LzQvtGJ0Lg6IDwvcD4NCjxvbCBjbGFzcz0i +dGFzay1saXN0Ij48bGk+DQo8cD7QldGB0LvQuCDQstGLINC30LDQvdC40LzQsNC1 +0YLQtdGB0Ywg0YDQsNC30YDQsNCx0L7RgtC60L7QuSDQvdCwIDHQoTrQn9GA0LXQ +v9GA0LjRj9GC0LjQuCA4INC/0YDQvtCx0YPQudGC0LUg0L/QuNGB0LDRgtGMINC4 +INCy0YvQv9C+0LvQvdGP0YLRjCDRgtC10YHRgtGLINC/0YDQuCDQv9C+0LzQvtGJ +0LggeFVuaXRGb3IxQywg0YHQvtC+0LHRidCw0LnRgtC1INC90LDQvCDQvtCxINC+ +0LHQvdCw0YDRg9C20LXQvdC90YvRhSDQvtGI0LjQsdC60LDRhSwg0L/QuNGI0LjR +gtC1INC/0L7QttC10LvQsNC90LjRjy4g0JTQu9GPINGD0L/RgNCw0LLQu9C10L3Q +uNGPINGB0L7QvtCx0YnQtdC90LjRj9C80Lgg0L7QsSDQvtGI0LjQsdC60LDRhSDQ +uCDQv9C+0LbQtdC70LDQvdC40Y/QvNC4INC80Ysg0LjRgdC/0L7Qu9GM0LfRg9C1 +0LwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t1bnRhc2hvdi8xQ1VuaXQv +aXNzdWVzP3NvcnQ9Y3JlYXRlZCZhbXA7c3RhdGU9b3BlbiI+0LHQsNCzLdGC0YDQ +tdC60LXRgCBHaXRIdWIn0LA8L2E+LjwvcD4NCjwvbGk+PGxpPg0KPHA+0JXRgdC7 +0Lgg0YMg0LLQsNGBINC10YHRgtGMINCy0YDQtdC80Y8g0YDQsNC30L7QsdGA0LDR +gtGM0YHRjyDQsiDQuNGB0YXQvtC00L3QvtC8INC60L7QtNC1LCDQstGLINC80L7Q +ttC10YLQtSDQstC30Y/RgtGMINC90LAg0YHQtdCx0Y8g0YDQtdCw0LvQuNC30LDR +htC40Y4g0L7QtNC90L7QuSDQuNC3IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNv +bS9rdW50YXNob3YveFVuaXRGb3IxQy9pc3N1ZXM/c29ydD1jcmVhdGVkJmFtcDtz +dGF0ZT1vcGVuIj7QvtGC0LrRgNGL0YLRi9GFINC30LDQtNCw0Yc8L2E+LjwvcD4N +CjwvbGk+PGxpPg0KPHA+0JXRgdC70Lgg0LLRiyDRg9C20LUg0LjRgdC/0L7Qu9GM +0LfRg9C10YLQtSB4VW5pdEZvcjFDINC90LAg0L/RgNCw0LrRgtC40LrQtSwg0L3Q +sNC/0LjRiNC40YLQtSDQvtCxINGN0YLQvtC8INGB0YLQsNGC0YzRjiwg0L3QsNC/ +0YDQuNC80LXRgCwg0L3QsCA8YSBocmVmPSJodHRwOi8vaW5mb3N0YXJ0LnJ1Ij7Q +mNC90YTQvtGB0YLQsNGA0YLQtTwvYT4uPC9wPjwvbGk+PC9vbD48aDI+PGEgYXJp +YS1oaWRkZW49InRydWUiIGNsYXNzPSJhbmNob3IiIGhyZWY9IiMlRDAlQTElRDAl QkUlRDAlQjclRDAlQjQlRDAlQjAlRDAlQkQlRDAlQjglRDAlQjUtJUQxJTg0JUQw JUIwJUQwJUI5JUQwJUJCJUQwJUJFJUQwJUIyLSVEMSU4MiVEMCVCNSVEMSU4MSVE -MSU4MiVEMCVCRSVEMCVCMiI+PHNwYW4gY2xhc3M9Im9jdGljb24gb2N0aWNvbi1s -aW5rIj48L3NwYW4+PC9hPtCh0L7Qt9C00LDQvdC40LUg0YTQsNC50LvQvtCyLdGC -0LXRgdGC0L7QsjwvaDI+DQo8cCBjbGFzcz0ibWFya2Rvd24tYm9keSI+0KHQvtC3 -0LTQsNC10Lwg0L3QvtCy0YPRjiDQstC90LXRiNC90Y7RjiDQvtCx0YDQsNCx0L7R -gtC60YMsINGCLtC9LiA8c3Ryb25nPtGC0LXRgdGC0L7QstGL0Lkg0L3QsNCx0L7R -gDwvc3Ryb25nPjwvcD4NCjxwIGNsYXNzPSJtYXJrZG93bi1ib2R5Ij7QkiDQvNC+ -0LTRg9C70LUg0Y3RgtC+0Lkg0L7QsdGA0LDQsdC+0YLQutC4INGA0LDQt9C80LXR -idCw0Y7RgtGB0Y8gPHN0cm9uZz7RgtC10YHRgtC+0LLRi9C1INGB0LvRg9GH0LDQ -uDwvc3Ryb25nPiAo0Y3QutGB0L/QvtGA0YLQvdGL0LUg0LzQtdGC0L7QtNGLINCx -0LXQtyDQv9Cw0YDQsNC80LXRgtGA0L7Qsiwg0YfRjNC1INC40LzRjyDQvdCw0YfQ -uNC90LDQtdGC0YHRjyDQvdCwINCi0LXRgdGCKTwvcD4NCjxwIGNsYXNzPSJtYXJr -ZG93bi1ib2R5Ij7QotC10YHRgtC+0LLRi9C5INGB0LvRg9GH0LDQuSDRgdGH0LjR -gtCw0LXRgtGB0Y8g0YPRgdC/0LXRiNC90L4g0LLRi9C/0L7Qu9C90LXQvdC90YvQ -vCwg0LXRgdC70Lgg0LIg0L/RgNC+0YbQtdGB0YHQtSDQtdCz0L4g0LLRi9C/0L7Q -u9C90LXQvdC40Y8g0L3QtSDQsdGL0LvQviDQuNGB0LrQu9GO0YfQtdC90LjRjy48 -L3A+DQo8cCBjbGFzcz0ibWFya2Rvd24tYm9keSI+0KHQvtC+0YLQstC10YLRgdGC -0LLQtdC90L3Qviwg0LTQu9GPINGC0L7Qs9C+LCDRh9GC0L7QsdGLINGC0LXRgdGC -INGD0L/QsNC7LCDQvdGD0LbQvdC+INCy0YvQsdGA0L7RgdC40YLRjCDQuNGB0LrQ -u9GO0YfQtdC90LjQtSAx0KEuINCU0LvRjyDRjdGC0L7Qs9C+INC40YHQv9C+0LvR -jNC30YPRjtGC0YHRjyDQstGL0LfQvtCy0Ysg0YHQv9C10YbQuNCw0LvRjNC90YvR -hSDQvNC10YLQvtC00L7Qsi3Rg9GC0LLQtdGA0LbQtNC10L3QuNC5INC40Lcg0YTR -gNC10LnQvNCy0L7RgNC60LAgeFVuaXRGb3IxQy4g0KHQvC4gPGEgaHJlZj0iaHR0 -cHM6Ly9naXRodWIuY29tL3hVbml0Rm9yMUMveFVuaXRGb3IxQy93aWtpLyVEMCU5 -QyVEMCVCNSVEMSU4MiVEMCVCRSVEMCVCNCVEMSU4Qi0lRDAlQkYlRDElODAlRDAl -QkUlRDAlQjIlRDAlQjUlRDElODAlRDAlQkElRDAlQjgtJUQxJTgzJUQxJTgyJUQw -JUIyJUQwJUI1JUQxJTgwJUQwJUI2JUQwJUI0JUQwJUI1JUQwJUJEJUQwJUI4JUQx -JThGIj7QnNC10YLQvtC00Ysg0L/RgNC+0LLQtdGA0LrQuC/Rg9GC0LLQtdGA0LbQ -tNC10L3QuNC5PC9hPjwvcD4NCjxoMiBjbGFzcz0ibWFya2Rvd24tYm9keSI+PGEg -YXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJhbmNob3IiIGhyZWY9IiMlRDAlOUYl -RDElODAlRDAlQjUlRDAlQjQlRDAlQkUlRDAlQkYlRDElODAlRDAlQjUlRDAlQjQl -RDAlQjUlRDAlQkIlRDAlQjUlRDAlQkQlRDAlQkQlRDElOEIlRDAlQjUtJUQwJUJD -JUQwJUI1JUQxJTgyJUQwJUJFJUQwJUI0JUQxJThCLSVEMSU4MiVEMCVCNSVEMSU4 -MSVEMSU4MiVEMCVCMCIgbmFtZT0idXNlci1jb250ZW50LSVEMCU5RiVEMSU4MCVE -MCVCNSVEMCVCNCVEMCVCRSVEMCVCRiVEMSU4MCVEMCVCNSVEMCVCNCVEMCVCNSVE -MCVCQiVEMCVCNSVEMCVCRCVEMCVCRCVEMSU4QiVEMCVCNS0lRDAlQkMlRDAlQjUl -RDElODIlRDAlQkUlRDAlQjQlRDElOEItJUQxJTgyJUQwJUI1JUQxJTgxJUQxJTgy -JUQwJUIwIj48c3BhbiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWxpbmsiPjwvc3Bh -bj48L2E+0J/RgNC10LTQvtC/0YDQtdC00LXQu9C10L3QvdGL0LUg0LzQtdGC0L7Q -tNGLINGC0LXRgdGC0LA8L2gyPg0KPGRpdiBjbGFzcz0ibWFya2Rvd24tYm9keSI+ -DQo8dWwgY2xhc3M9InRhc2stbGlzdCI+PGxpPg0KPHA+0J/QtdGA0LXQvNC10L3Q -vdCw0Y8g0K7QotC10YHRgjwvcD4NCjx1bCBjbGFzcz0idGFzay1saXN0Ij48bGk+ -0YHQvtC00LXRgNC20LjRgiDQsiDRgdC10LHQtSDRgdGB0YvQu9C60YMg0L3QsCDR -jdC60LfQtdC80L/Qu9GP0YAg0YTRgNC10LnQvNCy0L7RgNC60LAgeFVuaXRGb3Ix -QyAtINC+0LHRitC10LrRgiDQvtCx0YDQsNCx0L7RgtC60LggVW5pdFRlc3RSdW5u -ZXIgDQo8L2xpPjxsaT7RgSDQv9C+0LzQvtGJ0YzRjiDRjdGC0L7QuSDQv9C10YDQ -tdC80LXQvdC90L7QuSDQvNC+0LbQvdC+INC40YHQv9C+0LvRjNC30L7QstCw0YLR -jCDQv9GA0LXQtNC+0L/RgNC10LTQtdC70LXQvdC90YvQtSDQvNC10YLQvtC00Ysg -eFVuaXRGb3IxQy4g0J3QsNC/0YDQuNC80LXRgCwg0YHQvC4gPGEgaHJlZj0iaHR0 -cHM6Ly9naXRodWIuY29tL3hVbml0Rm9yMUMveFVuaXRGb3IxQy93aWtpLyVEMCU5 -QyVEMCVCNSVEMSU4MiVEMCVCRSVEMCVCNCVEMSU4Qi0lRDAlQkYlRDElODAlRDAl -QkUlRDAlQjIlRDAlQjUlRDElODAlRDAlQkElRDAlQjgtJUQxJTgzJUQxJTgyJUQw -JUIyJUQwJUI1JUQxJTgwJUQwJUI2JUQwJUI0JUQwJUI1JUQwJUJEJUQwJUI4JUQx -JThGIj7QnNC10YLQvtC00Ysg0L/RgNC+0LLQtdGA0LrQuC/Rg9GC0LLQtdGA0LbQ -tNC10L3QuNC5PC9hPiANCjwvbGk+PGxpPtC40LzRjyDQrtCi0LXRgdGCINC90LXQ -vtCx0Y/Qt9Cw0YLQtdC70YzQvdC+LCDQvNC+0LbQvdC+INC40YHQv9C+0LvRjNC3 -0L7QstCw0YLRjCDQu9GO0LHQvtC1INC00YDRg9Cz0L7QtSDQuNC80Y8g0L/QtdGA -0LXQvNC10L3QvdC+0LkgDQo8L2xpPjxsaT7Qt9C90LDRh9C10L3QuNC1INGN0YLQ -vtC5INC/0LXRgNC10LzQtdC90L3QvtC5INC00L7Qu9C20L3QviDQsdGL0YLRjCDQ -t9Cw0L/QvtC70L3QtdC90L4g0LIg0LzQtdGC0L7QtNC1INCf0L7Qu9GD0YfQuNGC -0YzQodC/0LjRgdC+0LrQotC10YHRgtC+0LIgPC9saT48L3VsPjwvbGk+PGxpPg0K -PHA+0JzQtdGC0L7QtCDQn9C+0LvRg9GH0LjRgtGM0KHQv9C40YHQvtC60KLQtdGB -0YLQvtCyPC9wPg0KPHVsIGNsYXNzPSJ0YXNrLWxpc3QiPjxsaT7QtNC+0LvQttC1 -0L0g0LLQtdGA0L3Rg9GC0Ywg0LzQsNGB0YHQuNCyINC+0L/QuNGB0LDQvdC40Lkg -0YLQtdGB0YLQvtCy0YvRhSDRgdC70YPRh9Cw0LXQsiANCjwvbGk+PGxpPtC40LzQ -tdC90L3QviDRjdGC0L7RgiDQvNCw0YHRgdC40LIg0Lgg0Y/QstC70Y/QtdGC0YHR -jyDRgdC/0LjRgdC60L7QvCDQstGL0L/QvtC70L3Rj9C10LzRi9GFINGC0LXRgdGC -0L7QsiA8L2xpPjwvdWw+PC9saT48bGk+DQo8cD7QnNC10YLQvtC0INCf0LXRgNC1 -0LTQl9Cw0L/Rg9GB0LrQvtC80KLQtdGB0YLQsDwvcD4NCjx1bCBjbGFzcz0idGFz -ay1saXN0Ij48bGk+0LLRi9C30YvQstCw0LXRgtGB0Y8gPGVtPtC/0LXRgNC10LQg -0LfQsNC/0YPRgdC60L7QvCDQutCw0LbQtNC+0LPQviDRgtC10YHRgtCwPC9lbT4g -PC9saT48L3VsPjwvbGk+PGxpPg0KPHA+0J/QvtGB0LvQtdCX0LDQv9GD0YHQutCw -0KLQtdGB0YLQsDwvcD4NCjx1bCBjbGFzcz0idGFzay1saXN0Ij48bGk+0LLRi9C3 -0YvQstCw0LXRgtGB0Y8gPGVtPtC/0L7RgdC70LUg0LfQsNC/0YPRgdC60LAg0LrQ -sNC20LTQvtCz0L4g0YLQtdGB0YLQsDwvZW0+IA0KPC9saT48bGk+0LzQtdGC0L7Q -tCDQstGL0LfRi9Cy0LDQtdGC0YHRjyDQvdC10LfQsNCy0LjRgdC40LzQviDQvtGC -INGC0L7Qs9C+LCDRg9GB0L/QtdGI0L3QviDQv9GA0L7RiNC10Lsg0YLQtdGB0YIg -0LjQu9C4INGD0L/QsNC7LiA8L2xpPjwvdWw+PC9saT48L3VsPjwvZGl2Pg0KPGgy -PjxhIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYW5jaG9yIiBocmVmPSIjJUQw -JTkxJUQwJUIwJUQwJUI3JUQwJUJFJUQwJUIyJUQxJThCJUQwJUI1LSVEMCVCRiVE -MSU4MCVEMCVCOCVEMCVCNSVEMCVCQyVEMSU4Qi0lRDAlQkQlRDAlQjAlRDAlQkYl -RDAlQjglRDElODElRDAlQjAlRDAlQkQlRDAlQjglRDElOEYtJUQxJTgyJUQwJUI1 -JUQxJTgxJUQxJTgyJUQwJUJFJUQwJUIyIiBuYW1lPSJ1c2VyLWNvbnRlbnQtJUQw -JTkxJUQwJUIwJUQwJUI3JUQwJUJFJUQwJUIyJUQxJThCJUQwJUI1LSVEMCVCRiVE -MSU4MCVEMCVCOCVEMCVCNSVEMCVCQyVEMSU4Qi0lRDAlQkQlRDAlQjAlRDAlQkYl -RDAlQjglRDElODElRDAlQjAlRDAlQkQlRDAlQjglRDElOEYtJUQxJTgyJUQwJUI1 -JUQxJTgxJUQxJTgyJUQwJUJFJUQwJUIyIj48c3BhbiBjbGFzcz0ib2N0aWNvbiBv -Y3RpY29uLWxpbmsiPjwvc3Bhbj48L2E+0JHQsNC30L7QstGL0LUg0L/RgNC40LXQ -vNGLINC90LDQv9C40YHQsNC90LjRjyDRgtC10YHRgtC+0LI8L2gyPg0KPHA+0JTQ -u9GPINCz0LDRgNCw0L3RgtC40YDQvtCy0LDQvdC40Y8g0L3QtdC30LDQstC40YHQ -uNC80L7RgdGC0Lgg0YLQtdGB0YLQvtCyICjRjdGC0L4g0L7QtNC90L4g0LjQtyDQ -vtGB0L3QvtCy0L3Ri9GFINGC0YDQtdCx0L7QstCw0L3QuNC5INC6INGC0LXRgdGC -0LDQvCkg0YDQtdC60L7QvNC10L3QtNGD0LXRgtGB0Y8g0LjRgdC/0L7Qu9GM0LfQ -vtCy0LDRgtGMIDxzdHJvbmc+0LzQtdGF0LDQvdC40LfQvCDRgtGA0LDQvdC30LDQ -utGG0LjQuTwvc3Ryb25nPi48L3A+DQo8cD7Qn9C10YDQtdC0INC30LDQv9GD0YHQ -utC+0Lwg0YLQtdGB0YLQsCDQvdCw0YfQuNC90LDQtdC8INGC0YDQsNC90LfQsNC6 -0YbQuNGOLCDQv9C+0YHQu9C1INCy0YvQv9C+0LvQvdC10L3QuNGPINGC0LXRgdGC -0LAg0YLRgNCw0L3Qt9Cw0LrRhtC40Y8g0L7RgtC80LXQvdGP0LXRgtGB0Y8uINCS -INC40YLQvtCz0LUg0LIg0LHQsNC30LUg0L3QtSDQvtGB0YLQsNC10YLRgdGPINC9 -0LjQutCw0LrQuNGFINGB0LvQtdC00L7QsiDRgtC10YHRgtC40YDQvtCy0LDQvdC4 -0Y8g0Lgg0YLQtdGB0YLRiyDRgNCw0LHQvtGC0LDRjtGCINC90LXQt9Cw0LLQuNGB -0LjQvNC+LjwvcD4NCjxwPtCc0L7QttC90L4g0LjRgdC/0L7Qu9GM0LfQvtCy0LDR -gtGMINGB0LvQtdC00YPRjtGJ0LjQuSDRiNCw0LHQu9C+0L0g0LzQtdGC0L7QtNC+ -0LIg0YLQtdGB0YLQsDwvcD4NCjxkaXYgY2xhc3M9ImhpZ2hsaWdodCBoaWdobGln -aHQtc2giPjxwcmU+0J/RgNC+0YbQtdC00YPRgNCwINCf0LXRgNC10LTQl9Cw0L/R -g9GB0LrQvtC80KLQtdGB0YLQsDxzcGFuIGNsYXNzPSJvIj4oKTwvc3Bhbj4g0K3Q -utGB0L/QvtGA0YINCiAgICDQndCw0YfQsNGC0YzQotGA0LDQvdC30LDQutGG0LjR -jjxzcGFuIGNsYXNzPSJvIj4oKTwvc3Bhbj48c3BhbiBjbGFzcz0icCI+Ozwvc3Bh -bj4NCtCa0L7QvdC10YbQn9GA0L7RhtC10LTRg9GA0YsNCg0K0J/RgNC+0YbQtdC0 -0YPRgNCwINCf0L7RgdC70LXQl9Cw0L/Rg9GB0LrQsNCi0LXRgdGC0LA8c3BhbiBj -bGFzcz0ibyI+KCk8L3NwYW4+INCt0LrRgdC/0L7RgNGCDQogICAg0JXRgdC70Lgg -0KLRgNCw0L3Qt9Cw0LrRhtC40Y/QkNC60YLQuNCy0L3QsDxzcGFuIGNsYXNzPSJv -Ij4oKTwvc3Bhbj4g0KLQvtCz0LTQsA0KICAgICAgICDQntGC0LzQtdC90LjRgtGM -0KLRgNCw0L3Qt9Cw0LrRhtC40Y48c3BhbiBjbGFzcz0ibyI+KCk8L3NwYW4+PHNw -YW4gY2xhc3M9InAiPjs8L3NwYW4+DQogICAg0JrQvtC90LXRhtCV0YHQu9C4PHNw -YW4gY2xhc3M9InAiPjs8L3NwYW4+DQrQmtC+0L3QtdGG0J/RgNC+0YbQtdC00YPR -gNGLDQo8L3ByZT48L2Rpdj4NCjxoMj48YSBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xh -c3M9ImFuY2hvciIgaHJlZj0iIyVEMCU5MSVEMCVCMCVEMCVCNyVEMCVCRSVEMCVC -MiVEMSU4QiVEMCVCOS0lRDElODglRDAlQjAlRDAlQjElRDAlQkIlRDAlQkUlRDAl -QkQtJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCJUQwJUIwLSVEMSU4MiVEMCVCNSVE -MSU4MSVEMSU4MiVEMCVCMCIgbmFtZT0idXNlci1jb250ZW50LSVEMCU5MSVEMCVC -MCVEMCVCNyVEMCVCRSVEMCVCMiVEMSU4QiVEMCVCOS0lRDElODglRDAlQjAlRDAl -QjElRDAlQkIlRDAlQkUlRDAlQkQtJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCJUQw -JUIwLSVEMSU4MiVEMCVCNSVEMSU4MSVEMSU4MiVEMCVCMCI+PHNwYW4gY2xhc3M9 -Im9jdGljb24gb2N0aWNvbi1saW5rIj48L3NwYW4+PC9hPtCR0LDQt9C+0LLRi9C5 -INGI0LDQsdC70L7QvSDRhNCw0LnQu9CwLdGC0LXRgdGC0LA8L2gyPg0KPGRpdiBj -bGFzcz0iaGlnaGxpZ2h0IGhpZ2hsaWdodC1zaCI+PHByZT7Qn9C10YDQtdC8INCu -0KLQtdGB0YI8c3BhbiBjbGFzcz0icCI+Ozwvc3Bhbj4gLy8g0YHRgdGL0LvQutCw -INC90LAg0Y3QutC30LXQvNC/0LvRj9GAINGE0YDQtdC50LzQstC+0YDQutCwIHhV -bml0Rm9yMUMgLSDQvtCx0YrQtdC60YIg0L7QsdGA0LDQsdC+0YLQutC4IFVuaXRU -ZXN0UnVubmVyDQoNCi8vPHNwYW4gY2xhc3M9Im8iPns8L3NwYW4+INC+0YHQvdC+ -0LLQvdCw0Y8g0L/RgNC+0YbQtdC00YPRgNCwINC00LvRjyDRjtC90LjRgi3RgtC1 -0YHRgtC40YDQvtCy0LDQvdC40Y8geFVuaXRGb3IxQw0K0KTRg9C90LrRhtC40Y8g -0J/QvtC70YPRh9C40YLRjNCh0L/QuNGB0L7QutCi0LXRgdGC0L7QsjxzcGFuIGNs -YXNzPSJvIj4oPC9zcGFuPtCu0L3QuNGC0KLQtdGB0YLQuNGA0L7QstCw0L3QuNC1 -PHNwYW4gY2xhc3M9Im8iPik8L3NwYW4+INCt0LrRgdC/0L7RgNGCDQoNCiAgICDQ -rtCi0LXRgdGCIDxzcGFuIGNsYXNzPSJvIj49PC9zcGFuPiDQrtC90LjRgtCi0LXR -gdGC0LjRgNC+0LLQsNC90LjQtTxzcGFuIGNsYXNzPSJwIj47PC9zcGFuPg0KDQog -ICAg0JLRgdC10KLQtdGB0YLRiyA8c3BhbiBjbGFzcz0ibyI+PTwvc3Bhbj4g0J3Q -vtCy0YvQuSDQnNCw0YHRgdC40LI8c3BhbiBjbGFzcz0icCI+Ozwvc3Bhbj4NCg0K -ICAgINCS0YHQtdCi0LXRgdGC0Ysu0JTQvtCx0LDQstC40YLRjDxzcGFuIGNsYXNz -PSJvIj4oPC9zcGFuPjxzcGFuIGNsYXNzPSJzMiI+ItCi0LXRgdGC0JTQvtC70LbQ -tdC9X9Ch0LvQvtC20LjRgtGM0JTQstCw0JjQlNCy0LAiPC9zcGFuPjxzcGFuIGNs -YXNzPSJvIj4pPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj47PC9zcGFuPg0KDQoNCiAg -ICDQktC+0LfQstGA0LDRgiDQktGB0LXQotC10YHRgtGLPHNwYW4gY2xhc3M9InAi -Pjs8L3NwYW4+DQoNCtCa0L7QvdC10YbQpNGD0L3QutGG0LjQuA0KLy88c3BhbiBj -bGFzcz0ibyI+fTwvc3Bhbj4NCg0KLy88c3BhbiBjbGFzcz0ibyI+ezwvc3Bhbj4g -0J7QodCd0J7QktCd0J7QmSDQkdCb0J7Qmg0KDQovLzxzcGFuIGNsYXNzPSJvIj59 -PC9zcGFuPiDQmtCe0J3QldCmINCe0KHQndCe0JLQndCe0JPQniDQkdCb0J7QmtCQ -DQoNCi8vPHNwYW4gY2xhc3M9Im8iPns8L3NwYW4+INCR0JvQntCaINCu0J3QmNCi -LdCi0JXQodCi0J7QkiAtINGB0LDQvNC4INGC0LXRgdGC0YsNCg0K0J/RgNC+0YbQ -tdC00YPRgNCwINCf0LXRgNC10LTQl9Cw0L/Rg9GB0LrQvtC80KLQtdGB0YLQsDxz -cGFuIGNsYXNzPSJvIj4oKTwvc3Bhbj4g0K3QutGB0L/QvtGA0YINCiAgICDQndCw -0YfQsNGC0YzQotGA0LDQvdC30LDQutGG0LjRjjxzcGFuIGNsYXNzPSJvIj4oKTwv -c3Bhbj48c3BhbiBjbGFzcz0icCI+Ozwvc3Bhbj4NCtCa0L7QvdC10YbQn9GA0L7R -htC10LTRg9GA0YsNCg0K0J/RgNC+0YbQtdC00YPRgNCwINCf0L7RgdC70LXQl9Cw -0L/Rg9GB0LrQsNCi0LXRgdGC0LA8c3BhbiBjbGFzcz0ibyI+KCk8L3NwYW4+INCt -0LrRgdC/0L7RgNGCDQogICAg0JXRgdC70Lgg0KLRgNCw0L3Qt9Cw0LrRhtC40Y/Q -kNC60YLQuNCy0L3QsDxzcGFuIGNsYXNzPSJvIj4oKTwvc3Bhbj4g0KLQvtCz0LTQ -sA0KICAgICAgICDQntGC0LzQtdC90LjRgtGM0KLRgNCw0L3Qt9Cw0LrRhtC40Y48 -c3BhbiBjbGFzcz0ibyI+KCk8L3NwYW4+PHNwYW4gY2xhc3M9InAiPjs8L3NwYW4+ -DQogICAg0JrQvtC90LXRhtCV0YHQu9C4PHNwYW4gY2xhc3M9InAiPjs8L3NwYW4+ -DQrQmtC+0L3QtdGG0J/RgNC+0YbQtdC00YPRgNGLDQoNCtCf0YDQvtGG0LXQtNGD -0YDQsCDQotC10YHRgtCU0L7Qu9C20LXQvV/QodC70L7QttC40YLRjNCU0LLQsNCY -0JTQstCwPHNwYW4gY2xhc3M9Im8iPigpPC9zcGFuPiDQrdC60YHQv9C+0YDRgg0K -ICAgINCu0KLQtdGB0YIu0J/RgNC+0LLQtdGA0LjRgtGM0KDQsNCy0LXQvdGB0YLQ -stC+PHNwYW4gY2xhc3M9Im8iPig8L3NwYW4+PHNwYW4gY2xhc3M9Im0iPjI8L3Nw -YW4+ICsgMiwgNCwgPHNwYW4gY2xhc3M9InMyIj4iMiArIDIsIDQiPC9zcGFuPjxz -cGFuIGNsYXNzPSJvIj4pPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj47PC9zcGFuPg0K -0JrQvtC90LXRhtCf0YDQvtGG0LXQtNGD0YDRiw0KDQovLzxzcGFuIGNsYXNzPSJv -Ij59PC9zcGFuPiDQmtCe0J3QldCmINCR0JvQntCa0JAg0K7QndCY0KIt0KLQldCh -0KLQntCSDQo8L3ByZT48L2Rpdj48L2JvZHk+PC9odG1sPg==},0} \ No newline at end of file +MSU4MiVEMCVCRSVEMCVCMiIgbmFtZT0idXNlci1jb250ZW50LSVEMCVBMSVEMCVC +RSVEMCVCNyVEMCVCNCVEMCVCMCVEMCVCRCVEMCVCOCVEMCVCNS0lRDElODQlRDAl +QjAlRDAlQjklRDAlQkIlRDAlQkUlRDAlQjItJUQxJTgyJUQwJUI1JUQxJTgxJUQx +JTgyJUQwJUJFJUQwJUIyIj48c3BhbiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWxp +bmsiPjwvc3Bhbj48L2E+0KHQvtC30LTQsNC90LjQtSDRhNCw0LnQu9C+0LIt0YLQ +tdGB0YLQvtCyPC9oMj4NCjxwIGNsYXNzPSJtYXJrZG93bi1ib2R5Ij7QodC+0LfQ +tNCw0LXQvCDQvdC+0LLRg9GOINCy0L3QtdGI0L3RjtGOINC+0LHRgNCw0LHQvtGC +0LrRgywg0YIu0L0uIDxzdHJvbmc+0YLQtdGB0YLQvtCy0YvQuSDQvdCw0LHQvtGA +PC9zdHJvbmc+PC9wPg0KPHAgY2xhc3M9Im1hcmtkb3duLWJvZHkiPtCSINC80L7Q +tNGD0LvQtSDRjdGC0L7QuSDQvtCx0YDQsNCx0L7RgtC60Lgg0YDQsNC30LzQtdGJ +0LDRjtGC0YHRjyA8c3Ryb25nPtGC0LXRgdGC0L7QstGL0LUg0YHQu9GD0YfQsNC4 +PC9zdHJvbmc+ICjRjdC60YHQv9C+0YDRgtC90YvQtSDQvNC10YLQvtC00Ysg0LHQ +tdC3INC/0LDRgNCw0LzQtdGC0YDQvtCyLCDRh9GM0LUg0LjQvNGPINC90LDRh9C4 +0L3QsNC10YLRgdGPINC90LAg0KLQtdGB0YIpPC9wPg0KPHAgY2xhc3M9Im1hcmtk +b3duLWJvZHkiPtCi0LXRgdGC0L7QstGL0Lkg0YHQu9GD0YfQsNC5INGB0YfQuNGC +0LDQtdGC0YHRjyDRg9GB0L/QtdGI0L3QviDQstGL0L/QvtC70L3QtdC90L3Ri9C8 +LCDQtdGB0LvQuCDQsiDQv9GA0L7RhtC10YHRgdC1INC10LPQviDQstGL0L/QvtC7 +0L3QtdC90LjRjyDQvdC1INCx0YvQu9C+INC40YHQutC70Y7Rh9C10L3QuNGPLjwv +cD4NCjxwIGNsYXNzPSJtYXJrZG93bi1ib2R5Ij7QodC+0L7RgtCy0LXRgtGB0YLQ +stC10L3QvdC+LCDQtNC70Y8g0YLQvtCz0L4sINGH0YLQvtCx0Ysg0YLQtdGB0YIg +0YPQv9Cw0LssINC90YPQttC90L4g0LLRi9Cx0YDQvtGB0LjRgtGMINC40YHQutC7 +0Y7Rh9C10L3QuNC1IDHQoS4g0JTQu9GPINGN0YLQvtCz0L4g0LjRgdC/0L7Qu9GM +0LfRg9GO0YLRgdGPINCy0YvQt9C+0LLRiyDRgdC/0LXRhtC40LDQu9GM0L3Ri9GF +INC80LXRgtC+0LTQvtCyLdGD0YLQstC10YDQttC00LXQvdC40Lkg0LjQtyDRhNGA +0LXQudC80LLQvtGA0LrQsCB4VW5pdEZvcjFDLiDQodC8LiA8YSBocmVmPSJodHRw +czovL2dpdGh1Yi5jb20veFVuaXRGb3IxQy94VW5pdEZvcjFDL3dpa2kvJUQwJTlD +JUQwJUI1JUQxJTgyJUQwJUJFJUQwJUI0JUQxJThCLSVEMCVCRiVEMSU4MCVEMCVC +RSVEMCVCMiVEMCVCNSVEMSU4MCVEMCVCQSVEMCVCOC0lRDElODMlRDElODIlRDAl +QjIlRDAlQjUlRDElODAlRDAlQjYlRDAlQjQlRDAlQjUlRDAlQkQlRDAlQjglRDEl +OEYiPtCc0LXRgtC+0LTRiyDQv9GA0L7QstC10YDQutC4L9GD0YLQstC10YDQttC0 +0LXQvdC40Lk8L2E+PC9wPg0KPGgyIGNsYXNzPSJtYXJrZG93bi1ib2R5Ij48YSBh +cmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImFuY2hvciIgaHJlZj0iIyVEMCU5RiVE +MSU4MCVEMCVCNSVEMCVCNCVEMCVCRSVEMCVCRiVEMSU4MCVEMCVCNSVEMCVCNCVE +MCVCNSVEMCVCQiVEMCVCNSVEMCVCRCVEMCVCRCVEMSU4QiVEMCVCNS0lRDAlQkMl +RDAlQjUlRDElODIlRDAlQkUlRDAlQjQlRDElOEItJUQxJTgyJUQwJUI1JUQxJTgx +JUQxJTgyJUQwJUIwIiBuYW1lPSJ1c2VyLWNvbnRlbnQtJUQwJTlGJUQxJTgwJUQw +JUI1JUQwJUI0JUQwJUJFJUQwJUJGJUQxJTgwJUQwJUI1JUQwJUI0JUQwJUI1JUQw +JUJCJUQwJUI1JUQwJUJEJUQwJUJEJUQxJThCJUQwJUI1LSVEMCVCQyVEMCVCNSVE +MSU4MiVEMCVCRSVEMCVCNCVEMSU4Qi0lRDElODIlRDAlQjUlRDElODElRDElODIl +RDAlQjAiPjxzcGFuIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbGluayI+PC9zcGFu +PjwvYT7Qn9GA0LXQtNC+0L/RgNC10LTQtdC70LXQvdC90YvQtSDQvNC10YLQvtC0 +0Ysg0YLQtdGB0YLQsDwvaDI+DQo8ZGl2IGNsYXNzPSJtYXJrZG93bi1ib2R5Ij4N +Cjx1bCBjbGFzcz0idGFzay1saXN0Ij48bGk+DQo8cD7Qn9C10YDQtdC80LXQvdC9 +0LDRjyDQrtCi0LXRgdGCPC9wPg0KPHVsIGNsYXNzPSJ0YXNrLWxpc3QiPjxsaT7R +gdC+0LTQtdGA0LbQuNGCINCyINGB0LXQsdC1INGB0YHRi9C70LrRgyDQvdCwINGN +0LrQt9C10LzQv9C70Y/RgCDRhNGA0LXQudC80LLQvtGA0LrQsCB4VW5pdEZvcjFD +IC0g0L7QsdGK0LXQutGCINC+0LHRgNCw0LHQvtGC0LrQuCBVbml0VGVzdFJ1bm5l +ciANCjwvbGk+PGxpPtGBINC/0L7QvNC+0YnRjNGOINGN0YLQvtC5INC/0LXRgNC1 +0LzQtdC90L3QvtC5INC80L7QttC90L4g0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGM +INC/0YDQtdC00L7Qv9GA0LXQtNC10LvQtdC90L3Ri9C1INC80LXRgtC+0LTRiyB4 +VW5pdEZvcjFDLiDQndCw0L/RgNC40LzQtdGALCDRgdC8LiA8YSBocmVmPSJodHRw +czovL2dpdGh1Yi5jb20veFVuaXRGb3IxQy94VW5pdEZvcjFDL3dpa2kvJUQwJTlD +JUQwJUI1JUQxJTgyJUQwJUJFJUQwJUI0JUQxJThCLSVEMCVCRiVEMSU4MCVEMCVC +RSVEMCVCMiVEMCVCNSVEMSU4MCVEMCVCQSVEMCVCOC0lRDElODMlRDElODIlRDAl +QjIlRDAlQjUlRDElODAlRDAlQjYlRDAlQjQlRDAlQjUlRDAlQkQlRDAlQjglRDEl +OEYiPtCc0LXRgtC+0LTRiyDQv9GA0L7QstC10YDQutC4L9GD0YLQstC10YDQttC0 +0LXQvdC40Lk8L2E+IA0KPC9saT48bGk+0LjQvNGPINCu0KLQtdGB0YIg0L3QtdC+ +0LHRj9C30LDRgtC10LvRjNC90L4sINC80L7QttC90L4g0LjRgdC/0L7Qu9GM0LfQ +vtCy0LDRgtGMINC70Y7QsdC+0LUg0LTRgNGD0LPQvtC1INC40LzRjyDQv9C10YDQ +tdC80LXQvdC90L7QuSANCjwvbGk+PGxpPtC30L3QsNGH0LXQvdC40LUg0Y3RgtC+ +0Lkg0L/QtdGA0LXQvNC10L3QvdC+0Lkg0LTQvtC70LbQvdC+INCx0YvRgtGMINC3 +0LDQv9C+0LvQvdC10L3QviDQsiDQvNC10YLQvtC00LUg0J/QvtC70YPRh9C40YLR +jNCh0L/QuNGB0L7QutCi0LXRgdGC0L7QsiA8L2xpPjwvdWw+PC9saT48bGk+DQo8 +cD7QnNC10YLQvtC0INCf0L7Qu9GD0YfQuNGC0YzQodC/0LjRgdC+0LrQotC10YHR +gtC+0LI8L3A+DQo8dWwgY2xhc3M9InRhc2stbGlzdCI+PGxpPtC00L7Qu9C20LXQ +vSDQstC10YDQvdGD0YLRjCDQvNCw0YHRgdC40LIg0L7Qv9C40YHQsNC90LjQuSDR +gtC10YHRgtC+0LLRi9GFINGB0LvRg9GH0LDQtdCyIA0KPC9saT48bGk+0LjQvNC1 +0L3QvdC+INGN0YLQvtGCINC80LDRgdGB0LjQsiDQuCDRj9Cy0LvRj9C10YLRgdGP +INGB0L/QuNGB0LrQvtC8INCy0YvQv9C+0LvQvdGP0LXQvNGL0YUg0YLQtdGB0YLQ +vtCyIDwvbGk+PC91bD48L2xpPjxsaT4NCjxwPtCc0LXRgtC+0LQg0J/QtdGA0LXQ +tNCX0LDQv9GD0YHQutC+0LzQotC10YHRgtCwPC9wPg0KPHVsIGNsYXNzPSJ0YXNr +LWxpc3QiPjxsaT7QstGL0LfRi9Cy0LDQtdGC0YHRjyA8ZW0+0L/QtdGA0LXQtCDQ +t9Cw0L/Rg9GB0LrQvtC8INC60LDQttC00L7Qs9C+INGC0LXRgdGC0LA8L2VtPiA8 +L2xpPjwvdWw+PC9saT48bGk+DQo8cD7Qn9C+0YHQu9C10JfQsNC/0YPRgdC60LDQ +otC10YHRgtCwPC9wPg0KPHVsIGNsYXNzPSJ0YXNrLWxpc3QiPjxsaT7QstGL0LfR +i9Cy0LDQtdGC0YHRjyA8ZW0+0L/QvtGB0LvQtSDQt9Cw0L/Rg9GB0LrQsCDQutCw +0LbQtNC+0LPQviDRgtC10YHRgtCwPC9lbT4gDQo8L2xpPjxsaT7QvNC10YLQvtC0 +INCy0YvQt9GL0LLQsNC10YLRgdGPINC90LXQt9Cw0LLQuNGB0LjQvNC+INC+0YIg +0YLQvtCz0L4sINGD0YHQv9C10YjQvdC+INC/0YDQvtGI0LXQuyDRgtC10YHRgiDQ +uNC70Lgg0YPQv9Cw0LsuIDwvbGk+PC91bD48L2xpPjwvdWw+PC9kaXY+DQo8aDI+ +PGEgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJhbmNob3IiIGhyZWY9IiMlRDAl +OTElRDAlQjAlRDAlQjclRDAlQkUlRDAlQjIlRDElOEIlRDAlQjUtJUQwJUJGJUQx +JTgwJUQwJUI4JUQwJUI1JUQwJUJDJUQxJThCLSVEMCVCRCVEMCVCMCVEMCVCRiVE +MCVCOCVEMSU4MSVEMCVCMCVEMCVCRCVEMCVCOCVEMSU4Ri0lRDElODIlRDAlQjUl +RDElODElRDElODIlRDAlQkUlRDAlQjIiIG5hbWU9InVzZXItY29udGVudC0lRDAl +OTElRDAlQjAlRDAlQjclRDAlQkUlRDAlQjIlRDElOEIlRDAlQjUtJUQwJUJGJUQx +JTgwJUQwJUI4JUQwJUI1JUQwJUJDJUQxJThCLSVEMCVCRCVEMCVCMCVEMCVCRiVE +MCVCOCVEMSU4MSVEMCVCMCVEMCVCRCVEMCVCOCVEMSU4Ri0lRDElODIlRDAlQjUl +RDElODElRDElODIlRDAlQkUlRDAlQjIiPjxzcGFuIGNsYXNzPSJvY3RpY29uIG9j +dGljb24tbGluayI+PC9zcGFuPjwvYT7QkdCw0LfQvtCy0YvQtSDQv9GA0LjQtdC8 +0Ysg0L3QsNC/0LjRgdCw0L3QuNGPINGC0LXRgdGC0L7QsjwvaDI+DQo8cD7QlNC7 +0Y8g0LPQsNGA0LDQvdGC0LjRgNC+0LLQsNC90LjRjyDQvdC10LfQsNCy0LjRgdC4 +0LzQvtGB0YLQuCDRgtC10YHRgtC+0LIgKNGN0YLQviDQvtC00L3QviDQuNC3INC+ +0YHQvdC+0LLQvdGL0YUg0YLRgNC10LHQvtCy0LDQvdC40Lkg0Log0YLQtdGB0YLQ +sNC8KSDRgNC10LrQvtC80LXQvdC00YPQtdGC0YHRjyDQuNGB0L/QvtC70YzQt9C+ +0LLQsNGC0YwgPHN0cm9uZz7QvNC10YXQsNC90LjQt9C8INGC0YDQsNC90LfQsNC6 +0YbQuNC5PC9zdHJvbmc+LjwvcD4NCjxwPtCf0LXRgNC10LQg0LfQsNC/0YPRgdC6 +0L7QvCDRgtC10YHRgtCwINC90LDRh9C40L3QsNC10Lwg0YLRgNCw0L3Qt9Cw0LrR +htC40Y4sINC/0L7RgdC70LUg0LLRi9C/0L7Qu9C90LXQvdC40Y8g0YLQtdGB0YLQ +sCDRgtGA0LDQvdC30LDQutGG0LjRjyDQvtGC0LzQtdC90Y/QtdGC0YHRjy4g0JIg +0LjRgtC+0LPQtSDQsiDQsdCw0LfQtSDQvdC1INC+0YHRgtCw0LXRgtGB0Y8g0L3Q +uNC60LDQutC40YUg0YHQu9C10LTQvtCyINGC0LXRgdGC0LjRgNC+0LLQsNC90LjR +jyDQuCDRgtC10YHRgtGLINGA0LDQsdC+0YLQsNGO0YIg0L3QtdC30LDQstC40YHQ +uNC80L4uPC9wPg0KPHA+0JzQvtC20L3QviDQuNGB0L/QvtC70YzQt9C+0LLQsNGC +0Ywg0YHQu9C10LTRg9GO0YnQuNC5INGI0LDQsdC70L7QvSDQvNC10YLQvtC00L7Q +siDRgtC10YHRgtCwPC9wPg0KPGRpdiBjbGFzcz0iaGlnaGxpZ2h0IGhpZ2hsaWdo +dC1zaCI+PHByZT7Qn9GA0L7RhtC10LTRg9GA0LAg0J/QtdGA0LXQtNCX0LDQv9GD +0YHQutC+0LzQotC10YHRgtCwPHNwYW4gY2xhc3M9Im8iPigpPC9zcGFuPiDQrdC6 +0YHQv9C+0YDRgg0KICAgINCd0LDRh9Cw0YLRjNCi0YDQsNC90LfQsNC60YbQuNGO +PHNwYW4gY2xhc3M9Im8iPigpPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj47PC9zcGFu +Pg0K0JrQvtC90LXRhtCf0YDQvtGG0LXQtNGD0YDRiw0KDQrQn9GA0L7RhtC10LTR +g9GA0LAg0J/QvtGB0LvQtdCX0LDQv9GD0YHQutCw0KLQtdGB0YLQsDxzcGFuIGNs +YXNzPSJvIj4oKTwvc3Bhbj4g0K3QutGB0L/QvtGA0YINCiAgICDQldGB0LvQuCDQ +otGA0LDQvdC30LDQutGG0LjRj9CQ0LrRgtC40LLQvdCwPHNwYW4gY2xhc3M9Im8i +PigpPC9zcGFuPiDQotC+0LPQtNCwDQogICAgICAgINCe0YLQvNC10L3QuNGC0YzQ +otGA0LDQvdC30LDQutGG0LjRjjxzcGFuIGNsYXNzPSJvIj4oKTwvc3Bhbj48c3Bh +biBjbGFzcz0icCI+Ozwvc3Bhbj4NCiAgICDQmtC+0L3QtdGG0JXRgdC70Lg8c3Bh +biBjbGFzcz0icCI+Ozwvc3Bhbj4NCtCa0L7QvdC10YbQn9GA0L7RhtC10LTRg9GA +0YsNCjwvcHJlPjwvZGl2Pg0KPGgyPjxhIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFz +cz0iYW5jaG9yIiBocmVmPSIjJUQwJTkxJUQwJUIwJUQwJUI3JUQwJUJFJUQwJUIy +JUQxJThCJUQwJUI5LSVEMSU4OCVEMCVCMCVEMCVCMSVEMCVCQiVEMCVCRSVEMCVC +RC0lRDElODQlRDAlQjAlRDAlQjklRDAlQkIlRDAlQjAtJUQxJTgyJUQwJUI1JUQx +JTgxJUQxJTgyJUQwJUIwIiBuYW1lPSJ1c2VyLWNvbnRlbnQtJUQwJTkxJUQwJUIw +JUQwJUI3JUQwJUJFJUQwJUIyJUQxJThCJUQwJUI5LSVEMSU4OCVEMCVCMCVEMCVC +MSVEMCVCQiVEMCVCRSVEMCVCRC0lRDElODQlRDAlQjAlRDAlQjklRDAlQkIlRDAl +QjAtJUQxJTgyJUQwJUI1JUQxJTgxJUQxJTgyJUQwJUIwIj48c3BhbiBjbGFzcz0i +b2N0aWNvbiBvY3RpY29uLWxpbmsiPjwvc3Bhbj48L2E+0JHQsNC30L7QstGL0Lkg +0YjQsNCx0LvQvtC9INGE0LDQudC70LAt0YLQtdGB0YLQsDwvaDI+DQo8ZGl2IGNs +YXNzPSJoaWdobGlnaHQgaGlnaGxpZ2h0LXNoIj48cHJlPtCf0LXRgNC10Lwg0K7Q +otC10YHRgjxzcGFuIGNsYXNzPSJwIj47PC9zcGFuPiAvLyDRgdGB0YvQu9C60LAg +0L3QsCDRjdC60LfQtdC80L/Qu9GP0YAg0YTRgNC10LnQvNCy0L7RgNC60LAgeFVu +aXRGb3IxQyAtINC+0LHRitC10LrRgiDQvtCx0YDQsNCx0L7RgtC60LggVW5pdFRl +c3RSdW5uZXINCg0KLy88c3BhbiBjbGFzcz0ibyI+ezwvc3Bhbj4g0L7RgdC90L7Q +stC90LDRjyDQv9GA0L7RhtC10LTRg9GA0LAg0LTQu9GPINGO0L3QuNGCLdGC0LXR +gdGC0LjRgNC+0LLQsNC90LjRjyB4VW5pdEZvcjFDDQrQpNGD0L3QutGG0LjRjyDQ +n9C+0LvRg9GH0LjRgtGM0KHQv9C40YHQvtC60KLQtdGB0YLQvtCyPHNwYW4gY2xh +c3M9Im8iPig8L3NwYW4+0K7QvdC40YLQotC10YHRgtC40YDQvtCy0LDQvdC40LU8 +c3BhbiBjbGFzcz0ibyI+KTwvc3Bhbj4g0K3QutGB0L/QvtGA0YINCg0KICAgINCu +0KLQtdGB0YIgPHNwYW4gY2xhc3M9Im8iPj08L3NwYW4+INCu0L3QuNGC0KLQtdGB +0YLQuNGA0L7QstCw0L3QuNC1PHNwYW4gY2xhc3M9InAiPjs8L3NwYW4+DQoNCiAg +ICDQktGB0LXQotC10YHRgtGLIDxzcGFuIGNsYXNzPSJvIj49PC9zcGFuPiDQndC+ +0LLRi9C5INCc0LDRgdGB0LjQsjxzcGFuIGNsYXNzPSJwIj47PC9zcGFuPg0KDQog +ICAg0JLRgdC10KLQtdGB0YLRiy7QlNC+0LHQsNCy0LjRgtGMPHNwYW4gY2xhc3M9 +Im8iPig8L3NwYW4+PHNwYW4gY2xhc3M9InMyIj4i0KLQtdGB0YLQlNC+0LvQttC1 +0L1f0KHQu9C+0LbQuNGC0YzQlNCy0LDQmNCU0LLQsCI8L3NwYW4+PHNwYW4gY2xh +c3M9Im8iPik8L3NwYW4+PHNwYW4gY2xhc3M9InAiPjs8L3NwYW4+DQoNCg0KICAg +INCS0L7Qt9Cy0YDQsNGCINCS0YHQtdCi0LXRgdGC0Ys8c3BhbiBjbGFzcz0icCI+ +Ozwvc3Bhbj4NCg0K0JrQvtC90LXRhtCk0YPQvdC60YbQuNC4DQovLzxzcGFuIGNs +YXNzPSJvIj59PC9zcGFuPg0KDQovLzxzcGFuIGNsYXNzPSJvIj57PC9zcGFuPiDQ +ntCh0J3QntCS0J3QntCZINCR0JvQntCaDQoNCi8vPHNwYW4gY2xhc3M9Im8iPn08 +L3NwYW4+INCa0J7QndCV0KYg0J7QodCd0J7QktCd0J7Qk9CeINCR0JvQntCa0JAN +Cg0KLy88c3BhbiBjbGFzcz0ibyI+ezwvc3Bhbj4g0JHQm9Ce0Jog0K7QndCY0KIt +0KLQldCh0KLQntCSIC0g0YHQsNC80Lgg0YLQtdGB0YLRiw0KDQrQn9GA0L7RhtC1 +0LTRg9GA0LAg0J/QtdGA0LXQtNCX0LDQv9GD0YHQutC+0LzQotC10YHRgtCwPHNw +YW4gY2xhc3M9Im8iPigpPC9zcGFuPiDQrdC60YHQv9C+0YDRgg0KICAgINCd0LDR +h9Cw0YLRjNCi0YDQsNC90LfQsNC60YbQuNGOPHNwYW4gY2xhc3M9Im8iPigpPC9z +cGFuPjxzcGFuIGNsYXNzPSJwIj47PC9zcGFuPg0K0JrQvtC90LXRhtCf0YDQvtGG +0LXQtNGD0YDRiw0KDQrQn9GA0L7RhtC10LTRg9GA0LAg0J/QvtGB0LvQtdCX0LDQ +v9GD0YHQutCw0KLQtdGB0YLQsDxzcGFuIGNsYXNzPSJvIj4oKTwvc3Bhbj4g0K3Q +utGB0L/QvtGA0YINCiAgICDQldGB0LvQuCDQotGA0LDQvdC30LDQutGG0LjRj9CQ +0LrRgtC40LLQvdCwPHNwYW4gY2xhc3M9Im8iPigpPC9zcGFuPiDQotC+0LPQtNCw +DQogICAgICAgINCe0YLQvNC10L3QuNGC0YzQotGA0LDQvdC30LDQutGG0LjRjjxz +cGFuIGNsYXNzPSJvIj4oKTwvc3Bhbj48c3BhbiBjbGFzcz0icCI+Ozwvc3Bhbj4N +CiAgICDQmtC+0L3QtdGG0JXRgdC70Lg8c3BhbiBjbGFzcz0icCI+Ozwvc3Bhbj4N +CtCa0L7QvdC10YbQn9GA0L7RhtC10LTRg9GA0YsNCg0K0J/RgNC+0YbQtdC00YPR +gNCwINCi0LXRgdGC0JTQvtC70LbQtdC9X9Ch0LvQvtC20LjRgtGM0JTQstCw0JjQ +lNCy0LA8c3BhbiBjbGFzcz0ibyI+KCk8L3NwYW4+INCt0LrRgdC/0L7RgNGCDQog +ICAg0K7QotC10YHRgi7Qn9GA0L7QstC10YDQuNGC0YzQoNCw0LLQtdC90YHRgtCy +0L48c3BhbiBjbGFzcz0ibyI+KDwvc3Bhbj48c3BhbiBjbGFzcz0ibSI+Mjwvc3Bh +bj4gKyAyLCA0LCA8c3BhbiBjbGFzcz0iczIiPiIyICsgMiwgNCI8L3NwYW4+PHNw +YW4gY2xhc3M9Im8iPik8L3NwYW4+PHNwYW4gY2xhc3M9InAiPjs8L3NwYW4+DQrQ +mtC+0L3QtdGG0J/RgNC+0YbQtdC00YPRgNGLDQoNCi8vPHNwYW4gY2xhc3M9Im8i +Pn08L3NwYW4+INCa0J7QndCV0KYg0JHQm9Ce0JrQkCDQrtCd0JjQoi3QotCV0KHQ +otCe0JINCjwvcHJlPjwvZGl2PjwvYm9keT48L2h0bWw+},0} \ No newline at end of file diff --git a/src/xddTestRunner/und/5070e3c3-f74b-4ecd-9756-1136a230eca2 b/src/xddTestRunner/und/5070e3c3-f74b-4ecd-9756-1136a230eca2 index 87d8675d..1a1a3bbb 100644 --- a/src/xddTestRunner/und/5070e3c3-f74b-4ecd-9756-1136a230eca2 +++ b/src/xddTestRunner/und/5070e3c3-f74b-4ecd-9756-1136a230eca2 @@ -11,7 +11,7 @@ {2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, {3daea016-69b7-4ed4-9453-127911372fe6,0}, {d5b0e5ed-256d-401c-9c36-f630cafd8a62,2,a1ce7ef7-f372-4589-b899-7fbf88efa7bf,ed07b230-8bf7-4423-b861-a31f23c7471f}, -{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,9, +{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,13, { {0, {25, @@ -182,6 +182,90 @@ {0,0},0, {0}, {"S",""},0} +},0}, +{ +{0, +{25, +{2, +{0, +{0,0,e554f66d-117f-465a-adf3-0247ca468be3},"ЭтоВстроеннаяОбработка", +{1,"ru","Это встроенная обработка"},""}, +{"Pattern", +{"B"} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0} +},0}, +{ +{0, +{25, +{2, +{0, +{0,0,25c6bd62-5cc5-41a3-b726-eaa6f64ed54a},"ИспользуемыйПрефиксПодсистемы", +{1,"ru","Используемый префикс подсистемы"},"Префикс для объектов, встроенных в состав конфигурации. Если браузер тестов, плагины и утилиты встроены в конфигурцаию, то они должны иметь один префикс."}, +{"Pattern", +{"S",10,1} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0} +},0}, +{ +{0, +{25, +{2, +{0, +{0,0,661aabb5-acfd-4925-b0d1-ca22e2481a9b},"ПолноеИмяБраузераТестов", +{1,"ru","Полное имя браузера тестов"},""}, +{"Pattern", +{"S",512,1} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0} +},0}, +{ +{0, +{25, +{2, +{0, +{0,0,459571ca-47ca-4c56-ad46-8ea05b580771},"ПолныйПутьКФайлуБраузераТестов", +{1,"ru","Полный путь к файлу браузера тестов"},""}, +{"Pattern", +{"S"} +} +},0, +{0}, +{0},0,"",0, +{"U"}, +{"U"},0,00000000-0000-0000-0000-000000000000,2,0, +{5004,0}, +{3,0,0}, +{0,0},0, +{0}, +{"S",""},0} },0} } } diff --git a/src/xddTestRunner/und/ed07b230-8bf7-4423-b861-a31f23c7471f.0 b/src/xddTestRunner/und/ed07b230-8bf7-4423-b861-a31f23c7471f.0 index 081468db..81955dca 100644 --- a/src/xddTestRunner/und/ed07b230-8bf7-4423-b861-a31f23c7471f.0 +++ b/src/xddTestRunner/und/ed07b230-8bf7-4423-b861-a31f23c7471f.0 @@ -400,7 +400,7 @@ mam9GBrFhUODvdLr6e3HWk6+w5qhvEgBKvO9i8RNJZOZbt2wavZXrx5516k1ryzW {6, {3,0, {0},"",-1,-1,1,0}, -{0},2,3},3,a9f3b1ac-f51b-431e-b102-55a69acdecad, +{0},2,3},4,a9f3b1ac-f51b-431e-b102-55a69acdecad, {19, {71,02023637-7868-4a5f-8576-835a76e0c9ba},0,1, {0, @@ -469,6 +469,29 @@ mam9GBrFhUODvdLr6e3HWk6+w5qhvEgBKvO9i8RNJZOZbt2wavZXrx5516k1ryzW {0,0,0},0, {3,0, {0},"",-1,-1,1,0},1, +{"Pattern"},"",2},a9f3b1ac-f51b-431e-b102-55a69acdecad, +{19, +{431,02023637-7868-4a5f-8576-835a76e0c9ba},0,1, +{0, +{0, +{"B",1},0} +},0,"ФормаПреобразоватьЖурналДействийПользователяВТест", +{1,0},1, +{6,409b9a53-7f7e-4178-86c1-33176c7c7a7a}, +{0},3,0,0,0,2,2,0,0,0, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{6,3,0,1}, +{0,0,0},0, +{3,0, +{0},"",-1,-1,1,0},1, {"Pattern"},"",2},1},a9f3b1ac-f51b-431e-b102-55a69acdecad, {19, {137,02023637-7868-4a5f-8576-835a76e0c9ba},0,1, @@ -547,67 +570,67 @@ mam9GBrFhUODvdLr6e3HWk6+w5qhvEgBKvO9i8RNJZOZbt2wavZXrx5516k1ryzW {1,0}, {1, {2} -},0,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,2,2,1,1,0,0,0,1,2,2,0,1,1, +},0,1,1,0,0,0,0,0,0,3,0,0,1,1,1,1,0,1,2,2,1,1,0,0,0,1,2,2,0,1,1, {1, {6} }, {3,3, {0},"",-1,-1,0, { -{#base64:iVBORw0KGgoAAAANSUhEUgAAAHAAAAAQCAYAAADOFPsRAAAACXBIWXMAAA7EAAAO -xAGVKw4bAAAAB3RJTUUH3wkIDgYGUr9hfQAAAAd0RVh0QXV0aG9yAKmuzEgAAAAM -dEVYdERlc2NyaXB0aW9uABMJISMAAAAKdEVYdENvcHlyaWdodACsD8w6AAAADnRF -WHRDcmVhdGlvbiB0aW1lADX3DwkAAAAJdEVYdFNvZnR3YXJlAF1w/zoAAAALdEVY -dERpc2NsYWltZXIAt8C0jwAAAAh0RVh0V2FybmluZwDAG+aHAAAAB3RFWHRTb3Vy -Y2UA9f+D6wAAAAh0RVh0Q29tbWVudAD2zJa/AAAABnRFWHRUaXRsZQCo7tInAAAI -zUlEQVRYhe2Yf1BVZRrHP++558pBsCCoxRW3IdEk0rqU/WBHiUJzGq9ZrmlqjEZr -aq6zme0sTrobVvxhbtaqoWnZFmntbpk40+IUVow46ySIRjpo4g8MkptcucI93HvO -efePy0XuBS7hyuw/+8y8c87zPuf7vuec73me9/seIaVkoC3fmT7qwTnzikqLty0s -LKmpHah5ass/lXUHSmlqOo/nUgstbg93Tckle9YiMVBz/q9NHegJ8p3poyY9nlt0 -38OZ2S1NtUX5zvQBI/FExW4emPEkFy80cbH5J5oazlH6901kz1oUEbfhnQ9k8ZFm -9PaAr9k0dFPvjPfkT3fAc/PzxNXAv7mrvN9ZtGjqeAGgHtmUs9MyfA9LywRAKDaE -TT0ydmHZ2P4OGm75zvRRObNmFmU/cmuW1V7HlJmpWdfE2weMxGHp97Bnx1t8f/IU -3rZW9HYf46c/1SfuaH0DKQL0KB1NaOjSjWbX0GXvfl1j3FXDHzvVyOtLZ2BaVp/3 -alMUHl28gkVTxwOgWobv4dsWvgN+o+MKG5XrZ4+peiNTChFeeQRCUVDUQcfGPP15 -WqSJ8p3po3Jmziy6f9q4LLP1OyEvHbZk9E1iwuTrshDjeySxtXSn9OcvASCusr7f -Za81OZOSSi+bt7wtFhSsl/OmPkDm7Wl9jpOZ4WD2Q/f3a64XXl171fBBW/z21/zY -EsjUaLtK8TN9j6lKywJ/O77aNUgpsA+bTsbC90HpeG4hAg1AAKpK9cbc0d9unnTH -rQv2HAwfUAghgZUT7nGs5lBN8b5DO5UVS8dapv+MUFWfRE1Rfj15SLa/dXQ3Er2F -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 -WhMgEG/VAAAAAElFTkSuQmCC} +{#base64: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} },0}, {3,4, {0} @@ -1173,8 +1196,13 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОбъектНаСервере = РеквизитФормыВЗначение(""Объект""); + ЭтаФорма.Заголовок = ОбъектНаСервере.ЗаголовокФормы(); - ИспользуемоеИмяФайла = ОбъектНаСервере.ИспользуемоеИмяФайла; + + Если НЕ Объект.ЭтоВстроеннаяОбработка Тогда // Используемое имя файла меняется в зависимости от того + // встроена обработка в конфигурацию или нет + ИспользуемоеИмяФайла = ОбъектНаСервере.ИспользуемоеИмяФайла; + КонецЕсли; ОбновитьКомандыИсторииЗагрузкиТестов(); КонецПроцедуры @@ -1195,7 +1223,12 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs &НаКлиенте Процедура ПриЗакрытии() - ПриЗакрытииНаСервере(); + + // Для пакетного запуска нет смысла вызывать это событие, + Если НЕ ЭтоПакетныйЗапуск Тогда + ПриЗакрытииНаСервере(); + КонецЕсли; + КонецПроцедуры &НаСервере @@ -1268,13 +1301,18 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs Процедура КомандаПерезагрузитьФорму(Команда) Закрыть(); - АдресХранилища = """"; - ПоместитьФайл(АдресХранилища, ЭтаФорма.ИспользуемоеИмяФайла, , Ложь); - ПодключитьФайлОбработкиНаСервере(АдресХранилища, Неопределено); + Если Объект.ЭтоВстроеннаяОбработка Тогда // Для встроенной в конф. обработки открываем форму + ОткрытьФорму(ЭтаФорма.ИмяФормы); + Иначе + АдресХранилища = """"; + ПоместитьФайл(АдресХранилища, ЭтаФорма.ИспользуемоеИмяФайла, , Ложь); + ПодключитьФайлОбработкиНаСервере(АдресХранилища, Неопределено); + + НоваяФорма = ПолучитьФорму(ЭтаФорма.ИмяФормы,,,Истина); + НоваяФорма.ИспользуемоеИмяФайла = ЭтаФорма.ИспользуемоеИмяФайла; + НоваяФорма.Открыть(); + КонецЕсли; - НоваяФорма = ПолучитьФорму(ЭтаФорма.ИмяФормы,,,Истина); - НоваяФорма.ИспользуемоеИмяФайла = ЭтаФорма.ИспользуемоеИмяФайла; - НоваяФорма.Открыть(); КонецПроцедуры &НаКлиенте @@ -1305,6 +1343,11 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs Процедура КонвертерТестов(Команда) ОткрытьИнструмент(""xddTestsConvertIntoRebornFormat""); КонецПроцедуры + +&НаКлиенте +Процедура ПреобразоватьЖурналДействийПользователяВТест(Команда) + ОткрытьИнструмент(""UILogToScript""); +КонецПроцедуры // } Управляющие воздействия пользователя // { Плагины @@ -1313,36 +1356,45 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs Объект.Плагины = Новый Структура; КэшФормПлагинов = Новый Структура; - КаталогПлагинов = ПолучитьПутьКПлагинам(); - НайденныеФайлы = НайтиФайлы(КаталогПлагинов, ""*.epf"", Ложь); - ПомещаемыеФайлы = Новый Массив; - ИдентификаторыПлагинов = Новый Соответствие; - Для каждого ФайлОбработки Из НайденныеФайлы Цикл + // Для встроенного в состав конфигурации браузера тестов + // плагины также загружаем из встроенных обработок + Если Объект.ЭтоВстроеннаяОбработка Тогда + ЗагрузитьВстроенныеПлагины(); + Для Каждого Плагин Из Объект.Плагины Цикл + КэшФормПлагинов.Вставить(Плагин.Ключ, Истина); + КонецЦикла; + Иначе + КаталогПлагинов = ПолучитьПутьКПлагинам(); + НайденныеФайлы = НайтиФайлы(КаталогПлагинов, ""*.epf"", Ложь); + ПомещаемыеФайлы = Новый Массив; + ИдентификаторыПлагинов = Новый Соответствие; + Для каждого ФайлОбработки Из НайденныеФайлы Цикл + + ПомещаемыйФайл = Новый ОписаниеПередаваемогоФайла(ФайлОбработки.ПолноеИмя); + ПомещаемыеФайлы.Добавить(ПомещаемыйФайл); + + ИмяПлагина = ФайлОбработки.ИмяБезРасширения; + ИдентификаторыПлагинов.Вставить(ФайлОбработки.ПолноеИмя, ИмяПлагина); + + КонецЦикла; - ПомещаемыйФайл = Новый ОписаниеПередаваемогоФайла(ФайлОбработки.ПолноеИмя); - ПомещаемыеФайлы.Добавить(ПомещаемыйФайл); + ЗагруженныеФайлы = Новый Массив; + Если ПомещаемыеФайлы.Количество() Тогда + ПоместитьФайлы(ПомещаемыеФайлы, ЗагруженныеФайлы,,Ложь, ЭтаФорма.УникальныйИдентификатор); + КонецЕсли; - ИмяПлагина = ФайлОбработки.ИмяБезРасширения; - ИдентификаторыПлагинов.Вставить(ФайлОбработки.ПолноеИмя, ИмяПлагина); + ОписанияПлагинов = ПодключитьПлагиныНаСервере(ЗагруженныеФайлы); - КонецЦикла; - - ЗагруженныеФайлы = Новый Массив; - Если ПомещаемыеФайлы.Количество() Тогда - ПоместитьФайлы(ПомещаемыеФайлы, ЗагруженныеФайлы,,Ложь, ЭтаФорма.УникальныйИдентификатор); + Для Каждого ЗагруженныйФайл Из ЗагруженныеФайлы Цикл + ИмяПлагина = ИдентификаторыПлагинов[ЗагруженныйФайл.Имя]; + + ОписаниеПлагина = ОписанияПлагинов[ЗагруженныйФайл.Имя]; + Объект.Плагины.Вставить(ОписаниеПлагина.Идентификатор, ИмяПлагина); + КэшФормПлагинов.Вставить(ОписаниеПлагина.Идентификатор, Истина); + + КонецЦикла; КонецЕсли; - - ОписанияПлагинов = ПодключитьПлагиныНаСервере(ЗагруженныеФайлы); - - Для Каждого ЗагруженныйФайл Из ЗагруженныеФайлы Цикл - ИмяПлагина = ИдентификаторыПлагинов[ЗагруженныйФайл.Имя]; - - ОписаниеПлагина = ОписанияПлагинов[ЗагруженныйФайл.Имя]; - Объект.Плагины.Вставить(ОписаниеПлагина.Идентификатор, ИмяПлагина); - КэшФормПлагинов.Вставить(ОписаниеПлагина.Идентификатор, Истина); - КонецЦикла; - ДобавитьКомандыЗагрузчиковНаФорме(); КонецПроцедуры @@ -1381,15 +1433,24 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs &НаКлиенте Функция Плагин(Знач Идентификатор) Экспорт - ОбъектПлагин = КэшФормПлагинов[Идентификатор]; + ОбъектПлагин = Неопределено; + ИдентификаторБезПрефиксовПодсистемы = ПолучитьИдентификаторБезПрефиксаПодсистемы(Идентификатор, Объект.ИспользуемыйПрефиксПодсистемы); + Если КэшФормПлагинов.Свойство(ИдентификаторБезПрефиксовПодсистемы) Тогда + ОбъектПлагин = КэшФормПлагинов[ИдентификаторБезПрефиксовПодсистемы]; + КонецЕсли; + Если ОбъектПлагин = Неопределено Тогда ВызватьИсключение НСтр(""ru = 'Неизвестный идентификатор плагина: <""+Идентификатор+"">'""); ИначеЕсли ОбъектПлагин = Истина Тогда // загрузка клиентского плагина ""По требованию"" - ИмяПлагина = Объект.Плагины[Идентификатор]; + ИмяПлагина = Объект.Плагины[ПолучитьИдентификаторБезПрефиксаПодсистемы(Идентификатор, Объект.ИспользуемыйПрефиксПодсистемы)]; Попытка - ОбъектПлагин = ПолучитьФорму(""ВнешняяОбработка."" + ИмяПлагина + "".Форма"", , ЭтаФорма); - КэшФормПлагинов.Вставить(Идентификатор, ОбъектПлагин); + Если Объект.ЭтоВстроеннаяОбработка Тогда + ОбъектПлагин = ПолучитьФорму(""Обработка."" + ДополнитьИдентификаторПрефиксомПодсистемы(ИмяПлагина, Объект.ИспользуемыйПрефиксПодсистемы) + "".Форма"", , ЭтаФорма); + Иначе + ОбъектПлагин = ПолучитьФорму(""ВнешняяОбработка."" + ИмяПлагина + "".Форма"", , ЭтаФорма); + КонецЕсли; + КэшФормПлагинов.Вставить(ИдентификаторБезПрефиксовПодсистемы, ОбъектПлагин); Исключение // TODO добавить поведение при отсутствии управляемой формы у плагина ВызватьИсключение; @@ -1582,6 +1643,10 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs ИначеЕсли ДочернийУзел.Тип = Объект.ТипыУзловДереваТестов.Элемент Тогда Если УзелДереваТестовУдовлетворяетФильтру(ДочернийУзел, ФильтрДляДочернихУзлов) Тогда КонтекстВыполнения = ПолучитьКонтекстВыполненияПоПути(Загрузчик, ДочернийУзел.Путь); + // Заполняем служебные поля, если они имеются + Если ПеременнаяСодержитСвойство(КонтекстВыполнения, ""ИспользуемыйПрефиксПодсистемы"") Тогда + КонтекстВыполнения.ИспользуемыйПрефиксПодсистемы = Объект.ИспользуемыйПрефиксПодсистемы; + КонецЕсли; Объект.ТекущийКонтейнер = КонтейнерДереваТестов; ДочернийРезультатТестирования = ВыполнитьТестовыйМетод(КонтекстВыполнения, ДочернийУзел); КонтейнерДереваТестов.Контекст = Объект.ТекущийКонтейнер.Контекст; @@ -1753,12 +1818,18 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs ОбъектНаСервере = ЭтотОбъектНаСервере(); Если ОписаниеКонтекста.ЭтоВнутренняяОбработка Тогда - КонтекстВыполнения = Обработки[ОписаниеКонтекста.Идентификатор].Создать(); + ЭтоОтчет = (Метаданные.Отчеты.Найти(ОписаниеКонтекста.Идентификатор) <> Неопределено); Иначе - КонтекстВыполнения = ВнешниеОбработки.Создать(ОписаниеКонтекста.Идентификатор, Ложь); + ФайлОбработки = Новый Файл(ЭлементДереваТестов.Путь); + ЭтоОтчет = (НРег(ФайлОбработки.Расширение) = "".erf""); КонецЕсли; + + КонтекстВыполнения = СоздатьОбъектПлагина(ОписаниеКонтекста.Идентификатор, ОписаниеКонтекста.ЭтоВнутренняяОбработка, ЭтоОтчет); КонтекстВыполнения.Инициализация(ОбъектНаСервере); + // Заполняем служебные поля, если они имеются + ЗаполнитьСвойствоПриНаличии(КонтекстВыполнения, ""ПутьКФайлуПолный"", ЭлементДереваТестов.Путь); + РезультатТестирования = ОбъектНаСервере.ВыполнитьТестовыйМетод(КонтекстВыполнения, ЭлементДереваТестов); Возврат РезультатТестирования; @@ -2004,25 +2075,37 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs // { Внешние интерфейсные инструменты &НаКлиенте Процедура ОткрытьИнструмент(Знач ИмяИнструмента, Знач ПутьИнструмента = """", Знач ИмяФормы = ""Форма"") - Если Не ПустаяСтрока(ПутьИнструмента) Тогда - ПутьКВнешнимИнструментам = ПутьИнструмента + ""\""; - Иначе - ПутьКВнешнимИнструментам = ПолучитьПутьКВнешнимИнструментам(); - КонецЕсли; - ПутьИнструмента = ПутьКВнешнимИнструментам + ИмяИнструмента + "".epf""; - ФайлИнструмента = Новый Файл(ПутьИнструмента); - Если Не ФайлИнструмента.Существует() Тогда - Сообщить(""Инструмент <"" + ИмяИнструмента + ""> не найден в каталоге <"" + ФайлИнструмента.Путь + "">""); - Возврат; - КонецЕсли; - АдресХранилища = """"; - ПоместитьФайл(АдресХранилища, ФайлИнструмента.ПолноеИмя, , Ложь); - ПодключитьФайлОбработкиНаСервере(АдресХранилища, Неопределено); - ФормаИнструмента = ПолучитьФорму(""ВнешняяОбработка."" + ИмяИнструмента + ""."" + ИмяФормы); - Если ФормаИнструмента = Неопределено Тогда - Сообщить(""Инструмент <"" + ИмяИнструмента + "">: не удалось получить основную форму!""); - Возврат; + // Для встроенного в состав конфигурации браузера тестов + // инструменты находятся также в составке конфигурации + Если Объект.ЭтоВстроеннаяОбработка Тогда + // Преобразование имени инструмента к имени обработки + Если ИмяИнструмента = ""UILogToScript"" Тогда + ИмяИнструмента = ""ПреобразованиеЖурналаДействийПользователя""; + КонецЕсли; + ИмяИнструмента = ДополнитьИдентификаторПрефиксомПодсистемы(ИмяИнструмента, Объект.ИспользуемыйПрефиксПодсистемы); + ФормаИнструмента = ПолучитьФорму(""Обработка."" + ИмяИнструмента + ""."" + ИмяФормы); + Иначе + Если Не ПустаяСтрока(ПутьИнструмента) Тогда + ПутьКВнешнимИнструментам = ПутьИнструмента + ""\""; + Иначе + ПутьКВнешнимИнструментам = ПолучитьПутьКВнешнимИнструментам(); + КонецЕсли; + ПутьИнструмента = ПутьКВнешнимИнструментам + ИмяИнструмента + "".epf""; + ФайлИнструмента = Новый Файл(ПутьИнструмента); + Если Не ФайлИнструмента.Существует() Тогда + Сообщить(""Инструмент <"" + ИмяИнструмента + ""> не найден в каталоге <"" + ФайлИнструмента.Путь + "">""); + Возврат; + КонецЕсли; + АдресХранилища = """"; + ПоместитьФайл(АдресХранилища, ФайлИнструмента.ПолноеИмя, , Ложь); + ПодключитьФайлОбработкиНаСервере(АдресХранилища, ИмяИнструмента); + + ФормаИнструмента = ПолучитьФорму(""ВнешняяОбработка."" + ИмяИнструмента + ""."" + ИмяФормы); + Если ФормаИнструмента = Неопределено Тогда + Сообщить(""Инструмент <"" + ИмяИнструмента + "">: не удалось получить основную форму!""); + Возврат; + КонецЕсли; КонецЕсли; ФормаИнструмента.Открыть(); ФормаИнструмента = Неопределено; @@ -2030,8 +2113,12 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs &НаКлиенте Функция ПолучитьПутьКПлагинам() - ФайлЯдра = Новый Файл(ЭтаФорма.ИспользуемоеИмяФайла); - Результат = ФайлЯдра.Путь + ""Plugins\""; + // Для встроенного в состав конфигурации браузера тестов + // используемое имя файла не используется + Если НЕ Объект.ЭтоВстроеннаяОбработка Тогда + ФайлЯдра = Новый Файл(ЭтаФорма[""ИспользуемоеИмяФайла""]); + Результат = ФайлЯдра.Путь + ""Plugins\""; + КонецЕсли; Возврат Результат; КонецФункции @@ -2049,18 +2136,24 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs &НаКлиенте Процедура ПодключитьВнешнююОбработку(ФайлОбработки) Экспорт Если ПодключенныеВнешниеОбработки.Получить(ФайлОбработки.ИмяБезРасширения) = Неопределено Тогда + + ЭтоОтчет = (НРег(ФайлОбработки.Расширение) = "".erf""); АдресХранилища = """"; ПоместитьФайл(АдресХранилища, ФайлОбработки.ПолноеИмя, , Ложь, ЭтаФорма.УникальныйИдентификатор); - ПодключитьФайлОбработкиНаСервере(АдресХранилища, ФайлОбработки.ИмяБезРасширения); + ПодключитьФайлОбработкиНаСервере(АдресХранилища, ФайлОбработки.ИмяБезРасширения, ЭтоОтчет); ПодключенныеВнешниеОбработки.Вставить(ФайлОбработки.ИмяБезРасширения, Истина); КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста -Процедура ПодключитьФайлОбработкиНаСервере(Знач АдресХранилища, Знач ИдентификаторОбработки) - ВнешниеОбработки.Подключить(АдресХранилища, ИдентификаторОбработки, Ложь); +Процедура ПодключитьФайлОбработкиНаСервере(Знач АдресХранилища, Знач ИдентификаторОбработки, ЭтоОтчет = Ложь) + Если ЭтоОтчет = Истина Тогда + ВнешниеОтчеты.Подключить(АдресХранилища, ИдентификаторОбработки, Ложь); + Иначе + ВнешниеОбработки.Подключить(АдресХранилища, ИдентификаторОбработки, Ложь); + КонецЕсли; КонецПроцедуры &НаКлиенте @@ -2159,9 +2252,98 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs Возврат ПараметрыМетода; КонецФункции +&НаСервере +Процедура ЗагрузитьВстроенныеПлагины() + + ОбъектНаСервере = ЭтотОбъектНаСервере(); + Объект.Плагины = ОбъектНаСервере.ПолучитьПлагины(); + +КонецПроцедуры + // } Helpers + +// { Подсистема конфигурации xUnitFor1C + +// Универсальная функция для проверки наличия +// свойств у значения любого типа данных +// Переменные: +// 1. Переменная - переменная любого типа, +// для которой необходимо проверить наличие свойства +// 2. ИмяСвойства - переменная типа ""Строка"", +// содержащая искомое свойства +// +&НаКлиентеНаСервереБезКонтекста +Функция ПеременнаяСодержитСвойство(Переменная, ИмяСвойства) + // Инициализируем структуру для теста + // с ключом (значение переменной ""ИмяСвойства"") + // и значением произвольного GUID'а + GUIDПроверка = Новый УникальныйИдентификатор; + СтруктураПроверка = Новый Структура; + СтруктураПроверка.Вставить(ИмяСвойства, GUIDПроверка); + // Заполняем созданную структуру из переданного + // значения переменной + ЗаполнитьЗначенияСвойств(СтруктураПроверка, Переменная); + // Если значение для свойства структуры осталось + // NULL, то искомое свойство не найдено, + // и наоборот. + Если СтруктураПроверка[ИмяСвойства] = GUIDПроверка Тогда + Возврат Ложь; + Иначе + Возврат Истина; + КонецЕсли; +КонецФункции +&НаКлиентеНаСервереБезКонтекста +Функция ЗаполнитьСвойствоПриНаличии(ОбъектЗаполнения, ИмяСвойство, ЗначениеСвойства) + + Если ПеременнаяСодержитСвойство(ОбъектЗаполнения, ИмяСвойство) Тогда + ОбъектЗаполнения[ИмяСвойство] = ЗначениеСвойства; + КонецЕсли; + +КонецФункции + +&НаКлиенте +Функция ДополнитьИдентификаторПрефиксомПодсистемы(Знач Идентификатор, Знач ИспользуемыйПрефиксПодсистемы) Экспорт + + Если НЕ ЗначениеЗаполнено(ИспользуемыйПрефиксПодсистемы) Тогда + Возврат Идентификатор; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(ИспользуемыйПрефиксПодсистемы); + Если Лев(Идентификатор, ДлинаПрефикса) = ИспользуемыйПрефиксПодсистемы Тогда + Возврат Идентификатор; + Иначе + Возврат ИспользуемыйПрефиксПодсистемы + Идентификатор; + КонецЕсли; + +КонецФункции +&НаКлиенте +Функция ПолучитьИдентификаторБезПрефиксаПодсистемы(Знач Идентификатор, Знач ИспользуемыйПрефиксПодсистемы) Экспорт + + Если НЕ ЗначениеЗаполнено(ИспользуемыйПрефиксПодсистемы) Тогда + Возврат Идентификатор; + КонецЕсли; + + ДлинаПрефикса = СтрДлина(ИспользуемыйПрефиксПодсистемы); + Если Лев(Идентификатор, ДлинаПрефикса) = ИспользуемыйПрефиксПодсистемы Тогда + Возврат Прав(Идентификатор, СтрДлина(Идентификатор) - ДлинаПрефикса); + Иначе + Возврат Идентификатор; + КонецЕсли; + +КонецФункции + +&НаСервере +Функция СоздатьОбъектПлагина(Идентификатор, ВстроенаВКонфигурацию = Ложь, ЭтоОтчет = Ложь) + + ОбъектНаСервере = ЭтотОбъектНаСервере(); + + Возврат ОбъектНаСервере.СоздатьОбъектПлагина(Идентификатор, ВстроенаВКонфигурацию, ЭтоОтчет); + +КонецФункции + +// } Подсистема конфигурации xUnitFor1C ", -{4,6, +{4,7, {9, {1},0,"Объект", {1,0}, @@ -2406,6 +2588,27 @@ i970DXxgHCspVG9wDoliaofL23C6tMM6z4wPIN79BQ/5HU0rfcdKpIz+U71Zznqs {0,0},0,0,0,0, {0,0}, {0,0} +}, +{9, +{18},0,"ЭтоПакетныйЗапуск", +{1,1, +{"ru","Это пакетный запуск"} +}, +{"Pattern", +{"B"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},0,0,0,0, +{0,0}, +{0,0} },0,0, {#base64:77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxTZXR0 aW5ncyB4bWxucz0iaHR0cDovL3Y4LjFjLnJ1LzguMS9kYXRhLWNvbXBvc2l0aW9u @@ -2426,7 +2629,7 @@ L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} {"#",4772b3b4-f4a3-49c0-a1a5-8cb5961511a3} },0} }, -{0,9, +{0,10, {6, {3,409b9a53-7f7e-4178-86c1-33176c7c7a7a},"КомандаВыполнитьВсеТесты", {1,1, @@ -2579,6 +2782,23 @@ L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} {3,0, {0},"",-1,-1,1,0},"КонвертерТестов",3,0,0, {0,0} +}, +{6, +{6,409b9a53-7f7e-4178-86c1-33176c7c7a7a},"ПреобразоватьЖурналДействийПользователяВТест", +{1,1, +{"ru","Преобразовать журнал действий пользователя в тест"} +}, +{1,1, +{"ru","Преобразовать журнал действий пользователя в тест"} +}, +{0, +{0, +{"B",1},0} +}, +{0,0,0}, +{3,0, +{0},"",-1,-1,1,0},"ПреобразоватьЖурналДействийПользователяВТест",3,0,0, +{0,0} } }, {0,0}, diff --git a/src/xddTestRunner/und/versions b/src/xddTestRunner/und/versions index 13faa9eb..57781a1a 100644 --- a/src/xddTestRunner/und/versions +++ b/src/xddTestRunner/und/versions @@ -1 +1 @@ -{1,13,"",0ffe2b2d-e3b9-4cac-8b85-f80cffb167a6,"versions",deec4bca-1769-45a5-945c-a61148400a8b,"5070e3c3-f74b-4ecd-9756-1136a230eca2",21c72837-4750-45ff-9b86-8708ff9c9aa8,"root",6769578c-7013-4b9c-a4c5-c8cdf32115cb,"11ad5c96-c434-4088-bf66-ddff06c57ed8.0",8817c168-d7f2-4f3e-b488-6eb1bd457f88,"11ad5c96-c434-4088-bf66-ddff06c57ed8.1",bf181a17-2087-44af-9d3b-a812b9fa83df,"a1ce7ef7-f372-4589-b899-7fbf88efa7bf",5a214455-0554-41dd-955b-9b03ba618641,"version",cc1f7be7-c78f-4be7-a05d-52904b4e3b23,"ed07b230-8bf7-4423-b861-a31f23c7471f",cad33af0-89f5-46a6-91b1-99db503a353b,"copyinfo",dd60c0b6-b2c6-430b-bc5d-c6c51e832052,"a1ce7ef7-f372-4589-b899-7fbf88efa7bf.0",1dad3e2a-1064-4d94-80b9-1e9d25d7da3c,"ed07b230-8bf7-4423-b861-a31f23c7471f.0",2ec2ecf1-2d8f-4397-8f30-3213cf9df6f5,"ed07b230-8bf7-4423-b861-a31f23c7471f.1",d2376067-c9d3-4379-9abc-b96f699d83ed} \ No newline at end of file +{1,13,"",53513183-b5e6-48c6-b910-acd3ddb71b4c,"5070e3c3-f74b-4ecd-9756-1136a230eca2",b3c3cda7-e613-4c33-92f2-df5d84140d55,"versions",06ece515-0adc-4679-9f77-e6e4e454c0fd,"root",e14effe3-80b4-40c1-83c8-e9f8bf196144,"11ad5c96-c434-4088-bf66-ddff06c57ed8.1",3e7291b8-f1b6-41f0-adff-92ae966de8c7,"11ad5c96-c434-4088-bf66-ddff06c57ed8.0",39acb49a-f77c-4884-b0d1-ccfeb1f38de4,"a1ce7ef7-f372-4589-b899-7fbf88efa7bf",05005cb2-b26d-48d7-9cb1-39a334d52ce2,"version",7e4b9421-000d-4e90-b7ba-76ec85e5755d,"ed07b230-8bf7-4423-b861-a31f23c7471f",3a7b99b3-a937-425a-9393-5efe54cf8f04,"copyinfo",6a9e4076-f0ad-4028-a08e-79ddd6650a81,"a1ce7ef7-f372-4589-b899-7fbf88efa7bf.0",a4a92461-5d7d-4bbc-a7ca-4cf54920f68d,"ed07b230-8bf7-4423-b861-a31f23c7471f.0",1d099565-a3f5-4e4d-b3bb-be4b1d53e798,"ed07b230-8bf7-4423-b861-a31f23c7471f.1",d2376067-c9d3-4379-9abc-b96f699d83ed} \ No newline at end of file diff --git a/xddTestRunner.epf b/xddTestRunner.epf index efd3c3d9..faece028 100644 Binary files a/xddTestRunner.epf and b/xddTestRunner.epf differ