ФорматированныйДокумент.Удалить

Методы · Delete

Удаляет заданный фрагмент текста.

Синтаксис

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

ФорматированныйДокумент.Удалить (FormattedDocument.Delete)

ФорматированныйДокумент (FormattedDocument)

Удалить (Delete)

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

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

<Начало> (необязательный)
Тип: ЗакладкаФорматированногоДокумента.
Закладка, начиная с которой начинается удаляемый фрагмент текста. Если закладка не задана, то удаляется с начала документа.

<Конец> (необязательный)
Тип: ЗакладкаФорматированногоДокумента.
Задает конец удаляемого фрагмента текста. Если параметр не задан, то удаляет текст до конца документа.
Описание:

Удаляет заданный фрагмент текста.

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

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.

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

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

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

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

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

В собственной строке Товар: Ручка; количество: 3 заменяем Ручка на Книга. Отсутствие совпадения обрабатывается до доступа к диапазону.

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

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Отдельная учебная база, серверный общий модуль УчебныеЗадачи. Фрагмент без директив вставьте в тело ВыполнитьПример() Экспорт.

  2. Документ создаётся заново в памяти при каждом запуске. Существующие реквизиты, файлы и документы конфигурации не меняются.

  3. Сообщения показывают контрольные проверки. Для визуального просмотра оформления используйте отдельную задачу с полным модулем учебной формы.

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

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

  1. Получаем начальную/конечную закладки документа и ищем ручка без учёта регистра.

  2. НайтиТекст возвращает ОбластьФорматированногоДокумента либо Неопределено. Проверяем отсутствие до обращения к ЗакладкаНачала/Конца.

  3. Сохраняем числовую позицию начала найденного названия, удаляем только диапазон совпадения.

  4. После изменения создаём НОВУЮ закладку по сохранившей смысл позиции начала и вставляем Книга.

  5. Проверяем всю ожидаемую фразу, отсутствие старого названия и нулевую позицию начала документа.

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

  1. Четыре сравнения Истина; количество 3 и остальной текст не потерялись.

  2. Измените исходное название на Коробка: пример выдаёт понятную ошибку отсутствия, не обращается к свойствам Неопределено.

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

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

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

  1. Вставленный текст получает оформление по правилам позиции документа. Для точного стиля используйте возвращённый текстовый элемент и задайте его свойства.

  2. Это замена одного ближайшего совпадения, не глобальная замена всех строк.

  3. После удаления старые объекты диапазона не используем для следующей вставки.

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

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

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

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

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