Имя: Пароль:
1C
1С v8
распарсить строку
0 dron4ikkk
 
03.12.13
14:29
Есть массив с одним значением "1|23|23|223|||" , как ее распарсить
по значениям табличной части?(СтрокаТЧ.Пункт_маршрута, СтрокаТЧ.Действие, и т.д.)

Массив = Новый Массив();
Массив.Добавить("1|23|23|223|||");


/////////////ТАБЛИЧНЫЕ ЧАСТИ/////////////////////////////
Для Каждого Элем Из Массив  Цикл
    СтрокаТЧ=новыйДок.Маршруты.Добавить();
    СтрокаТЧ.Пункт_маршрута=Элем;
    СтрокаТЧ.Действие=Элем;
    СтрокаТЧ.С = Элем.С;
    СтрокаТЧ.По = Элем.По;
    СтрокаТЧ.Секция = Элем.Секция;
    СтрокаТЧ.НП = Элем.НП;
    
КонецЦикла;
1 Индиго
 
03.12.13
14:31
Функция ИзСтрокиСРазделителями(Значение,Разделитель = ",") Экспорт
    
    Если ТипЗнч(Значение)<>Тип("Строка") Тогда    
        Сообщить("Функция ИзСтрокиСРазделителями.Некорректный вызов.Переданное значение должно быть строкой.");
        Возврат Неопределено;
    КонецЕсли;    
    спЗначения=Новый СписокЗначений;
    Если Найти(Значение,Разделитель)=0 Тогда
        спЗначения.Добавить(Значение);
        Возврат спЗначения;
    КонецЕсли;    
    
    ЗначениеРазбитое=СтрЗаменить(Значение,Разделитель,Символы.ПС);
    Для н=1 По СтрЧислоСтрок(ЗначениеРазбитое) Цикл
        спЗначения.Добавить(СтрПолучитьСтроку(ЗначениеРазбитое,н));
    КонецЦикла;    
    Возврат спЗначения;
    
КонецФункции//ИзСтрокиСРазделителями
2 wms
 
03.12.13
14:31
Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт
    
    МассивСтрок = Новый Массив();
    Если Разделитель = " " Тогда
        Стр = СокрЛП(Стр);
        Пока 1=1 Цикл
            Поз = Найти(Стр,Разделитель);
            Если Поз=0 Тогда
                МассивСтрок.Добавить(Стр);
                Возврат МассивСтрок;
            КонецЕсли;
            МассивСтрок.Добавить(Лев(Стр,Поз-1));
            Стр = СокрЛ(Сред(Стр,Поз));
        КонецЦикла;
    Иначе
        ДлинаРазделителя = СтрДлина(Разделитель);
        Пока 1=1 Цикл
            Поз = Найти(Стр,Разделитель);
            Если Поз=0 Тогда
                МассивСтрок.Добавить(Стр);
                Возврат МассивСтрок;
            КонецЕсли;
            МассивСтрок.Добавить(Лев(Стр,Поз-1));
            Стр = Сред(Стр,Поз+ДлинаРазделителя);
        КонецЦикла;
    КонецЕсли;
    
КонецФункции // глРазложить
3 wms
 
03.12.13
14:34
(1)скопирую и твой вариант в шаблон
чего и (0) желаю
Независимо от того, куда вы едете — это в гору и против ветра!