Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Настройка исключений дымовых тестов открытия форм через внешний файл настройки в формате JSON #686

Merged
merged 1 commit into from
Mar 26, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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