Имя: Пароль:
1C
 
CSV в одну строку - разбить на много строк
0 ac13
 
20.02.18
10:27
В файле CSV одна сплошная строка.
Страна;Город;Улица;Дом;Россия;Рязань;Белинского;180;Россия;Рязань;Гагарина;25;Россия;Рязань;Дружная;111;
Нужно загрузить файл и соответственно по колонкам. Как при встрече значения, например, Россия, перейти на следующую строку?
1 VladZ
 
20.02.18
10:28
СтрЗаменить(ИсходнаяСтрока, СтрокаПоиска, СтрокаЗамены)
2 ildary
 
20.02.18
10:30
(0)

Функция   ПрочитатьФайлCSV( ИмяФайла ) Экспорт
// УЧИТЫВАЯ СЕРВЕРНОСТЬ ФУНКЦИИ - путь к файлу должен быть СЕТЕВОЙ!
    
    ТЗ = Новый ТаблицаЗначений;
    
    Файл  = Новый ЧтениеТекста( ИмяФайла );
    
    Шапка = Файл.ПрочитатьСтроку(); //заголовок
    МассивКол = СтрРазделить( Шапка, ";", Ложь );
    Для Каждого ИмяСтолбца Из МассивКол Цикл
        
        ИмяБезПробелов = СтрЗаменить( ИмяСтолбца, " ", "" );
        ТЗ.Колонки.Добавить( ИмяБезПробелов,, ИмяСтолбца );
        
    КонецЦикла;
    
    Стр = Файл.ПрочитатьСтроку();
    Пока Стр <> Неопределено Цикл
        
        Стр = СтрЗаменить( Стр, " ; ", ";" ); //при выгрузке могут быть лишние пробелы
        
        МассивКол = СтрРазделить( Стр, ";", Истина );
        СтрокаТЗ = ТЗ.Добавить();
        
        Если МассивКол.Количество() <> ТЗ.Колонки.Количество() Тогда //Продолжить
            Продолжить; // скорее всего в тексте содержит разделитель
        КонецЕсли;
        
        Для НомерСтолбца= 1 по МассивКол.Количество() Цикл //заполняем строчку значениями
            
            ТекущееЗначение = МассивКол[ НомерСтолбца - 1 ];
            ИмяКолонки                = ТЗ.Колонки[ НомерСтолбца - 1 ].Имя;
            
            СтрокаТЗ[ ИмяКолонки ] = СокрЛП( ТекущееЗначение );
            
        КонецЦикла;
        
        Стр = Файл.ПрочитатьСтроку();
        
    КонецЦикла;
    
    Файл.Закрыть();
    
    Возврат ТЗ;
    
КонецФункции
3 Timon1405
 
20.02.18
10:31
(1)+СтрЗаменить(ИсходнаяСтрока, ";Россия",Символы.ПС+"Россия")
4 ac13
 
20.02.18
10:31
(1) (2) (3) Спасибо!
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший