Существует много способов разделения строки на подстроки, выбор способа зависит от цели, которую ставит перед собой разработчик, а также от режима совместимости, который указан настройках конфигурации.
СтрРазделить()
Начиная с версии платформы 8.3.6 для разделения строки в массив можно воспользоваться стандартной функцией платформы :
СтрРазделить(<Строка>, <Разделитель>, <ВключатьПустые>)
Параметры:
Имя параметра | Тип | Описание |
<Строка> (обязательный) | Строка | Входная строка |
<Разделитель> (обязательный) | Строка | Строка символов, каждый из которых является индивидуальным разделителем. |
<ВключатьПустые> (необязательный) | Булево | Указывает необходимость включать в результат пустые строки, которые могут образоваться в результате разделения исходной строки. Значение по умолчанию: Истина. |
Возвращаемое значение — Тип Массив, Массив строк, которые получились в результате разделения входной строки
Если у вас разделитель это слово или набор символов, тогда эта функция вам не подойдет, используйте функция из БСП с аналогичными параметрами.
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(<Строка>, <Разделитель>, <ПропускатьПустыеСтроки>);
Подробней о этой функции или о других функциях из БСП вы можете прочитать на портале ИТС
Разделение строк до версии 8.3.6
Если вы получили ошибку: Процедура или функция с указанным именем не определена (СтрРазделить), тогда этот совет поможет вам:
В конфигурациях на обычных формах, например УТ 10.3 строки можно разделить через функцию БСП
ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(<Строка>, <Разделитель>);
Своя функция для разделения строк
// Функция - Разделяет строку на массив по указанному разделителю // // Параметры: // ВходящаяСтрока - Строка - Строка для разделения // Разделитель - Строка - Строка разделитель // // Возвращаемое значение: // Массив - Массив строк, которые получились в результате разделения входной строки // Функция СтрРазделить(ВходящаяСтрока, Разделитель) Рез = Новый Массив(); ВрСтрока = СтрЗаменить(ВходящаяСтрока, Разделитель, Символы.ПС); Для Сч = 1 По СтрЧислоСтрок(ВрСтрока) Цикл Стр = СтрПолучитьСтроку(ВрСтрока, Сч); Если Разделитель = " " и СокрЛП(Стр) = "" Тогда Продолжить; КонецЕсли; Рез.Добавить(Стр); КонецЦикла; Возврат Рез; КонецФункции
Если вы знаете более эффективный способ разделения строки, пожалуйста , напишите об этом в комментариях )