При первом вызове команды "Форматировать текст" иногда вставка нового тела метода выполняется некорректно

tormozit Закрыто

При первом в окне модуля вызове команды "Форматировать текст" иногда вставка нового тела метода выполняется некорректно.
Если тут же отменить изменения текста и выполнить команду снова, то она выполняется корректно.

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
             
    // СтандартныеПодсистемы.Свойства
    Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
        ОбновитьЭлементыДополнительныхРеквизитов();
        УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
    КонецЕсли;
    // Конец СтандартныеПодсистемы.Свойства
    
    Если ИмяСобытия = "УчетныеДокументы.ОповещениеОбИзменении" Тогда

        ЭтотОбъект.МодифицированностьУчетныеДокументы = Истина;
        ЭтотОбъект.Модифицированность = Истина;
        ОбновитьУчетныеДокументы();
        Если Параметр.Свойство("ИзмененныеДокументы") И ЗначениеЗаполнено(Параметр.ИзмененныеДокументы) Тогда
        	Если ТипЗнч(Параметр.ИзмененныеДокументы) = Тип("Массив") Тогда
        		СтрокаТекущийДокумент = Неопределено;
        		Параметр.Свойство("ТекущийДокумент", СтрокаТекущийДокумент);
	            СтрокиДокументов = ЭтотОбъект.УчетныеДокументы.НайтиСтроки(Новый Структура("УчетныйДокумент", СтрокаТекущийДокумент));
	            Если СтрокиДокументов.Количество()>0 Тогда
	                Элементы.УчетныеДокументы.ТекущаяСтрока = СтрокиДокументов[0].ПолучитьИдентификатор();
	            КонецЕсли;
                Для Каждого ТекущийДокумент Из Параметр.ИзмененныеДокументы Цикл
		            СтрокиДокументов = ЭтотОбъект.УчетныеДокументы.НайтиСтроки(Новый Структура("УчетныйДокумент", ТекущийДокумент));
		            Если СтрокиДокументов.Количество()>0 Тогда
		            	ТекущаяСтрока = СтрокиДокументов[0].ПолучитьИдентификатор();
	                	Элементы.УчетныеДокументы.ВыделенныеСтроки.Добавить(ТекущаяСтрока);
		            КонецЕсли;
                КонецЦикла;
        	Иначе
	            СтрокиДокументов = ЭтотОбъект.УчетныеДокументы.НайтиСтроки(Новый Структура("УчетныйДокумент", Параметр.ИзмененныеДокументы));
	            Если СтрокиДокументов.Количество()>0 Тогда
	                Элементы.УчетныеДокументы.ТекущаяСтрока = СтрокиДокументов[0].ПолучитьИдентификатор();
	            КонецЕсли;
        	КонецЕсли;
        КонецЕсли;        
    КонецЕсли;
    
    Если ОбработкаОповещенияКлиент.ОповещаемыйОбъектПодписанНаСобытие(ИмяСобытия, ЭтотОбъект) Тогда 
		ОбработкаОповещенияКлиент.ОбработкаОповещенияTMS(Параметр, Источник, ЭтотОбъект);
	КонецЕсли;
    
КонецПроцедуры

Комментарии

tormozit
#1, ред. 11 октября 2024 09:14

Еще пример. Воспроизводился до переоткрытия модуля.

Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	//// СтандартныеПодсистемы.Свойства
	//Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
	//    ОбновитьЭлементыДополнительныхРеквизитов();
	//    УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	//КонецЕсли;
	//// Конец СтандартныеПодсистемы.Свойства
	//
	//Если ИмяСобытия = "УчетныеДокументы.ОповещениеОбИзменении" Тогда
	//    ЭтотОбъект.МодифицированностьУчетныеДокументы = Истина;
	//     ЭтотОбъект.Модифицированность = Истина;
	//    ОбновитьУчетныеДокументы();
	//    Если Параметр.Свойство("ИзмененныеДокументы") И ЗначениеЗаполнено(Параметр.ИзмененныеДокументы) Тогда
	//    	Если ТипЗнч(Параметр.ИзмененныеДокументы) = Тип("Массив") Тогда
	//    		СтрокаТекущийДокумент = Неопределено;
	//    		Параметр.Свойство("ТекущийДокумент", СтрокаТекущийДокумент);
	//            СтрокиДокументов = ЭтотОбъект.УчетныеДокументы.НайтиСтроки(Новый Структура("УчетныйДокумент", СтрокаТекущийДокумент));
	//            Если СтрокиДокументов.Количество()>0 Тогда
	//                  Элементы.УчетныеДокументы.ТекущаяСтрока = СтрокиДокументов[0].ПолучитьИдентификатор();
	//            КонецЕсли;
	//            Для Каждого ТекущийДокумент Из Параметр.ИзмененныеДокументы Цикл
	//	            СтрокиДокументов = ЭтотОбъект.УчетныеДокументы.НайтиСтроки(Новый Структура("УчетныйДокумент", ТекущийДокумент));
	//	              Если СтрокиДокументов.Количество()>0 Тогда
	//	            	ТекущаяСтрока = СтрокиДокументов[0].ПолучитьИдентификатор();
	//                	Элементы.УчетныеДокументы.ВыделенныеСтроки.Добавить(ТекущаяСтрока);
	//	            КонецЕсли;
	//            КонецЦикла;
	//    	Иначе
	//            СтрокиДокументов = ЭтотОбъект.УчетныеДокументы.НайтиСтроки(Новый Структура("УчетныйДокумент", Параметр.ИзмененныеДокументы));
	//            Если СтрокиДокументов.Количество()>0 Тогда
	//                Элементы.УчетныеДокументы.ТекущаяСтрока = СтрокиДокументов[0].ПолучитьИдентификатор();
	//            КонецЕсли;
	//    	КонецЕсли;
	//    КонецЕсли;
	//КонецЕсли;
	//
	//Если ОбработкаОповещенияКлиент.ОповещаемыйОбъектПодписанНаСобытие(ИмяСобытия, ЭтотОбъект) Тогда
	//	ОбработкаОповещенияКлиент.ОбработкаОповещенияTMS(Параметр, Источник, ЭтотОбъект);
	//КонецЕсли;
КонецПроцедуры

tormozit изменил статус на Открыто


tormozit
#2, 11 октября 2024 09:17

Похоже метод Турбоконф.ВыделитьТекст() иногда работает некорректно. Фактически выделенный диапазон в этих случаях не соответствует устанавливаемому и возвращаемому методом ТурбоКонф.ПолучитьТекстДокумента().


bolsun
#3, 11 октября 2024 12:43

(2) tormozit, у меня не воспроизводится. Нужен ролик, лог, пример модуля в текстовом файле.


tormozit
#4, 11 октября 2024 13:16

(3) bolsun, Создал эту заявку для себя и чтобы другие знали что проблема мне известна. Проблема старинная. Пока не уверен что проблема в Турбоконфе. Если появятся веские доказательства, призову тебя. Воспроизводить надежно пока не научился.


tormozit
#5, ред. 11 октября 2024 19:31

Ошибка платформы. При вставке текста из буфера, начинающегося с первой пустой строки перед ним иногда вставляется плавающее число пробелов. Вероятно вставлять нужно тоже в пустую строку.
Из-за этого у меня сбивались координаты последующей полезной вставки.


tormozit
#6, 13 октября 2024 19:53

Исправлено в 1.76


tormozit
#7, 13 октября 2024 19:54

tormozit изменил статус на Закрыто


Для вставки изображения или файла, перетащите его в поле редактора или вставьте файл из буфера