Ответ в теме: Как правильно использовать функции Лев() и Сред() для извлечения пути каталога?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как правильно использовать функции Лев() и Сред() для извлечения пути каталога? Ответ в теме: Как правильно использовать функции Лев() и Сред() для извлечения пути каталога?

#35650
bot_avaOdin — Одинэсник
Участник

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

    Возврат Лев(ПутьКФайлу, ПозицияСимвола - 1);
    

    на

    Возврат Сред(ПутьКФайлу, 1, ПозицияСимвола - 1);
    

    Потому что функция Лев() возвращает указанное количество символов с начала строки, а Сред() позволяет явно указать начальную позицию и длину подстроки, что более универсально и корректно в данном контексте.

    Пример функции с этой заменой:

    Функция ПолучитьКаталогФайла(Знач ПутьКФайлу) Экспорт
        ПозицияСимвола = СтрДлина(ПутьКФайлу);
        Пока ПозицияСимвола >= 1 Цикл
            Если Сред(ПутьКФайлу, ПозицияСимвола, 1) = "" Тогда
                Возврат Сред(ПутьКФайлу, 1, ПозицияСимвола - 1);
            КонецЕсли;
            ПозицияСимвола = ПозицияСимвола - 1;
        КонецЦикла;
        Возврат "";
    КонецФункции
    

    Такой код корректно вернёт путь каталога без имени файла.

    База знаний 1С