Опять прыжки каретки в модуле с нестандартными концами строк при вставке шаблона <?>

tormozit Открыто Средний

Ранее уже выяснили что в этом модуле есть "нестандартные" концы строк https://turboconf.ru/Tasks/9752
Все же прошу подумать над решением проблемы некорректного позиционирования каретки в модулях с нестандартными концами строк.
Регулярно замечаю подобные проблемы в разных модулях разных конфигураций. Не уверен конечно, что там везде однотипная причина, но теперь уже думаю что это вполне вероятно.

Ссылка скрыта
Ссылка скрыта

Комментарии

tormozit
#1, 10 октября 2024 00:35

Если будет очень сложно сделать красивое решение, то хотя бы нужно предупреждать пользователя о проблеме и давать рекомендацию по ее решению.


bolsun
#2, ред. 10 октября 2024 11:44

(1) tormozit,
Проблема в том, что даже если в модуле переносы строк неправильные, то платформа отдает через UIAutomation текст, удаляя все символы \r.

Через копировании в буфер тоже исправляет переносы, но если сохранить модуль в файл, то видим проблему

Поэтому я не могу определить, что в модуле есть переносы строки в стиле Linux.

И в случае отсутствия в тексте \r, метод UIAutomation будет неправильно выделять позицию.


tormozit
#3, 10 октября 2024 12:10

Тогда возможно получится где то перейти на использование относительных позиций вместо абсолютных. Если я правильно понял сейчас ты берешь абсолютную позицию и считаешь сколько до нее строк и затем номер колонки. Но можно же в случае вставки шаблона брать позицию относительно начальной позиции вставки и считать на сколько строк и колонок нужно сместить каретку.


bolsun
#4, 10 октября 2024 12:19

(3) tormozit, SelectText работает в абсолютных значениях. Если в тексте пропущен \r он переместит на лишнюю позицию.


bolsun
#5, ред. 10 октября 2024 12:26

(4) конкретно для шаблона <?> можно попробовать реализовать смещением относительно исходной позиции, надо пробовать.


bolsun
#6, 10 октября 2024 12:28

Но в других методах это может не работать и гарантии 100% тоже не даст, если между строками шаблона отсутствуют символы \r. Поэтому лучше как-то попытаться определить, что в модуле нарушено форматирование и вывести уведомление.


tormozit
#7, ред. 11 октября 2024 21:53

(2) bolsun, в событии ПриПолученииДанныхТ9 добавил такое условие

	Если Найти(ТекстМодуля, Символы.ВК + Символы.ВК) > 0 Тогда
		Сообщить("Жунь");
	КонецЕсли;

Оно не срабатывает. Значит я не смогу "увидеть" наличие этих символов и уведомить пользователя.


bolsun
#8, ред. 16 октября 2024 00:14

(7) tormozit, платформа сама исправляет такие последовательности при получении текста через UIAutomation либо через буфер и добавляет символы \r. На текущий момент, определить что в модуле нарушена система переносов строк не представляется возможным.


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