Имя: Пароль:
1C
1С v8
Строка с разделителями. Как преобразовать в массив значений?
,
0 planod
 
29.02.12
14:00
Есть текстовая строка: Товар#ЦенаПокупки#ЦенаПродажи

Как получить отдельно товар, отдельно цены.

В php есть функция explode() для этого, а как реализовать в 1с?
1 butterbean
 
29.02.12
14:01
СтрЗаменить(Стр,"#",Символы.ПС), а потом перебрать в цикле
2 and2
 
29.02.12
14:01
разложитьстрокуВмассивПодстрок

есть во всех типовых
3 Kreont
 
29.02.12
14:02
4 ProProg
 
29.02.12
14:02
100 баксов!

Функция мРазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = "|") Экспорт
   
   МассивСтрок = Новый Массив();
   Если Разделитель = " " Тогда
       Стр = СокрЛП(Стр);
       Пока 1 = 1 Цикл
           Поз = Найти(Стр,Разделитель);
           
           Если Поз = 0 Тогда
                   СтрокаВМассив = СокрЛП(Стр);

               МассивСтрок.Добавить(СтрокаВМассив);
               Возврат МассивСтрок;
           КонецЕсли;
           
               СтрокаВМассив = СокрЛП(Лев(Стр,Поз-1));
           
           МассивСтрок.Добавить(СтрокаВМассив);
           Стр = СокрЛ(Сред(Стр,Поз));
       КонецЦикла;
   Иначе
       ДлинаРазделителя = СтрДлина(Разделитель);
       Пока 1 = 1 Цикл
           Поз = Найти(Стр,Разделитель);
           
           Если Поз = 0 Тогда
                   СтрокаВМассив = СокрЛП(Стр);
                   
                   МассивСтрок.Добавить(СтрокаВМассив);
               Возврат МассивСтрок;
           КонецЕсли;
           
               СтрокаВМассив = СокрЛП(Лев(Стр,Поз-1));

           МассивСтрок.Добавить(СтрокаВМассив);
           Стр = Сред(Стр,Поз+ДлинаРазделителя);
       КонецЦикла;
   КонецЕсли;
   
КонецФункции
5 PR
 
29.02.12
14:02
Стр = СтрЗаменить(Стр, "#", Символы.ПС);

Для А = 0 По КолСтрок(Стр) - 1 Цикл
бла бла бла
6 ILM
 
гуру
29.02.12
14:02
В типовых есть функция ПреобразоватьСтрокуВМассив(Строка, рзделитель)...
Точное название не помню...
Но найду быстро )))
7 planod
 
29.02.12
14:03
спасибо) сейчас буду пробовать)
8 Ненавижу 1С
 
гуру
29.02.12
14:04
Структура = Новый Структура(СтрЗаменить(Стр,"#",","));
9 Рэйв
 
29.02.12
14:06
// Аналог семерочной функции    
Функция ИзСтрокиСРазделителями(Значение,Разделитель = ",") Экспорт
   Если ТипЗнч(Значение)<>Тип("Строка") Тогда    
       Сообщить("Функция ИзСтрокиСРазделителями.Некорректный вызов.Переданное значени долно быть строкой.");
       Возврат Неопределено;
   КонецЕсли;    
   Если Найти(Значение,Разделитель)=0 Тогда
       Сообщить("Функция ИзСтрокиСРазделителями.В переденном значении("""+Значение+""") нет ни одного указанного разделителшя("""+Разделитель+""").");
       Возврат Неопределено;
   КонецЕсли;    
   спЗначения=Новый СписокЗначений;
   Значение=СтрЗаменить(Значение,Разделитель,Символы.ПС);
   Для н=1 По СтрЧислоСтрок(Значение) Цикл
       спЗначения.Добавить(СтрПолучитьСтроку(Значение,н));
   КонецЦикла;    
   Возврат спЗначения;
   
КонецФункции
10 Wobland
 
29.02.12
14:07
(9) это кто там так над выводимыми сообщениями поиздевался?
11 ShoGUN
 
29.02.12
14:07
(8) Кстати да, но по индексам не обратишься...
12 Рэйв
 
29.02.12
14:08
(10)Всмысле?
13 Wobland
 
29.02.12
14:08
(12) "Переданное значени долно", "разделителшя"..
14 Рэйв
 
29.02.12
14:10
(13)аа..:-)...У меня клава хромает на обе ноги в этом смысле. Надо бы заменить но не люблю я черные а белые- дефицит:-)
15 planod
 
29.02.12
14:21
Всем Спасибо)