Разложить строку в массив подстрок в 1С 8.3
1С 8.3 БСП РазложитьСтрокуВМассивПодстрок: разбивает строку на несколько строк по указанному разделителю. Разделитель может иметь любую длину. Если разделителем является строка из одного символа, и не используется параметр СокращатьНепечатаемыеСимволы, рекомендуется использовать функцию платформы СтрРазделить.
Официальная документация ИТС по функционалу
Примера кода №1
&НаКлиенте
Процедура ПримерИспользованияРазложитьСтрокуВМассивПодстрок(Команда)
МояСтрока = "Пушкин А.С.;г.Санкт-Петербург;Писатель;26.05.1799";
// Разделитель ";",
Результат = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(МояСтрока,";",Истина,Истина);
Сообщить(Результат[0]); //Пушкин А.С.
КонецПроцедуры
Примера кода от rayastar
// возвратит массив из двух элементов: "один", "два";
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("один,два");
// возвратит массив из двух элементов: "один", "два";
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("один, два",,,Истина);
// возвратит массив из двух элементов: "один", "два";
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("один два", " ");
// возвратит массив из 5 элементов, три из которых // пустые: "", "один", "", "два", "";
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(";один;;два;", ";")
Функция БСП
Функция РазложитьСтрокуВМассивПодстрок(Знач Значение, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено,
СокращатьНепечатаемыеСимволы = Ложь) Экспорт
Если Разделитель = ","
И ПропускатьПустыеСтроки = Неопределено
И СокращатьНепечатаемыеСимволы Тогда
Результат = СтрРазделить(Значение, ",", Ложь);
Для Индекс = 0 По Результат.ВГраница() Цикл
Результат[Индекс] = СокрЛП(Результат[Индекс])
КонецЦикла;
Возврат Результат;
КонецЕсли;
Результат = Новый Массив;
// Для обеспечения обратной совместимости.
Если ПропускатьПустыеСтроки = Неопределено Тогда
ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
Если ПустаяСтрока(Значение) Тогда
Если Разделитель = " " Тогда
Результат.Добавить("");
КонецЕсли;
Возврат Результат;
КонецЕсли;
КонецЕсли;
//
Позиция = СтрНайти(Значение, Разделитель);
Пока Позиция > 0 Цикл
Подстрока = Лев(Значение, Позиция - 1);
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
Если СокращатьНепечатаемыеСимволы Тогда
Результат.Добавить(СокрЛП(Подстрока));
Иначе
Результат.Добавить(Подстрока);
КонецЕсли;
КонецЕсли;
Значение = Сред(Значение, Позиция + СтрДлина(Разделитель));
Позиция = СтрНайти(Значение, Разделитель);
КонецЦикла;
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Значение) Тогда
Если СокращатьНепечатаемыеСимволы Тогда
Результат.Добавить(СокрЛП(Значение));
Иначе
Результат.Добавить(Значение);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
✍️ @odin1C_rus