Skip to content

Commit 6153fb5

Browse files
committed
Добавлен механизм настройки исключений дымовых тестов открытия форм через внешний файл настройки в формате JSON #179
1 parent 308c55d commit 6153fb5

39 files changed

+805
-210
lines changed
319 Bytes
Binary file not shown.

Plugins/Настройки.epf

6.87 KB
Binary file not shown.
Binary file not shown.

smoke.example.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"Справочники": {
3+
"Списки": [
4+
"ПростойСправочник"
5+
],
6+
"Новые": [
7+
"ПростойСправочник2"
8+
]
9+
},
10+
"Отчеты": [
11+
"Отчет1"
12+
],
13+
"Обработки": [
14+
"xddGuidShow"
15+
]
16+
}

src/Plugins/ЗагрузчикФайла/Form/Форма/Форма.bsl

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
КонтекстЯдра.ПодключитьВнешнююОбработку(ФайлОбработки);
5959

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

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

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

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

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

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

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

157157
&НаКлиенте
158-
Функция ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки)
158+
Функция ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки, КонтекстЯдра)
159159
ЗагружаемыйПуть = ФайлОбработки.ПолноеИмя;
160160
КэшПостроительДереваТестов = ПостроительДереваТестов;
161161
КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(ПрефиксПутейСФормами() + ФайлОбработки.ИмяБезРасширения, ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма);
162-
ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма);
162+
Попытка
163+
ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма, КонтекстЯдра);
164+
Исключение
165+
Инфо = ИнформацияОбОшибке();
166+
Если Инфо.ИмяМодуля = "ВнешняяОбработка.ЗагрузчикФайла.Форма.Форма.Форма" И
167+
Инфо.Описание = "Слишком много фактических параметров" И
168+
СтрНайти(Инфо.ИсходнаяСтрока, "ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма, КонтекстЯдра);") > 0
169+
Тогда
170+
171+
ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма);
172+
Иначе
173+
ВызватьИсключение;
174+
КонецЕсли;
175+
КонецПопытки;
163176
Результат = КонтейнерТестов;
164177
КонтейнерТестов = Неопределено;
165178
ТекущаяГруппа = Неопределено;

src/Plugins/ЗагрузчикФайла/ObjectModule.bsl

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
ДеревоТестов = ПостроительДереваТестов.СоздатьКонтейнер(ФайлОбработки.Путь);
5151
КонецЕсли;
5252

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

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

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

129-
Обработка.ЗаполнитьНаборТестов(ЭтотОбъект);
129+
Попытка
130+
Обработка.ЗаполнитьНаборТестов(ЭтотОбъект, КонтекстЯдра);
131+
Исключение
132+
Инфо = ИнформацияОбОшибке();
133+
Если Инфо.ИмяМодуля = "ВнешняяОбработка.ЗагрузчикФайла.МодульОбъекта" И
134+
Инфо.Описание = "Слишком много фактических параметров" И
135+
СтрНайти(Инфо.ИсходнаяСтрока, "Обработка.ЗаполнитьНаборТестов(ЭтотОбъект, КонтекстЯдра);") > 0
136+
Тогда
137+
138+
Обработка.ЗаполнитьНаборТестов(ЭтотОбъект);
139+
140+
Иначе
141+
ВызватьИсключение;
142+
КонецЕсли;
143+
КонецПопытки;
144+
130145
Результат = КонтейнерТестов;
131146
КонтейнерТестов = Неопределено;
132147
ТекущаяГруппа = Неопределено;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Form\Форма\Форма.bsl-->d75f146d-5027-4604-80fd-3b704ddd86a8.0 (50, 463)
1+
Form\Форма\Форма.bsl-->d75f146d-5027-4604-80fd-3b704ddd86a8.0 (50, 476)

src/Plugins/ЗагрузчикФайла/und/d75f146d-5027-4604-80fd-3b704ddd86a8.0

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{3,
2-
{42,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1,
2+
{46,0,0,0,0,1,0,0,00000000-0000-0000-0000-000000000000,1,
33
{1,0},0,0,1,1,1,0,1,0,
4-
{0,0,0},
4+
{0,1,0},
55
{0},1,
66
{21,
77
{-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
@@ -36,7 +36,7 @@
3636
{7,3,0,1,100},
3737
{0,0,0},1,
3838
{5,0,0,3,0,
39-
{0,0,0},
39+
{0,1,0},
4040
{3,4,
4141
{0}
4242
},
@@ -47,7 +47,7 @@
4747
{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e}
4848
},0,1,2,
4949
{1,
50-
{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},"&НаКлиенте
50+
{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},"&НаКлиенте
5151
Перем КэшПостроительДереваТестов;
5252
&НаКлиенте
5353
Перем ЗагружаемыйПуть;
@@ -107,7 +107,7 @@
107107
КонтекстЯдра.ПодключитьВнешнююОбработку(ФайлОбработки);
108108

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

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

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

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

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

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

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

206206
&НаКлиенте
207-
Функция ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки)
207+
Функция ЗагрузитьТестыВНовомФормате_НаКлиенте(ПостроительДереваТестов, ФормаОбработки, ФайлОбработки, КонтекстЯдра)
208208
ЗагружаемыйПуть = ФайлОбработки.ПолноеИмя;
209209
КэшПостроительДереваТестов = ПостроительДереваТестов;
210210
КонтейнерТестов = ПостроительДереваТестов.СоздатьКонтейнер(ПрефиксПутейСФормами() + ФайлОбработки.ИмяБезРасширения, ПостроительДереваТестов.Объект.ИконкиУзловДереваТестов.Форма);
211-
ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма);
211+
Попытка
212+
ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма, КонтекстЯдра);
213+
Исключение
214+
Инфо = ИнформацияОбОшибке();
215+
Если Инфо.ИмяМодуля = ""ВнешняяОбработка.ЗагрузчикФайла.Форма.Форма.Форма"" И
216+
Инфо.Описание = ""Слишком много фактических параметров"" И
217+
СтрНайти(Инфо.ИсходнаяСтрока, ""ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма, КонтекстЯдра);"") > 0
218+
Тогда
219+
220+
ФормаОбработки.ЗаполнитьНаборТестов(ЭтаФорма);
221+
Иначе
222+
ВызватьИсключение;
223+
КонецЕсли;
224+
КонецПопытки;
212225
Результат = КонтейнерТестов;
213226
КонтейнерТестов = Неопределено;
214227
ТекущаяГруппа = Неопределено;
@@ -513,7 +526,8 @@ Oi8vdjguMWMucnUvOC4xL2RhdGEvdWkiIHhtbG5zOndlYj0iaHR0cDovL3Y4LjFj
513526
LnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93ZWIiIHhtbG5zOndpbj0iaHR0cDovL3Y4
514527
LjFjLnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93aW5kb3dzIiB4bWxuczp4cz0iaHR0
515528
cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDov
516-
L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=}
529+
L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPg0KCTxvdXRwdXRQ
530+
YXJhbWV0ZXJzLz4NCjwvU2V0dGluZ3M+}
517531
},
518532
{0,0},
519533
{0,0},
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
{
2-
{216,0}
2+
{216,0,
3+
{80308,0}
4+
}
35
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +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+
{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}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
&НаКлиенте
2+
Перем КонтекстЯдра;
3+
4+
// { Plugin interface
5+
6+
&НаКлиенте
7+
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
8+
Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
9+
КонецФункции
10+
11+
&НаКлиенте
12+
Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
13+
КонтекстЯдра = КонтекстЯдраПараметр;
14+
КонецПроцедуры
15+
16+
&НаСервере
17+
Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
18+
Возврат Объект().ОписаниеПлагина(ВозможныеТипыПлагинов);
19+
КонецФункции
20+
21+
// } Plugin interface
22+
23+
// { Settings interface
24+
25+
&НаКлиенте
26+
Функция ПолучитьНастройку(Знач ПутьФайлаНастройки) Экспорт
27+
ФайлБраузера = Новый Файл(КонтекстЯдра.ИспользуемоеИмяФайла);
28+
Возврат ПолучитьНастройки(ФайлБраузера, ПутьФайлаНастройки);
29+
КонецФункции
30+
31+
// } Settings interface
32+
33+
&НаКлиенте
34+
Функция ПолучитьНастройки(Знач ФайлБраузера, Знач ПутьФайлаНастройки)
35+
ИмяФайла = ПутьФайлаНастройки; //"1smoke.json";
36+
37+
ПутьФайлаНастроек = СтрШаблон("%1%2", ФайлБраузера.Путь, ИмяФайла);
38+
ФайлНастроек = Новый Файл(ПутьФайлаНастроек);
39+
Если ФайлНастроек.Существует() Тогда
40+
ЧтениеJSON = Новый ЧтениеJSON;
41+
ЧтениеJSON.ОткрытьФайл(ПутьФайлаНастроек);
42+
43+
Настройки = ПрочитатьJSON(ЧтениеJSON, Ложь);
44+
Настройки = Новый ФиксированнаяСтруктура(Настройки);
45+
КонецЕсли;
46+
Возврат Настройки;
47+
КонецФункции
48+
49+
&НаСервере
50+
Функция Объект()
51+
Возврат РеквизитФормыВЗначение("Объект");
52+
КонецФункции
53+

0 commit comments

Comments
 (0)