ПараграфФорматированногоДокумента.ЗакладкаНачала

Свойства · BeginBookmark

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

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

ПараграфФорматированногоДокумента.ЗакладкаНачала (FormattedDocumentParagraph.BeginBookmark)

ПараграфФорматированногоДокумента (FormattedDocumentParagraph)

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

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

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

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

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

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

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

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

Вставить, переставить и удалить только свои учебные параграфы

Памятка содержит заголовок и два пункта. Временный черновой пункт вставляется в начало, затем удаляется; порядок основных пунктов меняется осознанно.

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

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

Подготовка

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

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

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

Документ = Новый ФорматированныйДокумент;
Заголовок = Документ.Добавить("Памятка").Родитель;
Параграфы = Документ.Элементы;
ИсходноеКоличество = Параграфы.Количество();
Первый = Параграфы.Добавить(Неопределено, Неопределено);
Первый.Элементы.Добавить("Проверить количество");
Второй = Параграфы.Добавить(Неопределено, Неопределено);
Второй.Элементы.Добавить("Рассчитать сумму");
Временный = Параграфы.Вставить(0, Неопределено, Неопределено);
Временный.Элементы.Добавить("Черновой пункт");
Сообщить(Параграфы.Количество() = ИсходноеКоличество + 3);
Сообщить(Параграфы.Получить(0) = Временный);
Параграфы.Удалить(Временный);
Сообщить(Параграфы.Количество() = ИсходноеКоличество + 2);
ИндексПервого = Параграфы.Индекс(Первый);
ИндексВторого = Параграфы.Индекс(Второй);
Параграфы.Сдвинуть(Второй, ИндексПервого - ИндексВторого);
Сообщить(Параграфы.Индекс(Второй) < Параграфы.Индекс(Первый));
Параграфы.Сдвинуть(Первый, Параграфы.Индекс(Второй) - Параграфы.Индекс(Первый));
Сообщить(Параграфы.Индекс(Первый) < Параграфы.Индекс(Второй));
Сообщить(Документ.ПолучитьТекст(Заголовок.ЗакладкаНачала, Заголовок.ЗакладкаКонца) = "Памятка");

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

  1. Корневая коллекция Элементы содержит только параграфы; их содержимое находится в другой вложенной коллекции.

  2. Начальное количество запоминаем, а не предполагаем число пустых параграфов конкретного нового документа.

  3. Вставить(0, ...) добавляет перед существующими элементами. Получить(0) подтверждает позицию временного пункта.

  4. Удалить принимает сам элемент. Другие параграфы не очищаем.

  5. Сдвинуть принимает элемент и СМЕЩЕНИЕ, не новый абсолютный индекс. Вычисляем смещение через текущие Индекс.

  6. После первой перестановки заново вычисляем позиции для восстановления исходного порядка.

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

  1. Все шесть сравнений Истина; временный пункт удалён, а исходный заголовок сохранён.

  2. После обеих перестановок первым основным пунктом снова Проверить количество, затем Рассчитать сумму.

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

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

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

  1. Старый индекс может указывать уже на другой элемент после вставки/удаления/сдвига.

  2. Содержимое текста не является устойчивым идентификатором параграфа: здесь сохраняем сам объект элемента.

  3. Удаление выполняется только в новом собственном документе в памяти.

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

Отличить текстовый элемент, его параграф и перевод строки

В одном параграфе создаём две строки Книга и Ручка. Текст и перевод строки имеют общую родительскую структуру, но разные типы.

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

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

Подготовка

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

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

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

Документ = Новый ФорматированныйДокумент;
Первый = Документ.Добавить("Книга");
Первый.Текст = "Книга";
Первый.Шрифт = Новый Шрифт("Arial", 12, Истина);
Первый.ЦветТекста = Новый Цвет(30, 60, 90);
Первый.ЦветФона = Новый Цвет(245, 248, 250);
Первый.НавигационнаяСсылка = "";
Перевод = Документ.Добавить(Неопределено, Тип("ПереводСтрокиФорматированногоДокумента"));
Второй = Документ.Добавить("Ручка");
Параграф = Первый.Родитель;
Параграф.ТипПараграфа = ТипПараграфаФорматированногоДокумента.Обычный;
Сообщить(Перевод.Родитель = Параграф);
Сообщить(Второй.Родитель = Параграф);
Сообщить(Первый.НавигационнаяСсылка = "");
Сообщить(Документ.ПолучитьТекст(Первый.ЗакладкаНачала, Первый.ЗакладкаКонца) = "Книга");
Сообщить(Документ.ПолучитьПозициюПоЗакладке(Первый.ЗакладкаКонца) - Документ.ПолучитьПозициюПоЗакладке(Первый.ЗакладкаНачала) = 5);
Сообщить(Документ.ПолучитьПозициюПоЗакладке(Перевод.ЗакладкаКонца) > Документ.ПолучитьПозициюПоЗакладке(Перевод.ЗакладкаНачала));
Сообщить(Документ.ПолучитьТекст(Параграф.ЗакладкаНачала, Параграф.ЗакладкаКонца) = Документ.ПолучитьТекст());

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

  1. Добавить возвращает созданный текстовый элемент. Оформление относится к нему, а выравнивание/тип списка — к его параграфу.

  2. Параметр ТипЭлемента=ПереводСтрокиФорматированногоДокумента вставляет перевод строки внутри параграфа, не новый параграф.

  3. Родитель у текста и перевода строки — ПараграфФорматированногоДокумента; он только для чтения.

  4. Закладки ограничивают диапазон элемента. По ним извлекаем только Книга и сравниваем длину диапазона с пятью символами.

  5. НавигационнаяСсылка установлена пустой: упражнение не создаёт переход к сайту или чужому объекту.

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

  1. Все семь сравнений Истина: оба текста и перевод относятся к одному параграфу; диапазон первого текста содержит Книга.

  2. В полном тексте есть перевод строки между названиями; новый параграф не создаётся.

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

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

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

  1. Текстовое оформление не является заменой данных реквизитов/таблиц: здесь это только представление.

  2. После структурного редактирования не считайте старые числовые позиции неизменными.

  3. Не создавайте ссылку на произвольный внешний ресурс только ради демонстрации свойства.

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

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

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

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

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