Возникла необходимость написать загрузку данных из клиент-банка в 1с 7.7. Файла формата CSV (iBank2)
И поскольку надо было "очень быстро" (как это не редко бывет ) родилась вот такая функция.
Решил ею поделится т.к. кода очень немного (собственно ключевые всего 3 строки):
ТекСтрока = СтрЗаменить(ТекСтрока,"""","'");
ТекСтрока = """" + СтрЗаменить(ТекСтрока,РазделительВФайле
,""",""") + """";
спЗначений.ИзСтрокиСРазделителями(ТекСтрока);
а кому-то может пригодится как раз когда нужно будет "очень быстро"
Единственное - двойные кавычки " будут заменены на одинарные '.
Но если это не критично то код можно использовать.
Функция ЧтениеФайлаCSV(Путь)
ТекстФайла = СоздатьОбъект("Текст");
Попытка
ТекстФайла.Открыть(Путь);
Исключение
Предупреждение("Ошибка отрытия файла " + Путь);
Возврат "";
КонецПопытки;
РазделительВФайле = ";";
спЗначений = СоздатьОбъект(
"СписокЗначений");
Для НомСтр=1 по ТекстФайла.КоличествоСтрок() Цикл
ТекСтрока = ТекстФайла.ПолучитьСтроку(НомСтр);
// Найдем и заменим в строке символ " на символ ' чтобы при замене разделителей не было ошибки
// т.о. из строки вида:
// 123;"ООО "МММ" ";Кафе "Пирожок"
// получим:
// 123;'ООО 'МММ' ';Кафе 'Пирожок'
ТекСтрока = СтрЗаменить(ТекСтрока,"""","'");
// добавим в начало и конец строки символ " и заменим разделитель используемый в файле CSV на ","
// т.о. из:
// 123;'ООО 'МММ' ';Кафе 'Пирожок'
// получаем:
//"123","'ООО 'МММ' '","Кафе 'Пирожок'"
ТекСтрока = """" + СтрЗаменить(ТекСтрока,
РазделительВФайле
,""",""") + """";
// а это уже методом ИзСтрокиСРазделителями можно превратить в список
спЗначений.ИзСтрокиСРазделителями(ТекСтрока);
// Длальше уже обрабатываем как кому нужно
Стр = "";
Для Ном = 1 По спЗначений.РазмерСписка() Цикл
Сообщить(спЗначений.ПолучитьЗначение(Ном, Стр));
КонецЦикла;
КонецЦикла;
КонецФункции