OneScript
OneScript copied to clipboard
ЗагрузитьСценарий и ЗагрузитьСценарийИзСтроки теряют аннотации полей
Опишите ошибку В случае если в загружаемом сценарии есть аннотации полей, то после загрузки сценария методами "ЗагрузитьСценарий" и "ЗагрузитьСценарийИзСтроки" аннотации полей будут потеряны
Воспроизведение ошибки
&Тест
Процедура ПроверитьАннотацииПолейЗагрузитьСценарий() Экспорт
Файл = ПолучитьИмяВременногоФайла(".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
Дополнительная информация