Вот пример из жизни (захардкодил в пятницу на месте у клиента)
5 минут на изучение формата. 15 минут на кодинг.
Загрузили уже кучу данных. Ошибок пока не обнаружено.
Процедура ЗагрузитьCSV_1(Путь)
ТекстовыйФайл = Новый ТекстовыйДокумент;
ТекстовыйФайл.Прочитать(Путь);
Текст = ТекстовыйФайл.ПолучитьТекст();
Буфер = "";
МассивСтрок = Новый Массив;
МассивПоказаний = Неопределено;
Для Индекс = 1 По СтрДлина(Текст) Цикл
ТекСимвол = Сред(Текст, Индекс, 1);
Если ТекСимвол = "," Тогда
МассивПоказаний = Неопределено;
МассивСтрок.Добавить(Буфер);
Буфер = "";
ИначеЕсли ТекСимвол = ";" Тогда
Если МассивПоказаний = Неопределено Тогда
МассивПоказаний = Новый Массив;
МассивСтрок.Добавить(МассивПоказаний);
КонецЕсли;
МассивПоказаний.Добавить(Буфер);
Буфер = "";
ИначеЕсли ТекСимвол <> Символы.ПС Тогда
Буфер = Буфер + ТекСимвол;
КонецЕсли;
КонецЦикла;
Состояние = "Ищем баркод";
ЛицевойСчет = Справочники.ЛицевыеСчета.ПустаяСсылка();
Сумма = 0;
НомерСтроки = 0;
Сумма1 = 0; // в баркоде неправильная сумма
Для Каждого Элемент Из МассивСтрок Цикл
Если Состояние = "Ищем баркод" Тогда
Если Найти(Элемент, "W") > 0 Тогда
НомерСтроки = НомерСтроки + 1;
// опред л/с
Если ПолучитьДанныеБарКода(СокрЛП(Элемент), ЛицевойСчет, Сумма1, НомерСтроки) Тогда
Состояние = "Ищем сумму";
Иначе
Состояние = "Ищем баркод"
КонецЕсли;
КонецЕсли;
ИначеЕсли Состояние = "Ищем сумму" Тогда
Попытка
Сумма = Число(?(Элемент = "", "0", Элемент));
// добавляем строку
НоваяСтрока = Состав.Добавить();
НоваяСтрока.ЛицевойСчет = ЛицевойСчет;
НоваяСтрока.Сумма = Сумма / 100;
Состояние = "Ищем показания"
Исключение
Сообщить("Не удалось определить сумму");
Состояние = "Ищем баркод"
КонецПопытки;
ИначеЕсли Состояние = "Ищем показания" Тогда
Если ТипЗнч(Элемент) = Тип("Массив") Тогда
// собираем показания
СтрокаСообщения = ЛицевойСчет.Код + " - ";
Для Каждого Показание Из Элемент Цикл
СтрокаСообщения = СтрокаСообщения + Показание + "; ";
КонецЦикла;
Сообщить(СтрокаСообщения);
Состояние = "Ищем баркод"
КонецЕсли;
Иначе
ВызватьИсключение "Ошибка";
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Формат тут не сложный, но дебильный (количество колонок плавает)
типа такого:
106798,5982144,3922588,034W0242071200352322108,36000,00188;00203;;;;
107139,5983300,153,3923490,034W0164061200940803042,50000,01085;01097;00070;00078;;;
106776,5987505,3926754,034W1199491000274242763,28000,00103;00117;00162;00181;;;
106783,5993445,3931435,034W0338781200376323156,40000,00150;00160;00083;00088;;;
107146,5995777,3933173,034W0129041200043922028,5000,00129;00132;;;;