OneScript icon indicating copy to clipboard operation
OneScript copied to clipboard

ЗагрузитьСценарий и ЗагрузитьСценарийИзСтроки теряют аннотации полей

Open sfaqer opened this issue 3 years ago • 0 comments

Опишите ошибку В случае если в загружаемом сценарии есть аннотации полей, то после загрузки сценария методами "ЗагрузитьСценарий" и "ЗагрузитьСценарийИзСтроки" аннотации полей будут потеряны

Воспроизведение ошибки

&Тест
Процедура ПроверитьАннотацииПолейЗагрузитьСценарий() Экспорт
	
	Файл = ПолучитьИмяВременногоФайла(".os");

	Запись = Новый ЗаписьТекста(Файл);
	Запись.Записать(ТекстСценария());
	Запись.Закрыть();

	Сценарий = ЗагрузитьСценарий(Файл);

	УдалитьФайлы(Файл);

	ПроверитьАннотацииПоляСценария(Сценарий);
	
КонецПроцедуры

&Тест
Процедура ПроверитьАннотацииПолейЗагрузитьСценарийИзСтроки() Экспорт
	
	Сценарий = ЗагрузитьСценарийИзСтроки(ТекстСценария());

	ПроверитьАннотацииПоляСценария(Сценарий);

КонецПроцедуры

Функция ТекстСценария()

	Возврат
	"&АннотацияБезПараметра
	|&АннотацияСПараметром(""Значение"")
	|&АннотацияСИменованнымПараметром(ИмяПараметра = ""Значение"")
	|Перем Поле Экспорт;";

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

Процедура ПроверитьАннотацииПоляСценария(Сценарий)
	
	Рефлектор = Новый Рефлектор();

	ТаблицаСвойств = Рефлектор.ПолучитьТаблицуСвойств(Сценарий);

	Если ТаблицаСвойств.Количество() <> 1 Тогда
		ВызватьИсключение "Ожидали, что в таблице свойств будет одно свойство а это не так";
	КонецЕсли;

	КоличествоАннотаций = ТаблицаСвойств[0].Аннотации.Количество();

	Если КоличествоАннотаций <> 3 Тогда
		ВызватьИсключение "Ожидали, что в таблице аннотаций свойства будет 3 аннотации а их там " + КоличествоАннотаций;
	КонецЕсли;
	
	ИмяАннотации = ТаблицаСвойств[0].Аннотации[0].Имя;

	Если ИмяАннотации <> "АннотацияБезПараметра" Тогда
		ВызватьИсключение "Ожидали, что первой аннотацией свойства будет АннотацияБезПараметра а там " + ИмяАннотации;
	КонецЕсли;

	ИмяАннотации = ТаблицаСвойств[0].Аннотации[1].Имя;

	Если ИмяАннотации <> "АннотацияСПараметром" Тогда
		ВызватьИсключение "Ожидали, что второй аннотацией свойства будет АннотацияСПараметром а там " + ИмяАннотации;
	КонецЕсли;

	КоличествоПараметров = ТаблицаСвойств[0].Аннотации[1].Параметры.Количество();

	Если КоличествоПараметров <> 1 Тогда
		ВызватьИсключение "Ожидали, что количество параметров второй аннотации будет равно 1 а их там " + КоличествоПараметров;
	КонецЕсли;

	ПараметрАннотации = ТаблицаСвойств[0].Аннотации[1].Параметры[0];

	Если ПараметрАннотации.Имя <> Неопределено Или ПараметрАннотации.Значение <> "Значение" Тогда

		ВызватьИсключение 
			"Ожидали, что у параметра второй аннотации будет имя Неопределено и строка Значение в поле значение, а там:
			| Имя = " + ПараметрАннотации.Имя + " Значение = " + ПараметрАннотации.Значение;

	КонецЕсли;

	ИмяАннотации = ТаблицаСвойств[0].Аннотации[2].Имя;

	Если ИмяАннотации <> "АннотацияСИменованнымПараметром" Тогда
		ВызватьИсключение "Ожидали, что третьей аннотацией свойства будет АннотацияСИменованнымПараметром а там " + ИмяАннотации;
	КонецЕсли;

	КоличествоПараметров = ТаблицаСвойств[0].Аннотации[2].Параметры.Количество();

	Если КоличествоПараметров <> 1 Тогда
		ВызватьИсключение "Ожидали, что количество параметров третьей аннотации будет равно 1 а их там " + КоличествоПараметров;
	КонецЕсли;

	ПараметрАннотации = ТаблицаСвойств[0].Аннотации[2].Параметры[0];

	Если ПараметрАннотации.Имя <> "ИмяПараметра" Или ПараметрАннотации.Значение <> "Значение" Тогда

		ВызватьИсключение 
			"Ожидали, что у параметра третьей аннотации будет имя ИмяПараметра и строка Значение в поле значение, а там:
			| Имя = " + ПараметрАннотации.Имя + " Значение = " + ПараметрАннотации.Значение;

	КонецЕсли;
	
КонецПроцедуры

Ожидаемое поведение Ожидается что тест выше проходит

Окружение

  • ОС: Win10 21H2 19044.1766
  • Версия: 1Script Execution Engine. Version 1.8.0.3

Дополнительная информация

sfaqer avatar Jul 12 '22 03:07 sfaqer