ПолеТекстовогоДокумента.УстановитьГраницыВыделения

Методы · SetTextSelectionBounds

Устанавливает границы выделенной области текста.

Синтаксис

УстановитьГраницыВыделения(<НачальнаяПозиция>, <КонечнаяПозиция>)
УстановитьГраницыВыделения(<НачалоСтроки>, <НачалоКолонки>, <КонецСтроки>, <КонецКолонки>)
Полное описание, параметры и ограничения

ПолеТекстовогоДокумента.УстановитьГраницыВыделения (TextDocumentField.SetTextSelectionBounds)

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

УстановитьГраницыВыделения (SetTextSelectionBounds)

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

Вариант синтаксиса: По позициям начала и конца выделения в тексте

Синтаксис:
УстановитьГраницыВыделения(<НачальнаяПозиция>, <КонечнаяПозиция>)
Параметры:

<НачальнаяПозиция> (обязательный)
Тип: Число.
Позиция начала выделения в тексте.

<КонечнаяПозиция> (обязательный)
Тип: Число.
Конечная позиция выделения в тексте.
Вариант синтаксиса: По номерам строк и колонок начала и конца выделения в тексте

Синтаксис:
УстановитьГраницыВыделения(<НачалоСтроки>, <НачалоКолонки>, <КонецСтроки>, <КонецКолонки>)
Параметры:

<НачалоСтроки> (обязательный)
Тип: Число.
Номер строки начала выделения.

<НачалоКолонки> (обязательный)
Тип: Число.
Номер колонки начала выделения.

<КонецСтроки> (обязательный)
Тип: Число.
Номер строки конца выделения.

<КонецКолонки> (обязательный)
Тип: Число.
Номер колонки конца выделения.
Описание:

Устанавливает границы выделенной области текста.

Доступность:

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

Использование в версии:

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

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

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

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

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

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

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

Подготовка

  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С» и не аффилирован с ней.