powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Функция разбора строки в 1С
7 сообщений из 7, страница 1 из 1
Функция разбора строки в 1С
    #37567764
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго дня !

Существует в 1С функция разбора строки на подстрок ?
Допустим имеем строку:

String="Первая подстрока\Вторая подстрока\Третья подстрока\Четвертая подстрока\ ...\N-я подстрока"

Как можно выбрать подстроку по принципу ( где символ "\" является разделителем):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Find=Function(String,"\",1)
Здесь значение:    Find="Первая подстрока"

Find=Function(String,"\",2)
Здесь значение:    Find="Вторая подстрока"

Find=Function(String,"\",N)
Здесь значение:    Find="N-я подстрока"


Спасибо.
...
Рейтинг: 0 / 0
Функция разбора строки в 1С
    #37567858
voka_64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Строка = wwwww/ssssssss/cccccc
Разделитель = "/"
Номер = 2
ssssssss = глПолучитьСтрокуПоНомеруРазделителя(Строка, Разделитель, Номер)



Функция глПолучитьСтрокуПоНомеруРазделителя(ф_Строка, ф_Разделитель, Номер) Экспорт
ф_Строка = СтрЗаменить(ф_Строка, ф_Разделитель, РазделительСтрок);
ф_Строка = СтрПолучитьСтроку(ф_Строка,Номер);
Возврат ф_Строка;
КонецФункции // глПолучитьСтрокуПоНомеруРазделителя //
...
Рейтинг: 0 / 0
Функция разбора строки в 1С
    #37572347
LexaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valeriu,

необходимо в общем модуле конфигуратора создать функцию
Функция СтрокаВМассив(Знач Строка,Разделитель=",") Экспорт

//***** Описание переменных
Перем Результат,Позиция,ДлинаРазделителя;

//***** Инициализация переменных
Результат=Новый Массив;
ДлинаРазделителя=СтрДлина(Разделитель);

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

//***** Возврат значения
Возврат Результат;

КонецФункции //СтрокаВМассив

а в дальнейшем массив использовать как вам удобно
Пример:

МассивСтрок = СтрокаВМассив("Строка 1,какой-то текст,еще чего нибудь,просто так" );
МассивСтрок = СтрокаВМассив("Строка 1/какой-то текст/еще чего нибудь/просто так","/" );
МассивСтрок = СтрокаВМассив("Строка 1/-,какой-то текст/-,еще чего нибудь/-,просто так","/-," );

подстрока1 = МассивСтрок[0];
...
Для каждого Подстрока из МассивСтрок Цикл
...
так-же массив можно передавать в параметры запроса
...
Рейтинг: 0 / 0
Функция разбора строки в 1С
    #37575111
ValeriuВсем доброго дня !

Существует в 1С функция разбора строки на подстрок ?
Допустим имеем строку:

.....................

Да, есть.

Используя ваш пример:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
String="Первая подстрока\Вторая подстрока\Третья подстрока\Четвертая подстрока\ ...\N-я подстрока";

лМногострочнаяСтрока = СтрЗаменить(String, "\", Символы.ПС);

лЧислоСтрок = СтрЧислоСтрок(лМногострочнаяСтрока);

Для счетчик = 1 по лЧислоСтрок Цикл

        Сообщить( строка(счетчик) + "-ая подстрока:  " + СтрПолучитьСтроку(лМногострочнаяСтрока, счетчик)  );

КонецЦикла;
...
Рейтинг: 0 / 0
Функция разбора строки в 1С
    #37575403
rigus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По идее надо учитывать переносы строк могут уже быть в начальной строке.
Как вариант заменять разделитель строки на что либо другое. Что то типа такого.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
String="Первая подстрока\Вторая подстрока\Третья 
|подстрока\Четвертая под
|строка\ ...\N-я подстрока";

лМногострочнаяСтрока = СтрЗаменить(СтрЗаменить(String,Символы.ПС,"&&##$$"), "\", Символы.ПС);

лЧислоСтрок = СтрЧислоСтрок(лМногострочнаяСтрока);

Для счетчик = 1 по лЧислоСтрок Цикл

        Сообщить( строка(счетчик) + "-ая подстрока:  " + СтрЗаменить(СтрПолучитьСтроку(лМногострочнаяСтрока, счетчик),"&&##$$",Символы.ПС ) );

КонецЦикла;
...
Рейтинг: 0 / 0
Функция разбора строки в 1С
    #37576205
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем за отклик.
Еще вопросик.
Предполагается этих String N-ые количества !!!
те :
Код: vbnet
1.
2.
3.
4.
String1="Первая подстрока\Вторая подстрока\Третья подстрока\Четвертая подстрока\ ...\N-я подстрока"; // здесь ПС
String2="Первая подстрока\Вторая подстрока\Третья подстрока\Четвертая подстрока\ ...\N-я подстрока"; // здесь ПС
.....
StringN="Первая подстрока\Вторая подстрока\Третья подстрока\Четвертая подстрока\ ...\N-я подстрока"; // здесь ПС



Спасибо.
...
Рейтинг: 0 / 0
Функция разбора строки в 1С
    #37577177
Какой выбрать тип коллекции значений для последующей обработки строк - зависит от характера данных и правил работы с этими данными.

Если эти строки содержат однотипную информацию, например показания какого-то датчика который накапливаются, а затем забираются раз в несколько часов - скорее всего достаточно будет одномерного массива.

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

Если структура строк не однородна, а еще лучше количество подстрок в каждой строке различно, но в будущем необходимо будет обрабатывать информацию из каждой строки отдельно - необходимо использовать дерево значений.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Функция разбора строки в 1С
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]