ПолеТекстовогоДокумента.ВыделенныйТекст

Свойства · SelectedText

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

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

ПолеТекстовогоДокумента.ВыделенныйТекст (TextDocumentField.SelectedText)

ПолеТекстовогоДокумента (TextDocumentField)

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

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

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

Толстый клиент.

Примечание:
Если в поле текстового документа не выделен текст, то записанный текст добавляется начиная с текущей позиции курсора. После добавления текущее положение курсора меняется (перемещается в конец вставленного текста).
Использование в версии:

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

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

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

Сравнить старый метод выделения с рекомендуемым свойством

ПолучитьВыделенныйТекст нужен для чтения старого кода. С версии 8.2 он не рекомендуется; новый код использует ВыделенныйТекст.

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

Полный модуль собственной обычной формы. Только толстый клиент с обычными формами; экспортный обработчик Нажатие получает инициирующий Элемент, хотя базовое событие Кнопка.Нажатие дополнительных параметров не имеет.

Подготовка

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

  2. Добавьте реквизит УчебныйДокумент (ТекстовыйДокумент), ПолеТекстовогоДокумента с именем УчебноеПолеТекста и Данные = УчебныйДокумент.

  3. Добавьте кнопку УчебнаяКоманда вне поля. ПриОткрытии свяжите с процедурой из полного модуля; Нажатие кнопки вручную не назначайте.

  4. Каждый урок заменяет полный модуль отдельной копии. Две строки создаются в памяти; файлы не открываются и не сохраняются.

Процедура ПриОткрытии()
    УчебныйДокумент = Новый ТекстовыйДокумент;
    УчебныйДокумент.УстановитьТекст("Книга: 3" + Символы.ПС + "Ручка: 1");
    Кнопка = ЭтаФорма.ЭлементыФормы.УчебнаяКоманда;
    Кнопка.Заголовок = "Проверить собственный текст";
    Кнопка.УстановитьДействие("Нажатие", Новый Действие("ВыполнитьУчебнуюПроверку"));
КонецПроцедуры

Процедура ВыполнитьУчебнуюПроверку(Элемент) Экспорт
    Поле = ЭтаФорма.ЭлементыФормы.УчебноеПолеТекста;
    Если Поле.ВыделенныйТекст = "" Тогда
        Сообщить("Выделите Книга или Ручка в собственном документе");
        Возврат;
    КонецЕсли;
    ЧерезСвойство = Поле.ВыделенныйТекст;
    ЧерезСтарыйМетод = Поле.ПолучитьВыделенныйТекст();
    Сообщить(ЧерезСвойство);
    Сообщить(ЧерезСтарыйМетод = ЧерезСвойство);
    Сообщить("Для нового кода используйте свойство ВыделенныйТекст");
КонецПроцедуры

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

  1. Выделите одно слово в собственном документе. Проверка пустого выделения выполняется до сравнения.

  2. Свойство и старый метод читаются последовательно при одном выделении.

  3. Сравнение показывает одинаковый полученный фрагмент, но не делает старый метод рекомендуемым.

  4. Документ не изменяется; урок предназначен для понимания и миграции старых модулей обычных форм.

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

  1. При выделении Книга вывод Книга, Истина и рекомендация свойства; при Ручка — Ручка и Истина.

  2. Без выделения показана только подсказка, текст остаётся исходным.

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

Исторический метод показан с явной рекомендацией современного свойства.

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

  1. Не копируйте старый метод в новый код без необходимости совместимости.

  2. Метод доступен только толстому клиенту, не управляемому тонкому полю.

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

Заменить только вручную выделенное слово в своём документе

Выделите Книга в первой строке. Код читает реальные границы, восстанавливает их без угадывания индексов и заменяет слово; вторая строка остаётся.

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

Полный модуль собственной обычной формы. Только толстый клиент с обычными формами; экспортный обработчик Нажатие получает инициирующий Элемент, хотя базовое событие Кнопка.Нажатие дополнительных параметров не имеет.

Подготовка

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

  2. Добавьте реквизит УчебныйДокумент (ТекстовыйДокумент), ПолеТекстовогоДокумента с именем УчебноеПолеТекста и Данные = УчебныйДокумент.

  3. Добавьте кнопку УчебнаяКоманда вне поля. ПриОткрытии свяжите с процедурой из полного модуля; Нажатие кнопки вручную не назначайте.

  4. Каждый урок заменяет полный модуль отдельной копии. Две строки создаются в памяти; файлы не открываются и не сохраняются.

Процедура ПриОткрытии()
    УчебныйДокумент = Новый ТекстовыйДокумент;
    УчебныйДокумент.УстановитьТекст("Книга: 3" + Символы.ПС + "Ручка: 1");
    Кнопка = ЭтаФорма.ЭлементыФормы.УчебнаяКоманда;
    Кнопка.Заголовок = "Проверить собственный текст";
    Кнопка.УстановитьДействие("Нажатие", Новый Действие("ВыполнитьУчебнуюПроверку"));
КонецПроцедуры

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

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

  1. Сначала проверяется точное выделение Книга. Без него свойство при записи вставляло бы текст в курсор, чего этот урок не делает.

  2. ПолучитьГраницыВыделения заполняет четыре переменные. Начальные нули — только инициализация, не предположение о базе нумерации.

  3. УстановитьГраницыВыделения получает эти же фактические координаты; затем выделение повторно проверяется.

  4. Запись ВыделенныйТекст заменяет текущий фрагмент и сбрасывает выделение согласно локальной справке.

  5. ПолучитьТекст читает собственный документ, два поиска подтверждают новую первую строку и неизменную вторую.

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

  1. После верного выделения вывод координат и три Истина. Текст: Учебная книга: 3; следующая строка Ручка: 1.

  2. Без выделения или с другим выделением только подсказка, без вставки. Для повторения заново откройте свою форму.

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

Выполнена конкретная замена с проверкой границ, сброса выделения и сохранности остального текста.

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

  1. Не путайте ПолеТекстовогоДокумента с многострочным ПолеВвода.

  2. При отсутствии выделения запись свойства вставляет текст в текущую позицию.

  3. Это работа в памяти, не сохранение текстового файла.

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

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

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

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

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