Расширение поля формы для поля ввода.ВыделенныйТекст

Свойства · SelectedText

Тип: Строка. Содержит выделенный пользователем текст поля ввода на момент чтения свойства. При записи в данное свойство нового текста этот текст заменяет текст, выделенный в настоящий момент. При этом выделение сбрасывается.

Полное описание, параметры и ограничения

Расширение поля формы для поля ввода.ВыделенныйТекст (Form field extension for a text box.SelectedText)

Расширение поля формы для поля ввода (Form field extension for a text box)

ВыделенныйТекст (SelectedText)

Доступен, начиная с версии 8.2.

Использование:
Чтение и запись.
Описание:
Тип: Строка.
Содержит выделенный пользователем текст поля ввода на момент чтения свойства.
При записи в данное свойство нового текста этот текст заменяет текст, выделенный в настоящий момент. При этом выделение сбрасывается.
Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Примечание:
Не используется, если поле расположено в таблице.
Использование в версии:

Доступен, начиная с версии 8.2.

Методическая информация

Практические примеры

Заменить выделенное слово в управляемом поле

В собственном описании Книга/Ручка выделяем первое слово мышью. Возвращаем реальные границы и заменяем только это выделение.

Где и как запускать

Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.

Подготовка

  1. Создайте отдельную учебную внешнюю обработку с пустой управляемой основной формой. Каждую задачу запускайте в своей копии формы.

  2. Не добавляйте вручную реквизит ЗначениеПримера, поле ПолеПримера и команду УчебноеДействие: их создаст код.

  3. В свойствах формы → События свяжите ПриСозданииНаСервере с одноимённой процедурой. Вставьте весь модуль, включая клиентские и серверные процедуры.

  4. Сохраните учебную EPF и откройте через Файл → Открыть в тонком или толстом клиенте Windows. Рабочие данные не читаются и не записываются.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Новые = Новый Массив;
    ТипРеквизита = Новый ОписаниеТипов("Строка");
    Новые.Добавить(Новый РеквизитФормы("ЗначениеПримера", ТипРеквизита));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    ЭтаФорма.ЗначениеПримера = "Книга" + Символы.ПС + "Ручка";
    Поле = Элементы.Добавить("ПолеПримера", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеВвода;
    Поле.ПутьКДанным = "ЗначениеПримера";
    Поле.Заголовок = "Заменить выделенное слово в управляемом поле";
    Поле.МногострочныйРежим = Истина;
    Поле.АвтоПереносСтрок = Истина;
    Поле.РасширенноеРедактирование = Истина;
    Поле.Высота = 4;
    Поле.Ширина = 50;

    КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
    КомандаДействия.Действие = "УчебноеДействие";
    КомандаДействия.Заголовок = "Проверить свой пример";
    КомандаДействия.Подсказка = "Действие только над данными учебной формы";
    КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
    Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
    Кнопка.ИмяКоманды = КомандаДействия.Имя;
    Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Поле = Элементы.ПолеПримера;
    Если Поле.ВыделенныйТекст <> "Книга" Тогда
        Сообщить("Сначала выделите мышью слово Книга в собственном поле");
        Возврат;
    КонецЕсли;
    НачалоСтроки = 0;
    НачалоКолонки = 0;
    КонецСтроки = 0;
    КонецКолонки = 0;
    Поле.ПолучитьГраницыВыделения(НачалоСтроки, НачалоКолонки, КонецСтроки, КонецКолонки);
    Поле.УстановитьГраницыВыделения(НачалоСтроки, НачалоКолонки, КонецСтроки, КонецКолонки);
    Сообщить(Поле.ВыделенныйТекст = "Книга");
    Поле.ВыделенныйТекст = "Учебная книга";
    Сообщить(ЗначениеПримера = "Учебная книга" + Символы.ПС + "Ручка");
    Сообщить(СтрШаблон("Полученные границы: %1:%2 — %3:%4", НачалоСтроки, НачалоКолонки, КонецСтроки, КонецКолонки));
КонецПроцедуры

Разбор по шагам

  1. Код создаёт отдельное поле, не колонку таблицы: свойство ВыделенныйТекст не используется внутри таблицы.

  2. РасширенноеРедактирование меняет обработку Tab: в текст вставляется табуляция вместо перехода к другому полю.

  3. Четыре числовые переменные получают координаты от элемента. Начало отсчёта не угадывается.

  4. УстановитьГраницыВыделения получает те же четыре координаты. После записи ВыделенныйТекст выделение сбрасывается.

  5. Проверяем весь собственный реквизит: второе слово и перевод строки должны сохраниться.

Как проверить результат

  1. Без выделения Книга появляется инструкция, текст не меняется.

  2. После правильного выделения два сравнения Истина и диагностические координаты.

  3. Для повторения исходного упражнения закройте и снова откройте форму.

Ожидаемый результат

Замена проверена на своём многострочном тексте без произвольных координат.

На что обратить внимание

  1. Четырёхкоординатный вариант установки границ не поддерживается мобильным клиентом и мобильным приложением; упражнение для Windows/веб-клиента.

  2. Код не выполняет глобальную замену всех вхождений и не редактирует рабочий документ.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.