Skip to content

Commit

Permalink
Корректный вывод ошибки в редактор, когда в подсценарий переданы лишн…
Browse files Browse the repository at this point in the history
…ие параметры. #1117
  • Loading branch information
Pr-Mex committed Jan 27, 2021
1 parent 3a57e0f commit a71d0fd
Showing 1 changed file with 43 additions and 15 deletions.
58 changes: 43 additions & 15 deletions lib/FeatureReader/FeatureReader/Ext/ObjectModule.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -913,10 +913,6 @@
КомментарииСценария = Элем.МассивКомментариев;
КонецЕсли;
КонецЦикла;
//Если ТегиСценария = Неопределено Тогда
// ВызватьИсключение ПолучитьТекстСообщенияПользователю("Ошибка парсинга фичи <" + ИмяФичи + ">. Не найден массив тегов.");
//КонецЕсли;


Если ТипЗнч(ДеревоСтроки.Родитель.ПроизвольныеЗначения) <> Тип("Структура") Тогда
ДеревоСтроки.Родитель.ПроизвольныеЗначения = Новый Структура;
Expand Down Expand Up @@ -1631,6 +1627,8 @@
ПараметрыКопирования.Вставить("ЗначенияПараметровДляЗаменыВоВложенномСценарии",ЗначенияПараметровДляЗаменыВоВложенномСценарии);
ПараметрыКопирования.Вставить("ЗначенияТаблицДляЗаменыВоВложенномСценарии",ЗначенияТаблицДляЗаменыВоВложенномСценарии);
ПараметрыКопирования.Вставить("ИдТаблицыДляКопирования",-1);
ПараметрыКопирования.Вставить("КудаКопировать", КудаКопировать);
ПараметрыКопирования.Вставить("ИмяФайла", ИмяФайла);

Если ЗначенияТаблицДляЗаменыВоВложенномСценарии <> Неопределено Тогда
ПустаяСтрокаДереваРазделитель = Неопределено;
Expand Down Expand Up @@ -1767,6 +1765,23 @@
ТекстСообщения = СтрЗаменить(ТекстСообщения,"%1",СтруктураПараметров.ИмяСценарияДляКопирования);
ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2",ПараметрыКопирования.ЗначенияПараметровДляЗаменыВоВложенномСценарии.Количество());
ТекстСообщения = СтрЗаменить(ТекстСообщения,"%3",ПараметрыКопирования.ЗначенияПараметровДляЗаменыВРодительскомСценарии.Количество());

СтруктураПараметров.БылиОшибкиЗагрузкиФич = Истина;
СтруктураПараметров.Вставить("ФичаЗагружена",Ложь);
СтруктураПараметров.Вставить("БылиОшибкиЗагрузкиФич",Истина);
СтруктураПараметров.Вставить("ОписаниеОшибки",ТекстСообщения);
СтруктураПараметров.ОшибкиЗагрузкиФич.Добавить(ТекстСообщения);

Если НЕ СтруктураПараметров.Свойство("ДанныеОшибокДляРедактора") Тогда
СтруктураПараметров.Вставить("ДанныеОшибокДляРедактора", Новый Массив);
КонецЕсли;
ДанныеОшибокДляРедактора = СтруктураПараметров.ДанныеОшибокДляРедактора;

ДанныеОшибкиДляРедактора = ДанныеОшибкиДляРедактора(ПараметрыКопирования.КудаКопировать.НомерСтрокиВФиче,
ПараметрыКопирования.ИмяФайла, ТекстСообщения);

ДанныеОшибокДляРедактора.Добавить(ДанныеОшибкиДляРедактора);

ВызватьИсключение ТекстСообщения;
КонецЕсли;

Expand Down Expand Up @@ -2975,11 +2990,15 @@
ТекстСообщения = СтрЗаменить(ТекстСообщения,"%2",ОжидаемоеКлючевоеСлово);
ТекстСообщения = СтрЗаменить(ТекстСообщения,"%3",СтрОшибки);
ТекстСообщения = СтрЗаменить(ТекстСообщения,"%4",ПредыдущееКлючевоеСлово);
ДанныеОшибки = Новый Структура;
ДанныеОшибки.Вставить("НомерСтроки", НомСтр);
ДанныеОшибки.Вставить("ИмяФайла", ИмяФайла);
ДанныеОшибки.Вставить("ОписаниеОшибки", ТекстСообщения);
СтруктураПараметров.Вставить("ДанныеОшибки", ДанныеОшибки);

Если НЕ СтруктураПараметров.Свойство("ДанныеОшибокДляРедактора") Тогда
СтруктураПараметров.Вставить("ДанныеОшибокДляРедактора", Новый Массив);
КонецЕсли;
ДанныеОшибокДляРедактора = СтруктураПараметров.ДанныеОшибокДляРедактора;

ДанныеОшибкиДляРедактора = ДанныеОшибкиДляРедактора(НомСтр, ИмяФайла, ТекстСообщения);
ДанныеОшибокДляРедактора.Добавить(ДанныеОшибкиДляРедактора);

ОписаниеОшибки = ТекстСообщения;
//тут не надо ставить признак удаления фичи из дерева, чтобы можно было увидеть в дереве проблему
//СтруктураПараметров.Вставить("УдалитьСтрокуФичиИзДерева",Истина);
Expand Down Expand Up @@ -3033,7 +3052,13 @@


Если ТаблицаШагов.Количество() > 0 Тогда
ЗакрытьПредыдущийСценарий(ИмяФичи,ИмяФайла,ТекущийТипСценария,ПредыдущееКлючевоеСлово,"scenario",ДеревоСтроки,ОписаниеСценария,ТаблицаШагов,ТаблицаИзвестныхStepDefinition,ТаблицаСтрокПримеров,НомерСтрокиНачалоСценария,ТаблицаУжеСуществующихСценариев,СтруктураПараметров,МассивСценариевЗащитаОтЗацикливанияКеш,ЭтоЗагрузкаПодчиненногоСценария,ПередаваемыеТаблицы,ИмяЗагружаемогоСценария);
Попытка
ЗакрытьПредыдущийСценарий(ИмяФичи,ИмяФайла,ТекущийТипСценария,ПредыдущееКлючевоеСлово,"scenario",ДеревоСтроки,ОписаниеСценария,ТаблицаШагов,ТаблицаИзвестныхStepDefinition,ТаблицаСтрокПримеров,НомерСтрокиНачалоСценария,ТаблицаУжеСуществующихСценариев,СтруктураПараметров,МассивСценариевЗащитаОтЗацикливанияКеш,ЭтоЗагрузкаПодчиненногоСценария,ПередаваемыеТаблицы,ИмяЗагружаемогоСценария);
Исключение
СтруктураПараметров.Вставить("БылиОшибкиЗагрузкиФич", Истина);
СтруктураПараметров.ОшибкиЗагрузкиФич.Добавить(ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;
КонецЕсли;

Если СтруктураПараметров.КоличествоЗагруженныхСценариев = 0 Тогда
Expand All @@ -3045,6 +3070,14 @@

КонецФункции

Функция ДанныеОшибкиДляРедактора(НомерСтроки, ИмяФайла, ОписаниеОшибки)
Результат = Новый Структура;
Результат.Вставить("НомерСтроки", НомерСтроки);
Результат.Вставить("ИмяФайла", ИмяФайла);
Результат.Вставить("ОписаниеОшибки", ОписаниеОшибки);
Возврат Результат;
КонецФункции

Функция БылиПовторыИменСнипетов(ТаблицаУжеСуществующихСценариев,ТаблицаИзвестныхStepDefinition)
КопияТаблицаУжеСуществующихСценариев = ТаблицаУжеСуществующихСценариев.Скопировать();
КопияТаблицаУжеСуществующихСценариев.Колонки.Добавить("СтрокаДляПоиска");
Expand Down Expand Up @@ -3128,16 +3161,13 @@

ДобавитьКолонкуСнипетаВТаблицаУжеСуществующихСценариев(СтруктураПараметров.ТаблицаУжеСуществующихСценариев,СтруктураПараметров);


Если НЕ СтруктураПараметров.Свойство("БылаПроверкаНаПовторыСнипетов") Тогда
Если БылиПовторыИменСнипетов(СтруктураПараметров.ТаблицаУжеСуществующихСценариев,ТаблицаИзвестныхStepDefinition) Тогда
//ВызватьИсключение ПолучитьТекстСообщенияПользователю("Были конфликты в именах снипетов.");
Сообщить(ПолучитьТекстСообщенияПользователю("Были конфликты в именах снипетов."));
КонецЕсли;
СтруктураПараметров.Вставить("БылаПроверкаНаПовторыСнипетов",Истина);
КонецЕсли;


ОписаниеОшибки = "";
ПередаваемыеТаблицы = Неопределено;
БылаЗаменаТаблицыПараметровВСтруктуреСценария = Ложь;
Expand Down Expand Up @@ -4291,8 +4321,6 @@
ВызватьИсключение ПолучитьТекстСообщенияПользователю("Ошибка в ДобавитьStepDefinitionВТекстМодуля.");
КонецЕсли;



УжеЕсть = Ложь;
Для Каждого СтрТелоМодуля Из ТелоМодуля Цикл
Стр = СокрЛП(СтрТелоМодуля.Стр);
Expand Down

0 comments on commit a71d0fd

Please sign in to comment.