Глобальный контекст.СтрНайтиИВыделитьОформлением

Методы · StrFindAndHighlightByAppearance

Выполняет поиск в строке. Поиск выполняется по началу слова. Если найдены все искомые строки, то возвращается форматированная строка, в которой искомые строки подсвечены стандартным образом. Если искомое слово содержит буквы и цифры: последовательность, состоящая только из букв, считается отдельным словом, последовательность, состоящая только из цифр, считается отдельным словом. В слове, состоящем из цифр, лидирующие нули считаются и значащими, и незначащими. При наличии иерархии элемент считается найденным: если в нем есть все искомые слова, или в нем есть хотя бы одно искомое слово, а остальные слова содержатся в его родителях.

Синтаксис

СтрНайтиИВыделитьОформлением(<Строка>, <Подстрока>)
Полное описание, параметры и ограничения

Глобальный контекст.СтрНайтиИВыделитьОформлением (Global context.StrFindAndHighlightByAppearance)

Глобальный контекст (Global context)

СтрНайтиИВыделитьОформлением (StrFindAndHighlightByAppearance)

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

Синтаксис:
СтрНайтиИВыделитьОформлением(<Строка>, <Подстрока>)
Параметры:

<Строка> (обязательный)
Тип: Строка, ФорматированнаяСтрока.
Исходная строка.

<Подстрока> (обязательный)
Тип: Строка, Массив.
Искомая строка или массив искомых строк.
Возвращаемое значение:
Тип: ФорматированнаяСтрока, Неопределено.
Если хотя бы одна искомая строка не найдена, возвращается Неопределено.
Описание:

Выполняет поиск в строке.
Поиск выполняется по началу слова.
Если найдены все искомые строки, то возвращается форматированная строка, в которой искомые строки подсвечены стандартным образом.
Если искомое слово содержит буквы и цифры:
последовательность, состоящая только из букв, считается отдельным словом,

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

или в нем есть хотя бы одно искомое слово, а остальные слова содержатся в его родителях.

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

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер, интеграция.

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

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

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

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

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

Ищем Кни и Аз в собственной строке Книга Азбука. Проверяем отличие поиска по началу слова от обычного поиска подстроки.

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

Полный серверный общий модуль учебной базы. Собственные значения в памяти, без чтения или записи рабочих данных.

Подготовка

  1. Используйте отдельную учебную базу без рабочих данных. Создайте серверный общий модуль УчебныйЯзык с флагом Сервер, без Привилегированный.

  2. Вставьте весь модуль выбранного примера, а не одну процедуру внутрь другой. Из своей серверной команды учебной обработки вызовите УчебныйЯзык.ВыполнитьПример().

  3. Все числа, строки и коллекции созданы в самом примере. Документы, регистры, файловая система и сеть не используются; никаких зависимостей от КА2/УНФ/УТ/БП нет.

  4. Браузер показывает код, но не исполняет BSL. Проверки результата нужно выполнить вручную на платформе 8.5.1.1343 в учебной базе.

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

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

  1. Создать строку из двух собственных слов и массив двух искомых начал. Метод требует наличия всех искомых строк.

  2. Оба начала найдены: Кни в Книга и Аз в Азбука. Получить ФорматированнаяСтрока, а не просто номер позиции.

  3. Передать оформленный результат в собственный ФорматированныйДокумент. ПолучитьТекст проверяет сохранность букв, но не цвет подсветки.

  4. збу находится внутри Азбука, однако не в начале слова: специальный поиск возвращает Неопределено.

  5. Добавить отсутствующее начало Руч. Теперь не найдены все условия, поэтому весь результат Неопределено, несмотря на две прежние совпавшие строки.

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

  1. Четыре проверки Истина и исходный текст Книга Азбука. Урок не меняет никаких рабочих карточек.

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

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

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

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

  1. Обычный СтрНайти и поиск по началу слова имеют разные правила. Не ожидайте нахождения любой внутренней подстроки.

  2. Прежде чем использовать результат как ФорматированнаяСтрока, обработайте Неопределено.

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

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

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

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

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

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