Расширение поля формы для поля ввода.УстановитьГраницыВыделения

Методы · SetTextSelectionBounds

Устанавливает границы выделения.

Синтаксис

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

Расширение поля формы для поля ввода.УстановитьГраницыВыделения (Form field extension for a text box.SetTextSelectionBounds)

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

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

Доступен, начиная с версии 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С» и не аффилирован с ней.