Функция является устаревшей! Рекомендуется использовать функцию СтрНайти. Находит первое вхождение искомой строки как подстроки в исходной строке. Сравнение выполняется с учетом регистра.
Синтаксис
Найти(<Строка>, <ПодстрокаПоиска>)Примеры платформы
Если Найти(Сотрудник.Имя, "Борис") > 0 Тогда
Сообщить(Сотрудник.Имя + " таб. №" + Сотрудник.Код);
КонецЕсли;Полное описание, параметры и ограничения
Глобальный контекст.Найти (Global context.Find)
Глобальный контекст (Global context)
Найти (Find)
Доступен, начиная с версии 8.0.
Синтаксис:
Найти(<Строка>, <ПодстрокаПоиска>)
Параметры:
<Строка> (обязательный)
Тип: Строка.
Исходная строка.
<ПодстрокаПоиска> (обязательный)
Тип: Строка.
Искомая подстрока.
Возвращаемое значение:
Тип: Число.
Позиция первого знака найденной подстроки. Нумерация символов в строке начинается с 1. Если строка не содержит указанной подстроки, то возвращается 0.
Описание:
Функция является устаревшей! Рекомендуется использовать функцию СтрНайти.
Находит первое вхождение искомой строки как подстроки в исходной строке. Сравнение выполняется с учетом регистра.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Внимание: Данный метод не поддерживается при работе через COM-соединение
Примечание:
Если параметр <ПодстрокаПоиска> - пустая строка, то возвращает 1.
Если оба параметра - пустые строки, то возвращает 1.
Пример:
Если Найти(Сотрудник.Имя, "Борис") > 0 Тогда
Сообщить(Сотрудник.Имя + " таб. №" + Сотрудник.Код);
КонецЕсли;
См. также:
Глобальный контекст, метод СтрНайти
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Разделить код по последнему дефису
У кода может быть несколько дефисов. Находим последний разделитель и получаем основную часть и регион.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Все исходные строки заданы прямо в примере; товары, файлы и настройки рабочих конфигураций не нужны.
Выполняйте на сервере учебной базы. Особенно важно для встроенных функций регулярных выражений.
Код = "AMA-BOOK-001-RU";
Позиция = СтрНайти(Код, "-", НаправлениеПоиска.СКонца);
Если Позиция = 0 Или Позиция = СтрДлина(Код) Тогда
ВызватьИсключение "В коде нет непустого окончания после дефиса";
КонецЕсли;
ОсновнаяЧасть = Лев(Код, Позиция - 1);
Окончание = Сред(Код, Позиция + 1);
Сообщить(ОсновнаяЧасть);
Сообщить(Окончание);
Сообщить(Прав(Код, 2));
Сообщить(Найти(Код, "BOOK"));
Сообщить(СтрНайти(Код, "BOOK"));
Сообщить(СтрНайти(Код, "-", НаправлениеПоиска.СНачала, 1, 2));Разбор по шагам
СтрНайти с направлением СКонца выбирает последний дефис, а не первый.
Позиции в строках 1С начинаются с 1; 0 означает отсутствие совпадения.
Лев получает символы до разделителя, Сред — текст после него. Прав(2) здесь показывает последние два символа, но не заменяет разбор произвольного окончания.
Сравниваем простой Найти со СтрНайти и отдельно показываем второй дефис через НомерВхождения.
Как проверить результат
Основная часть AMA-BOOK-001, окончание RU; последний дефис на позиции 13.
Оба поиска BOOK возвращают 5; второй дефис находится на позиции 9.
Замените код на AMABOOK001 или AMA-BOOK-001-: сработает проверка до выделения окончания.
Ожидаемый результат
Составной код разобран по последнему разделителю без предположения о длине основной части.
На что обратить внимание
Поиск учитывает регистр: book не совпадает с BOOK.
Пустая подстрока поиска у СтрНайти возвращает 1 — это не проверка содержимого.
Если контракт допускает дефис внутри самого окончания, требуется другой способ разделения полей.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.