Skip to content

Commit

Permalink
Параметр автоттеста и возвращено кеширование
Browse files Browse the repository at this point in the history
  • Loading branch information
Rokoko authored and Rokoko committed Apr 2, 2021
1 parent ccf4fa3 commit cc3e266
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 30 deletions.
Binary file modified FormCodeGenerator/bin/FormGenerator.epf
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@
ПараметрыПолученияДанных.Вставить("ИмяМодуля", Объект.ИмяМодуля);
ПараметрыПолученияДанных.Вставить("АдресВнешнейОбработкиВоВременномХранилище", Объект.АдресВнешнейОбработкиВоВременномХранилище);
ПараметрыФормы = Новый Структура("РедакторФорм", ПараметрыПолученияДанных);
ПараметрыФормы.Вставить("Основание", "АвтоТест");

УИД = Новый УникальныйИдентификатор;
ДвоичныеДанные = Новый ДвоичныеДанные(Объект.ИспользуемоеИмяФайла);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@

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

Процедура СформироватьКодПоСтрокам(ДеревоЭлементов, ПараметрыФорм)
Процедура СформироватьКодПоСтрокам(ДеревоЭлементов, ПараметрыФорм, КешСоответствияПредставленийТипов = Неопределено)

ФормаОбразец = ПараметрыФорм.ФормаОбразец;
ИмяМодуля = ПараметрыФорм.ИмяМодуля;
Expand All @@ -92,7 +92,7 @@
СтрокаЭлемента = ДеревоЭлементов.Строки[КоличествоСтрок - Индекс];
ИмяЭлемента = СтрокаЭлемента.Имя;
ТекЭлемент = ФормаОбразец.Элементы[ИмяЭлемента];
ТипСтрокой = ПолучитьСтроковоеПредставлениеТипа(ТипЗнч(ТекЭлемент));
ТипСтрокой = ПолучитьСтроковоеПредставлениеТипа(ТипЗнч(ТекЭлемент), КешСоответствияПредставленийТипов);
ТипЭлемента = СтрШаблон(НСтр("ru = 'Тип(""%1"")'"), ТипСтрокой);
Родитель = ?(СтрокаЭлемента.Родитель <> Неопределено, НСтр("ru = 'ЭтаФорма.Элементы.'") + СтрокаЭлемента.Родитель.Имя, НСтр("ru = 'Неопределено'"));
ТекРодительЭлемента = РодительЭлемента(ФормаОбразец, СтрокаЭлемента);
Expand All @@ -107,12 +107,12 @@

МетодыТипов = МетодыДобавленияЭлементовНаФорму();

ЭтоПолеРеквизитОбъекта = ПолеЭтоРеквизитОбъекта(ТекЭлемент, ТекРодительЭлемента);
ЭтоПолеРеквизитОбъекта = ПолеЭтоРеквизитОбъекта(ТекЭлемент, ТекРодительЭлемента, КешСоответствияПредставленийТипов);
ФильтроватьМетодыДобавленияПолейФормы(МетодыТипов, ЭтоПолеРеквизитОбъекта);

Если МетодыТипов.Свойство(ТипСтрокой) Тогда

ИмяМетода = ИмяМетодаРассчитнноеПоВесу(СтруктураДанныхДефолтногоЭлемента, МетодыТипов, ТекЭлемент, ИмяМетода);
ИмяМетода = ИмяМетодаРассчитнноеПоВесу(СтруктураДанныхДефолтногоЭлемента, МетодыТипов, ТекЭлемент, ИмяМетода, КешСоответствияПредставленийТипов);

Если ТипСтрокой = "ГруппаФормы" Тогда
СтрокаЭлемента.ТекстНачало = ТекстНовыйКонтекст;
Expand Down Expand Up @@ -181,15 +181,15 @@

СледующийЭлемент = "ЭтаФорма.Элементы."+СтрокаЭлемента.Имя;

СформироватьКодПоСтрокам(СтрокаЭлемента, ПараметрыФорм);
СформироватьКодПоСтрокам(СтрокаЭлемента, ПараметрыФорм, КешСоответствияПредставленийТипов);
КонецЦикла;

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


Функция ИмяМетодаРассчитнноеПоВесу(СтруктураДанныхДефолтногоЭлемента, МетодыДобавленияЭлементов, ТекЭлемент, ИмяМетода)
Функция ИмяМетодаРассчитнноеПоВесу(СтруктураДанныхДефолтногоЭлемента, МетодыДобавленияЭлементов, ТекЭлемент, ИмяМетода, КешСоответствияПредставленийТипов)

ТипЭлементаСтрокой = ПолучитьСтроковоеПредставлениеТипа(ТипЗнч(ТекЭлемент));
ТипЭлементаСтрокой = ПолучитьСтроковоеПредставлениеТипа(ТипЗнч(ТекЭлемент), КешСоответствияПредставленийТипов);

ИмяМетода = ИмяМетодаПоУмолчанию(ТипЭлементаСтрокой, МетодыДобавленияЭлементов);

Expand Down Expand Up @@ -415,14 +415,14 @@

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

Функция ПолеЭтоРеквизитОбъекта(Знач ТекЭлемент, Знач ТекРодительЭлемента)
Функция ПолеЭтоРеквизитОбъекта(Знач ТекЭлемент, Знач ТекРодительЭлемента, КешСоответствияПредставленийТипов)

ТипРодителяСтрокой = Неопределено;
Если ТекРодительЭлемента <> Неопределено Тогда
ТипРодителяСтрокой = ПолучитьСтроковоеПредставлениеТипа(ТипЗнч(ТекРодительЭлемента));
ТипРодителяСтрокой = ПолучитьСтроковоеПредставлениеТипа(ТипЗнч(ТекРодительЭлемента), КешСоответствияПредставленийТипов);
КонецЕсли;

ТипСтрокой = ПолучитьСтроковоеПредставлениеТипа(ТипЗнч(ТекЭлемент));
ТипСтрокой = ПолучитьСтроковоеПредставлениеТипа(ТипЗнч(ТекЭлемент), КешСоответствияПредставленийТипов);
ЭтоПолеРеквизитОбъекта = Ложь;
Если ТипСтрокой = "ПолеФормы" Тогда

Expand Down Expand Up @@ -460,6 +460,7 @@
Процедура СформироватьДеревоСРеквизитамиФормы(ДеревоРеквизитов, ТекущийПуть, Форма, ТекущийОбъект, СтруктураПутейКРеквизитам) Экспорт

КоллекцияРеквизитов = Форма.ПолучитьРеквизиты(ТекущийПуть);
КэшСоответствиеПредставленийТипов = Неопределено;

Для каждого ТекРеквизит Из КоллекцияРеквизитов Цикл

Expand All @@ -481,7 +482,7 @@
ЗаполнитьЗначенияСвойств(СтруктураСвойств, РеквизитФормы);
КонецЕсли;

ТипРеквизита = СтроковоеПредставлениеОписанияТипа(ТекРеквизит.ТипЗначения);
ТипРеквизита = СтроковоеПредставлениеОписанияТипа(ТекРеквизит.ТипЗначения, КэшСоответствиеПредставленийТипов);

ШаблонНовыйРеквизит = "НовыйРеквизит = Новый РеквизитФормы(""%1"", %2, %3, %4, %5);";

Expand Down Expand Up @@ -1213,9 +1214,13 @@

КонецФункции // ПолучитьДопустимыеТипы()

Функция ПолучитьСтроковоеПредставлениеТипа(ПроверяемыйТип)
Функция ПолучитьСтроковоеПредставлениеТипа(ПроверяемыйТип, КэшСоответствиеПредставленийТипов = Неопределено)

ПредставлениеТипа = НовоеСоответствиеПредставленийТипов().Получить(ПроверяемыйТип);
Если КэшСоответствиеПредставленийТипов = Неопределено Тогда
КэшСоответствиеПредставленийТипов = НовоеСоответствиеПредставленийТипов();
КонецЕсли;

ПредставлениеТипа = КэшСоответствиеПредставленийТипов.Получить(ПроверяемыйТип);

Если ПредставлениеТипа = Неопределено Тогда
//Сообщить("Не определен тип "+ПроверяемыйТип);
Expand All @@ -1225,10 +1230,16 @@

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

Функция СтроковоеПредставлениеОписанияТипа(ПроверяемоеОписаниеТипов)
Функция СтроковоеПредставлениеОписанияТипа(ПроверяемоеОписаниеТипов, КэшСоответствиеПредставленийТипов)

Если ПроверяемоеОписаниеТипов.Типы().Количество() > 0 Тогда
ТипСтр = ПолучитьСтроковоеПредставлениеТипа(ПроверяемоеОписаниеТипов.Типы()[0], КэшСоответствиеПредставленийТипов);
Иначе
ТипСтр = "";
КонецЕсли;

Если ПроверяемоеОписаниеТипов.Типы().Количество() > 0 Тогда
Возврат "Новый ОписаниеТипов("""+ПолучитьСтроковоеПредставлениеТипа(ПроверяемоеОписаниеТипов.Типы()[0])+""")";
Возврат "Новый ОписаниеТипов("""+ТипСтр+""")";
Иначе
Возврат "Новый ОписаниеТипов()";
КонецЕсли;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,8 @@
ПараметрыПолученияДанных.Вставить("ИмяМодуля", Объект.ИмяМодуля);
ПараметрыПолученияДанных.Вставить("АдресВнешнейОбработкиВоВременномХранилище", Объект.АдресВнешнейОбработкиВоВременномХранилище);
ПараметрыФормы = Новый Структура("РедакторФорм", ПараметрыПолученияДанных);
ПараметрыФормы.Вставить("Основание", "АвтоТест");


УИД = Новый УникальныйИдентификатор;
ДвоичныеДанные = Новый ДвоичныеДанные(Объект.ИспользуемоеИмяФайла);
Expand Down
Loading

0 comments on commit cc3e266

Please sign in to comment.