Skip to content

Commit

Permalink
Добавлен механизм настройки исключений дымовых тестов открытия форм ч…
Browse files Browse the repository at this point in the history
…ерез внешний файл настройки в формате JSON #179
  • Loading branch information
artbear committed Feb 12, 2017
1 parent 308c55d commit 6153fb5
Show file tree
Hide file tree
Showing 39 changed files with 805 additions and 210 deletions.
Binary file modified Plugins/ЗагрузчикФайла.epf
Binary file not shown.
Binary file added Plugins/Настройки.epf
Binary file not shown.
Binary file not shown.
16 changes: 16 additions & 0 deletions smoke.example.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"Справочники": {
"Списки": [
"ПростойСправочник"
],
"Новые": [
"ПростойСправочник2"
]
},
"Отчеты": [
"Отчет1"
],
"Обработки": [
"xddGuidShow"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
КонтекстЯдра.ПодключитьВнешнююОбработку(ФайлОбработки);

КонтейнерССервернымиТестамиОбработки = ЗагрузитьФайлНаСервере(ФайлОбработки.ПолноеИмя);
КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки);
КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки, КонтекстЯдра);
Если КонтейнерСКлиентскимиТестамиОбработки.Строки.Количество() > 0 Тогда
КонтейнерССервернымиТестамиОбработки.Строки.Добавить(КонтейнерСКлиентскимиТестамиОбработки);
КонецЕсли;
Expand Down Expand Up @@ -124,13 +124,13 @@

ПостроительДереваТестов = КонтекстЯдра.СоздатьОбъектПлагина("ПостроительДереваТестов");
ФайлОбработки = Новый Файл(ПолныйПутьКОбработкеНаКлиенте);
Контейнер = ЭтотОбъектНаСервере().ЗагрузитьФайл(ПостроительДереваТестов, ФайлОбработки);
Контейнер = ЭтотОбъектНаСервере().ЗагрузитьФайл(ПостроительДереваТестов, ФайлОбработки, КонтекстЯдра);

Возврат Контейнер;
КонецФункции

&НаКлиенте
Функция ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки)
Функция ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки, КонтекстЯдра)

ЭтоФайлОтчета = (НРег(ФайлОбработки.Расширение) = ".erf");

Expand All @@ -141,7 +141,7 @@
КонецЕсли;

Попытка
Контейнер = ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки);
Контейнер = ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки, КонтекстЯдра);
Исключение
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Если ЭтоНовыйФорматОбработки(ТекстОшибки) Тогда
Expand All @@ -155,11 +155,24 @@
КонецФункции

&НаКлиенте
Функция ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки)
Функция ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки, КонтекстЯдра)
ЗагружаемыйПуть = ФайлОбработки.ПолноеИмя;
КэшПостроительДереваТестов = ПостроительДереваТестов;
КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(ПрефиксПутейСФормами() + ФайлОбработки.ИмяБезРасширения, ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма);
ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма);
Попытка
ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма, КонтекстЯдра);
Исключение
Инфо = ИнформацияОбОшибке();
Если Инфо.ИмяМодуля = "ВнешняяОбработка.ЗагрузчикФайла.Форма.Форма.Форма" И
Инфо.Описание = "Слишком много фактических параметров" И
СтрНайти(Инфо.ИсходнаяСтрока, "ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма, КонтекстЯдра);") > 0
Тогда

ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма);
Иначе
ВызватьИсключение;
КонецЕсли;
КонецПопытки;
Результат = КонтейнерТестов;
КонтейнерТестов = Неопределено;
ТекущаяГруппа = Неопределено;
Expand Down
25 changes: 20 additions & 5 deletions src/Plugins/ЗагрузчикФайла/ObjectModule.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
ДеревоТестов = ПостроительДереваТестов.СоздатьКонтейнер(ФайлОбработки.Путь);
КонецЕсли;

КонтейнерСТестамиОбработки = ЗагрузитьФайл(ПостроительДереваТестов, ФайлОбработки);
КонтейнерСТестамиОбработки = ЗагрузитьФайл(ПостроительДереваТестов, ФайлОбработки, КонтекстЯдра);
Если КонтейнерСТестамиОбработки.Строки.Количество() > 0 Тогда
ДеревоТестов.Строки.Добавить(КонтейнерСТестамиОбработки);
КонецЕсли;
Expand Down Expand Up @@ -100,10 +100,10 @@
КонецЕсли;
КонецПроцедуры

Функция ЗагрузитьФайл(ПостроительДереваТестов, ФайлОбработки) Экспорт
Функция ЗагрузитьФайл(ПостроительДереваТестов, ФайлОбработки, КонтекстЯдра) Экспорт
Обработка = ПолучитьКонтекстОбработки(ФайлОбработки);
Попытка
Контейнер = ЗагрузитьТестыВНовомФормате(ПостроительДереваТестов, Обработка, ФайлОбработки);
Контейнер = ЗагрузитьТестыВНовомФормате(ПостроительДереваТестов, Обработка, ФайлОбработки, КонтекстЯдра);
Исключение
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Если ЭтоНовыйФорматОбработки(ТекстОшибки) Тогда
Expand All @@ -116,7 +116,7 @@
Возврат Контейнер;
КонецФункции

Функция ЗагрузитьТестыВНовомФормате(ПостроительДереваТестов, Обработка, ФайлОбработки)
Функция ЗагрузитьТестыВНовомФормате(ПостроительДереваТестов, Обработка, ФайлОбработки, КонтекстЯдра)
ЗагружаемыйПуть = ФайлОбработки.ПолноеИмя;
КэшПостроительДереваТестов = ПостроительДереваТестов;
Если НРег(ФайлОбработки.Расширение) = ".erf" Тогда
Expand All @@ -126,7 +126,22 @@
КонецЕсли;
КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(ФайлОбработки.ИмяБезРасширения, ИконкаУзла);

Обработка.ЗаполнитьНаборТестов(ЭтотОбъект);
Попытка
Обработка.ЗаполнитьНаборТестов(ЭтотОбъект, КонтекстЯдра);
Исключение
Инфо = ИнформацияОбОшибке();
Если Инфо.ИмяМодуля = "ВнешняяОбработка.ЗагрузчикФайла.МодульОбъекта" И
Инфо.Описание = "Слишком много фактических параметров" И
СтрНайти(Инфо.ИсходнаяСтрока, "Обработка.ЗаполнитьНаборТестов(ЭтотОбъект, КонтекстЯдра);") > 0
Тогда

Обработка.ЗаполнитьНаборТестов(ЭтотОбъект);

Иначе
ВызватьИсключение;
КонецЕсли;
КонецПопытки;

Результат = КонтейнерТестов;
КонтейнерТестов = Неопределено;
ТекущаяГруппа = Неопределено;
Expand Down
2 changes: 1 addition & 1 deletion src/Plugins/ЗагрузчикФайла/maps.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Form\Форма\Форма.bsl-->d75f146d-5027-4604-80fd-3b704ddd86a8.0 (50, 463)
Form\Форма\Форма.bsl-->d75f146d-5027-4604-80fd-3b704ddd86a8.0 (50, 476)
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{3,
{42,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1,
{46,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,0},
{0},1,
{21,
{-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
Expand Down Expand Up @@ -36,7 +36,7 @@
{7,3,0,1,100},
{0,0,0},1,
{5,0,0,3,0,
{0,0,0},
{0,1,0},
{3,4,
{0}
},
Expand All @@ -47,7 +47,7 @@
{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},"&НаКлиенте
{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,100,1,1,0},"&НаКлиенте
Перем КэшПостроительДереваТестов;
&НаКлиенте
Перем ЗагружаемыйПуть;
Expand Down Expand Up @@ -107,7 +107,7 @@
КонтекстЯдра.ПодключитьВнешнююОбработку(ФайлОбработки);

КонтейнерССервернымиТестамиОбработки = ЗагрузитьФайлНаСервере(ФайлОбработки.ПолноеИмя);
КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки);
КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки, КонтекстЯдра);
Если КонтейнерСКлиентскимиТестамиОбработки.Строки.Количество() > 0 Тогда
КонтейнерССервернымиТестамиОбработки.Строки.Добавить(КонтейнерСКлиентскимиТестамиОбработки);
КонецЕсли;
Expand Down Expand Up @@ -173,13 +173,13 @@

ПостроительДереваТестов = КонтекстЯдра.СоздатьОбъектПлагина(""ПостроительДереваТестов"");
ФайлОбработки = Новый Файл(ПолныйПутьКОбработкеНаКлиенте);
Контейнер = ЭтотОбъектНаСервере().ЗагрузитьФайл(ПостроительДереваТестов, ФайлОбработки);
Контейнер = ЭтотОбъектНаСервере().ЗагрузитьФайл(ПостроительДереваТестов, ФайлОбработки, КонтекстЯдра);

Возврат Контейнер;
КонецФункции

&НаКлиенте
Функция ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки)
Функция ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки, КонтекстЯдра)

ЭтоФайлОтчета = (НРег(ФайлОбработки.Расширение) = "".erf"");

Expand All @@ -190,7 +190,7 @@
КонецЕсли;

Попытка
Контейнер = ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки);
Контейнер = ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки, КонтекстЯдра);
Исключение
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Если ЭтоНовыйФорматОбработки(ТекстОшибки) Тогда
Expand All @@ -204,11 +204,24 @@
КонецФункции

&НаКлиенте
Функция ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки)
Функция ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки, КонтекстЯдра)
ЗагружаемыйПуть = ФайлОбработки.ПолноеИмя;
КэшПостроительДереваТестов = ПостроительДереваТестов;
КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(ПрефиксПутейСФормами() + ФайлОбработки.ИмяБезРасширения, ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма);
ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма);
Попытка
ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма, КонтекстЯдра);
Исключение
Инфо = ИнформацияОбОшибке();
Если Инфо.ИмяМодуля = ""ВнешняяОбработка.ЗагрузчикФайла.Форма.Форма.Форма"" И
Инфо.Описание = ""Слишком много фактических параметров"" И
СтрНайти(Инфо.ИсходнаяСтрока, ""ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма, КонтекстЯдра);"") > 0
Тогда

ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма);
Иначе
ВызватьИсключение;
КонецЕсли;
КонецПопытки;
Результат = КонтейнерТестов;
КонтейнерТестов = Неопределено;
ТекущаяГруппа = Неопределено;
Expand Down Expand Up @@ -513,7 +526,8 @@ Oi8vdjguMWMucnUvOC4xL2RhdGEvdWkiIHhtbG5zOndlYj0iaHR0cDovL3Y4LjFj
LnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93ZWIiIHhtbG5zOndpbj0iaHR0cDovL3Y4
LjFjLnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93aW5kb3dzIiB4bWxuczp4cz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDov
L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=}
L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPg0KCTxvdXRwdXRQ
YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+}
},
{0,0},
{0,0},
Expand Down
4 changes: 3 additions & 1 deletion src/Plugins/ЗагрузчикФайла/und/version
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
{
{216,0}
{216,0,
{80308,0}
}
}
2 changes: 1 addition & 1 deletion src/Plugins/ЗагрузчикФайла/und/versions
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{1,9,"",5ca3ba7b-ac30-4dd5-add6-7122817caffe,"51efd65a-ed36-4be7-a563-89b34ebfa851",e2d653bc-3396-4cf7-9fc3-571baa412caf,"copyinfo",23e17dfa-5076-42c0-8c4d-85d59567480f,"d75f146d-5027-4604-80fd-3b704ddd86a8",99d14991-84a9-4821-8104-2cfd212270d9,"d75f146d-5027-4604-80fd-3b704ddd86a8.0",279dce53-f8b7-4c88-a094-fd0760a7065c,"dfe532e1-d0ef-4008-afd4-214781ee4960.0",23ef37aa-3c13-4464-aaf2-c5fafbe9c140,"root",ee4fcc67-2ba5-46ee-9386-c41f25c0cf20,"version",373b7d2e-bd4f-4e9b-94f0-ec84d69fdbd3,"versions",407b34f1-2f7e-484d-bce0-6f2378bf01b3}
{1,9,"",8166408f-4159-4e2b-9781-2d591673955c,"51efd65a-ed36-4be7-a563-89b34ebfa851",aa5965af-4229-4bbe-b205-090baded4def,"copyinfo",a2e3eb0b-0020-47ab-ad3d-4a2d481c4930,"d75f146d-5027-4604-80fd-3b704ddd86a8",3d1dd6a8-9cce-40fd-ac47-2fb03a6d359f,"d75f146d-5027-4604-80fd-3b704ddd86a8.0",06306db7-53d9-4399-ba5b-df74053ccdb3,"dfe532e1-d0ef-4008-afd4-214781ee4960.0",3a46fc39-ff5b-4c85-8cdc-989a5b0e6fcb,"root",4d97ec92-f9c5-4e9e-b11c-dc73ed1a5dc7,"version",1e8c5a76-64cc-49c6-b5e3-648fcce003d9,"versions",394b2e82-e841-4627-863c-c710af5699c5}
53 changes: 53 additions & 0 deletions src/Plugins/Настройки/Form/Форма/Форма.bsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
&НаКлиенте
Перем КонтекстЯдра;

// { Plugin interface

&НаКлиенте
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
КонецФункции

&НаКлиенте
Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
КонтекстЯдра = КонтекстЯдраПараметр;
КонецПроцедуры

&НаСервере
Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
Возврат Объект().ОписаниеПлагина(ВозможныеТипыПлагинов);
КонецФункции

// } Plugin interface

// { Settings interface

&НаКлиенте
Функция ПолучитьНастройку(Знач ПутьФайлаНастройки) Экспорт
ФайлБраузера = Новый Файл(КонтекстЯдра.ИспользуемоеИмяФайла);
Возврат ПолучитьНастройки(ФайлБраузера, ПутьФайлаНастройки);
КонецФункции

// } Settings interface

&НаКлиенте
Функция ПолучитьНастройки(Знач ФайлБраузера, Знач ПутьФайлаНастройки)
ИмяФайла = ПутьФайлаНастройки; //"1smoke.json";

ПутьФайлаНастроек = СтрШаблон("%1%2", ФайлБраузера.Путь, ИмяФайла);
ФайлНастроек = Новый Файл(ПутьФайлаНастроек);
Если ФайлНастроек.Существует() Тогда
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.ОткрытьФайл(ПутьФайлаНастроек);

Настройки = ПрочитатьJSON(ЧтениеJSON, Ложь);
Настройки = Новый ФиксированнаяСтруктура(Настройки);
КонецЕсли;
Возврат Настройки;
КонецФункции

&НаСервере
Функция Объект()
Возврат РеквизитФормыВЗначение("Объект");
КонецФункции

Loading

0 comments on commit 6153fb5

Please sign in to comment.