Имя: Пароль:
1C
1С v8
Помогите разобрать строку
0 Novicadmin
 
23.07.14
05:19
4607048800348|1 4620755740127|15 4630005090377|10 4630005090773|5

после символа "|" идёт коэффициент, подстроку "|число " учитывая пробел необходимо заменить на ";"

3е суток уже не спал, всё восстанавливаю данные и голова уже не робит, помогите плиз.
1 Novicadmin
 
23.07.14
05:36
Искать | обрезать в переменную искать " " всё что до учитывая " " заменить на ";"
2 Godofsin
 
23.07.14
05:42
Найти и СтрЗаменить() тебе в помощь
3 Novicadmin
 
23.07.14
05:46
не смогу ( строк много все разные может быть 1 ШК может быть 5 шк
4 Novicadmin
 
23.07.14
05:47
думаю разберусь, спасибо, просто долго очень
5 Novicadmin
 
23.07.14
05:48
Сервак упал бэкапа нету восстанавливаю справочник из текста.
6 Godofsin
 
23.07.14
05:51
(5) Жесть...
7 Godofsin
 
23.07.14
06:03
эх...
Поз = Найти(СтрокаРазбора,"|");
ПервоеЧисло = Лев(СтрокаРазбора, поз - 1);
СтрокаРазбора = Прав(СтрокаРазбора, СтрДлина(СТрокаРазбора) - поз);
ПозПробела = Найти(СТрокаРазбора, " ");
СтрокаРазбора = Прав(СтрокаРазбора, СтрДлина(СТрокаРазбора) - позПробела);

и т.д. и т.п.
8 Novicadmin
 
23.07.14
06:16
(7) Спасибо большое )))
я уж зобил и подумал выдерну пока только 1 ШК

СимволРазделитель = ";";
СимволПалка = "|";
ТемпСтрока   = СтрЗаменить(ШтрихКоды," ",";");
НомерСимвола = Найти(ТемпСтрока,СимволРазделитель);
ТемпСтрока      = СокрЛП(Лев(ТемпСтрока,НомерСимвола - 1));
НомерСимвола = Найти(ТемпСтрока,СимволПалка);
ШК = СокрЛП(Лев(ТемпСтрока,НомерСимвола - 1));
9 lion11
 
23.07.14
08:34
Я бы так сделал:
    Строка = "4607048800348|1 4620755740127|15 4630005090377|10 4630005090773|5";
    Стр1 = СтрЗаменить(Строка,"|",",");
    Стр1 = СтрЗаменить(Стр1," ",",");
    Массив1 = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Стр1,",");
В итоге: в Массив1 в четных строках (0,2,4...) - ШК, в нечетных - число.
10 Бешеная Нога
 
23.07.14
08:51
Функция РазложитьСтрокуНаМассивПодстрок(Знач Строка, Разделитель = ";", ПропускатьПустыеСтроки = Истина)
    
    Результат = Новый Массив;
    
    Позиция = Найти(Строка, Разделитель);
    Пока Позиция > 0 Цикл
        Подстрока = Лев(Строка, Позиция - 1);
        Если Не ПустаяСтрока(Подстрока) или не ПропускатьПустыеСтроки Тогда
            Результат.Добавить(Подстрока);
        КонецЕсли;
        Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
        Позиция = Найти(Строка, Разделитель);
    КонецЦикла;
    
    Результат.Добавить(Строка);
    
    Возврат Результат;
    
КонецФункции
11 Бешеная Нога
 
23.07.14
08:53
1. Выполняешь функци в первый раз с указанием разделителя "|"- получаешь массив строк типа "1 4620755740127".

2. Для каждой такой строки еще раз выполяняешь функцию с указанием разделителя " " и получаешь строки "1" и "4620755740127".
12 Kamas
 
23.07.14
08:57
Строка=СтрЗаменить(строка,"|",Символы.ПС);
    Строка=СтрЗаменить(строка," ",Символы.ПС);


КоличествоСтрок=СтрЧислоСтрок(Строка)

Для Счетчик = 1 По КоличествоСтрок Цикл
      Счетчик = 1+ Счетчик;
    ТекСтрока = СтрПолучитьСтроку(Строка, Счетчик);

    ...
КонецЦикла;
13 Kamas
 
23.07.14
08:57
(11) черт))
14 Novicadmin
 
23.07.14
10:08
Огромное всем спасибо (9) классно!, учиться и еще раз учиться )))