Перейти к содержимому

Как разбить строку в массив 1с

  • автор:

Как разбить строку в массив 1с

Функция раскладывает строку в массив подстрок согласно указанному разделителю.

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Владимир Милькин

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Разложить строку на подстроки по разделителю

В новых версиях платформы 1С:Предприятие 8.3 существует функция встроенного языка СтрРазделить(), для разделения строки на подстроки по разделителю. Данная функция реализована в платформе 8.3.6.1977. В более ранних версиях платформы данная функция не поддерживается.

В типовых конфигурациях в общих модулях можно найти готовые функции для разделения строки. Общий модуль может называться "ОбщегоНазначения" а функция РазложитьСтрокуВМассивПодстрок().
Если нет возможности воспользоваться встроенной функций 1С языка или функцией общего модуля, то необходимо писать собственные механизмы для разделения на подстроки.

Функция РазложитьСтрокуНаПодстроки()

Строку можно разделить на подстроки, превратив ее в многострочную строку и воспользовавшись специальными функциями встроенного языка. Функция на вход принимает строку, разделяет её по разделителю и возвращает массив подстрок.

Пример
ВходящаяСтрока — "1подстрока,2подстрока,3подстрока"
Разделитель — ","
Результат — Массив(0=>"1подстрока", 1=>"2подстрока", 2=>"3подстрока")

Также для поиска подстрок можно воспользоваться регулярными выражениями. Регулярные выражения в 1С:Предприятии реализуются с помощью COM-объектов. Благодаря этой технологии можно осуществлять поиск и замену подстрок по регулярному выражению.

Комментарии (0)

Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться

Разбить строку в массив подстрок

Я ее там нашла, но не могу понять, что куда подставлять. Всяко пробовала, не работает. Туго до меня доходит эта функция.

Функция РазложитьСтрокуВМассивПодстрок(Знач АдресЭлектронноПочты, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено) Экспорт

Результат = Новый Массив;

// для обеспечения обратной совместимости
Если ПропускатьПустыеСтроки = Неопределено Тогда
ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
Если ПустаяСтрока(АдресЭлектронноПочты) Тогда
Если Разделитель = " " Тогда
Результат.Добавить("");
КонецЕсли;
Возврат Результат;
КонецЕсли;
КонецЕсли;

Позиция = Найти (АдресЭлектронноПочты, ",");
Пока Позиция > 0 Цикл
Подстрока = Лев(АдресЭлектронноПочты, Позиция — 1);
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
Результат.Добавить(Подстрока);
КонецЕсли;
Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
Позиция = Найти(Строка, Разделитель);
КонецЦикла;

Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
Результат.Добавить(Строка);
КонецЕсли;

МассивСтрок = РазложитьСтрокуВМассивПодстрок (ТоЧтоНадоРазложить);

Для Каждого Строчка В МассивСтрок Цикл
Сообщить (Строчка);
КонецЦикла;

(4) МассивСтрок = РазложитьСтрокуВМассивПодстрок (Контрагент.АдресЭлектроннойПочты);

Для Каждого Строчка В МассивСтрок Цикл
Сообщить (Строчка);
КонецЦикла;

Ругается
Ожидается символ ‘=’
Для Каждого Строчка <<?>>В МассивСтрок Цикл (Проверка: Толстый клиент (обычное приложение))

(5) т. е. надо написать

РазложитьСтрокуВМассивПодстрок(Строка, ";")
строка = "адрес электронной почты";

1С 8.3 БСП РазложитьСтрокуВМассивПодстрок — Программист 1С Минск. Автоматизация бизнеса.

// Для обеспечения обратной совместимости.
Если ПропускатьПустыеСтроки = Неопределено Тогда
ПропускатьПустыеСтроки = ?( Разделитель = » » , Истина, Ложь);
Если ПустаяСтрока ( Значение ) Тогда
Если Разделитель = » » Тогда
Результат . Добавить ( «» );
КонецЕсли;
Возврат Результат ;
КонецЕсли;
КонецЕсли;
//

Позиция = СтрНайти ( Значение , Разделитель );
Пока Позиция > 0 Цикл
Подстрока = Лев ( Значение , Позиция — 1 );
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока ( Подстрока ) Тогда
Если СокращатьНепечатаемыеСимволы Тогда
Результат . Добавить ( СокрЛП ( Подстрока ));
Иначе
Результат . Добавить ( Подстрока );
КонецЕсли;
КонецЕсли;
Значение = Сред ( Значение , Позиция + СтрДлина ( Разделитель ));
Позиция = СтрНайти ( Значение , Разделитель );
КонецЦикла;

Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока ( Значение ) Тогда
Если СокращатьНепечатаемыеСимволы Тогда
Результат . Добавить ( СокрЛП ( Значение ));
Иначе
Результат . Добавить ( Значение );
КонецЕсли;
КонецЕсли;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *