Команда "Извлечь метод" подхватывает больше строк чем выделено

Добавил: tormozit, 28 октября 2020 08:57, обновлено: 28 октября 2020 08:57

Раздел: Баги


В ИР Обработка.ирКонсольКода.Форма.Форма хочу из метода

Процедура КоманднаяПанельВстроенныйЯзыкВычислитьВыражение(Кнопка)
	
	#Если Сервер И Не Сервер Тогда
	    ПолеВстроенногоЯзыка = Обработки.ирКлсПолеТекстовогоДокументаСКонтекстнойПодсказкой.Создать();
	#КонецЕсли
	КорневоеЗначение = Неопределено;
	ТекущееВыражение = ЭлементыФормы.ВстроенныйЯзык.ВыделенныйТекст;
	Если СтрДлина(ТекущееВыражение) = 0 Тогда
		ТекущееВыражение = ПолеВстроенногоЯзыка.ПолучитьТекущееОбъектноеВыражение();
	КонецЕсли; 
	КорневоеИмя = ирОбщий.ПервыйФрагментЛкс(ТекущееВыражение);
	СтрокаПараметра = Параметры.Найти(Нрег(КорневоеИмя), "НИмя");
	ИсследовательОбъектов = ирОбщий.ПолучитьОбъектПоПолномуИмениМетаданныхЛкс("Обработка.ирИсследовательОбъектов");
	#Если Сервер И Не Сервер Тогда
	    ИсследовательОбъектов = Обработки.ирИсследовательОбъектов.Создать();
	#КонецЕсли
	//Если СтрокаПараметра <> Неопределено Тогда
	//	ЭлементыФормы.Параметры.ТекущаяСтрока = СтрокаПараметра;
	//	Если СтрокаПараметра <> Неопределено Тогда
	//		КорневоеЗначение = СтрокаПараметра.Значение;
	//	КонецЕсли; 
	//	ИсследовательОбъектов.ИсследоватьОбъект(КорневоеЗначение, , КорневоеИмя, ирОбщий.ПервыйФрагментЛкс(Сред(ТекущееВыражение, СтрДлина(КорневоеИмя) + 2)));
	//ИначеЕсли Прав(ТекущееВыражение, 1) <> "(" Тогда 
	//	ИсследовательОбъектов.ВычислитьВыражение(ТекущееВыражение);
	//КонецЕсли; 
	НаСервере = КонтекстВыполнения <> "Клиент";
	СтруктураПараметров = Новый Структура("Результат");
	АлгоритмВычисления = "";
	Для Каждого СтрокаПараметра Из Параметры Цикл
		СтруктураПараметров.Вставить(СтрокаПараметра.Имя, СтрокаПараметра.Значение);
		АлгоритмВычисления = АлгоритмВычисления + СтрокаПараметра.Имя + " = _АлгоритмОбъект." + СтрокаПараметра.Имя + ";" + Символы.ПС;
	КонецЦикла;
	АлгоритмВычисления = АлгоритмВычисления + " _АлгоритмОбъект.Результат = " + ТекущееВыражение + ";";
	ирОбщий.ВыполнитьАлгоритмВКонтекстеЛкс(АлгоритмВычисления, СтруктураПараметров, НаСервере);
	КорневоеЗначение = СтруктураПараметров.Результат;
	ИсследовательОбъектов.ИсследоватьОбъект(КорневоеЗначение,, ТекущееВыражение);
	
КонецПроцедуры

Выделить фрагмент как на снимке. Но команда подхватывает лишнюю строку.

Image https://turboconf.ru/Content/Files/1165DFE919CB05373C26DFFD93BA26DF9DD382C5/Clip_175307.png

К списку тем

Комментарии

tormozit
26 ноября 2020 08:13: #1

Регулярно спотыкаюсь об этот баг.
Вот еще пример

Схема = ирОбщий.СоздатьСхемуПоТаблицамЗначенийЛкс(Новый Структура("ТаблицаЗначений", ТаблицаЗначений));
Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
Компоновщик.Восстановить();

Clip_185892.png
Clip_185898.png


TurboConf

Расширение возможностей

Конфигуратора 1С

Скачать

Бесплатный пробный период 14 дней