Процедура ПрочитатьФайлCSV(ИмяФайла) Разделитель = ","; ТабЗн = новый ТаблицаЗначений; ЗагружаемыйФайл = Новый ТекстовыйДокумент; ЗагружаемыйФайл.Прочитать(ИмяФайла); Шапка = ЗагружаемыйФайл.ПолучитьСтроку(1); МассивКол = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Шапка, ","); Для Каждого ИмяСтолбца Из МассивКол Цикл ИмяБезПробелов = СокрЛП(СтрЗаменить(ИмяСтолбца," ","")); ИмяБезПробелов = СокрЛП(СтрЗаменить(ИмяБезПробелов,"""","")); ТабЗн.Колонки.Добавить(ИмяБезПробелов,,ИмяБезПробелов); КонецЦикла; Для НомерСтроки = 2 по ЗагружаемыйФайл.КоличествоСтрок() Цикл Строка = ЗагружаемыйФайл.ПолучитьСтроку(НомерСтроки); Строка = СокрЛП(СтрЗаменить(Строка,"""","")); МассивКол = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Строка,Разделитель); НоваяСтрочка= ТабЗн.Добавить(); Для НомерСтолбца = 1 по МассивКол.Количество() Цикл ТекущееЗначение = МассивКол[НомерСтолбца-1]; ИмяКолонки = ТабЗн.Колонки[НомерСтолбца-1].Имя; НоваяСтрочка[ИмяКолонки] = СокрЛП(ТекущееЗначение); КонецЦикла; КонецЦикла; КонецПроцедуры;
Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено, СокращатьНепечатаемыеСимволы = Ложь) Экспорт Результат = Новый Массив; // Для обеспечения обратной совместимости. Если ПропускатьПустыеСтроки = Неопределено Тогда ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь); Если ПустаяСтрока(Строка) Тогда Если Разделитель = " " Тогда Результат.Добавить(""); КонецЕсли; Возврат Результат; КонецЕсли; КонецЕсли; // Позиция = СтрНайти(Строка, Разделитель); Пока Позиция > 0 Цикл Подстрока = Лев(Строка, Позиция - 1); Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда Если СокращатьНепечатаемыеСимволы Тогда Результат.Добавить(СокрЛП(Подстрока)); Иначе Результат.Добавить(Подстрока); КонецЕсли; КонецЕсли; Строка = Сред(Строка, Позиция + СтрДлина(Разделитель)); Позиция = СтрНайти(Строка, Разделитель); КонецЦикла; Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда Если СокращатьНепечатаемыеСимволы Тогда Результат.Добавить(СокрЛП(Строка)); Иначе Результат.Добавить(Строка); КонецЕсли; КонецЕсли; Возврат Результат; КонецФункции