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