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