НаправлениеПоиска

Темы платформы · SearchDirection

Определяет направление поиска подстроки в строке.

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

НаправлениеПоиска (SearchDirection)

НаправлениеПоиска (SearchDirection)

Доступен, начиная с версии 8.3.5 (в режиме совместимости с версией 8.3.5 и последующими).

Значения
СКонца (FromEnd)
СНачала (FromBegin)

Описание:

Определяет направление поиска подстроки в строке.

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

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

См. также:
Глобальный контекст, метод Найти

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

Доступен, начиная с версии 8.3.5 (в режиме совместимости с версией 8.3.5 и последующими).

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

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

Разделить код по последнему дефису

У кода может быть несколько дефисов. Находим последний разделитель и получаем основную часть и регион.

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

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

Подготовка

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

  2. Выполняйте на сервере учебной базы. Особенно важно для встроенных функций регулярных выражений.


Код = "AMA-BOOK-001-RU";
Позиция = СтрНайти(Код, "-", НаправлениеПоиска.СКонца);
Если Позиция = 0 Или Позиция = СтрДлина(Код) Тогда
    ВызватьИсключение "В коде нет непустого окончания после дефиса";
КонецЕсли;
ОсновнаяЧасть = Лев(Код, Позиция - 1);
Окончание = Сред(Код, Позиция + 1);
Сообщить(ОсновнаяЧасть);
Сообщить(Окончание);
Сообщить(Прав(Код, 2));
Сообщить(Найти(Код, "BOOK"));
Сообщить(СтрНайти(Код, "BOOK"));
Сообщить(СтрНайти(Код, "-", НаправлениеПоиска.СНачала, 1, 2));

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

  1. СтрНайти с направлением СКонца выбирает последний дефис, а не первый.

  2. Позиции в строках 1С начинаются с 1; 0 означает отсутствие совпадения.

  3. Лев получает символы до разделителя, Сред — текст после него. Прав(2) здесь показывает последние два символа, но не заменяет разбор произвольного окончания.

  4. Сравниваем простой Найти со СтрНайти и отдельно показываем второй дефис через НомерВхождения.

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

  1. Основная часть AMA-BOOK-001, окончание RU; последний дефис на позиции 13.

  2. Оба поиска BOOK возвращают 5; второй дефис находится на позиции 9.

  3. Замените код на AMABOOK001 или AMA-BOOK-001-: сработает проверка до выделения окончания.

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

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

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

  1. Поиск учитывает регистр: book не совпадает с BOOK.

  2. Пустая подстрока поиска у СтрНайти возвращает 1 — это не проверка содержимого.

  3. Если контракт допускает дефис внутри самого окончания, требуется другой способ разделения полей.

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

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

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

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

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