ОбластьФорматированногоДокумента.ЗакладкаНачала

Свойства · BeginBookmark

Тип: ЗакладкаФорматированногоДокумента. Содержит закладку начала области форматированного документа.

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

ОбластьФорматированногоДокумента.ЗакладкаНачала (FormattedDocumentRange.BeginBookmark)

ОбластьФорматированногоДокумента (FormattedDocumentRange)

ЗакладкаНачала (BeginBookmark)

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

Использование:
Только чтение.
Описание:
Тип: ЗакладкаФорматированногоДокумента.
Содержит закладку начала области форматированного документа.
Доступность:

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

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

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

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

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

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

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

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

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

Подготовка

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Получить пересекающиеся элементы и выделить точные элементы выбранного слова

В одном текстовом элементе Книга и Ручка выбираем только Ручка. ПолучитьЭлементы не режет элемент, а СформироватьЭлементы при необходимости меняет структуру.

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

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

Подготовка

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

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

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

Документ = Новый ФорматированныйДокумент;
Документ.Добавить("Книга и Ручка");
До = Документ.ПолучитьТекст();
Область = Документ.НайтиТекст("Ручка");
Если Область = Неопределено Тогда
    ВызватьИсключение "Нет ожидаемого слова Ручка";
КонецЕсли;
Пересекающиеся = Документ.ПолучитьЭлементы(Область.ЗакладкаНачала, Область.ЗакладкаКонца);
Сообщить(Пересекающиеся.Количество() = 1);
Сообщить(Пересекающиеся[0].Текст = "Книга и Ручка");
Точные = Документ.СформироватьЭлементы(Область.ЗакладкаНачала, Область.ЗакладкаКонца);
Сообщить(Точные.Количество() = 1);
Сообщить(Точные[0].Текст = "Ручка");
Точные[0].ЦветТекста = Новый Цвет(180, 30, 30);
Сообщить(Документ.ПолучитьТекст() = До);

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

  1. Один Добавить создаёт один текстовый элемент с полным содержимым Книга и Ручка.

  2. Поиск слова возвращает диапазон внутри этого элемента.

  3. ПолучитьЭлементы включает даже частично входящие элементы, поэтому возвращает исходный полный текстовый элемент.

  4. СформироватьЭлементы делит текстовый элемент так, чтобы выбранный диапазон содержал элементы полностью. Результат теперь содержит именно Ручка.

  5. Красим только точный элемент. Видимый текст не изменился, но внутренняя структура и оформление изменились.

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

  1. Все пять сообщений Истина: до разделения полный элемент, после — точное слово Ручка.

  2. Обычный текст остался Книга и Ручка; при отображении документа красным будет только Ручка.

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

Освоено существенное различие двух похожих методов и точное оформление фрагмента.

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

  1. СформироватьЭлементы — не чистый read-only поиск: он может разделять элементы документа.

  2. После разделения не полагайтесь на прежнее количество элементов и их индексы.

  3. На тексте с несколькими стилями результат может содержать несколько элементов, а не один. Один здесь обусловлен подготовкой.

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

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

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

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

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