ФорматированныйДокумент.Вставить

Методы · Insert

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

Синтаксис

Вставить(<Закладка>, <Значение>, <ТипЭлемента>)
Полное описание, параметры и ограничения

ФорматированныйДокумент.Вставить (FormattedDocument.Insert)

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

Вставить (Insert)

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

Синтаксис:
Вставить(<Закладка>, <Значение>, <ТипЭлемента>)
Параметры:

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

<Значение> (необязательный)
Тип: Произвольный.
Содержит вставляемое в форматированный документ значение.
В зависимости от значения параметра <ТипЭлемента> данного метода значение интерпретируется по-разному.
Если значение параметра ТекстФорматированногоДокумента, то в указанную позицию документа будет вставлено строковое представление переданного значения.
Если значение КартинкаФорматированногоДокумента, то тип параметра должен быть Картинка, ДвоичныеДанные или Строка, содержащая URL картинки. В противном случае вызывается исключение. Картинка будет вставлена в указанное место.
Если значение параметра ПереводСтрокиФорматированногоДокумента, то независимо от значения параметра в указанную позицию вставляется перевод строки.
Значение по умолчанию: Неопределено.

<ТипЭлемента> (необязательный)
Тип: Тип.
Указывает тип элемента, который нужно вставить. В зависимости от значения этого параметра интерпретируется значение параметра <Значение> данного метода.
Элементами коллекции могут быть:
1) ТекстФорматированногоДокумента
2) КартинкаФорматированногоДокумента
3) ПереводСтрокиФорматированногоДокумента
В зависимости от значения этого параметра интерпретируется значение параметра <Значение> данного метода.
Значение по умолчанию: ТекстФорматированногоДокумента.
Возвращаемое значение:
Тип: ТекстФорматированногоДокумента, ПереводСтрокиФорматированногоДокумента, КартинкаФорматированногоДокумента.
Возращает элемент, вставленный в форматированный документ.
Описание:

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

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

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

Примечание:
Вставка картинки доступна только на сервере.
Картинка должна быть абсолютной.
Использование в версии:

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

Описание изменено в версии 8.3.21.

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

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

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

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

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

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

Подготовка

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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