Чтение большого файла csv в 1С
Куда ни глянь, в интернете чаще всего предлагается обработка и чтение большого файла csv в 1С при помощи загрузки в «текстовыйДокумент». Примерно так:
ТекстДок = Новый ТекстовыйДокумент;
ТекстДок.Прочитать(ИмяВременногоФайлаХар);
Для Индекс = 2 По ТекстДок.КоличествоСтрок() Цикл
СтрокаФайла = ТекстДок.ПолучитьСтроку(Индекс);
конеццикла;
Что в корне не верно, при обработке большого csv файла, так как в этом случае весь файл вычитывается предварительно в память. А она не безразмерная в большинстве случаев. Правильный же способ обработки — построчное чтение файла. Примерно так:
Текст = Новый ЧтениеТекста(ИмяВременногоФайлаХар, КодировкаТекста.ANSI);
Стр = Текст.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл
Сообщить(Стр);
Стр = Текст.ПрочитатьСтроку();
МассивПодстрок = СтрРазделить(Стр, ";");
инф=Новый Структура("то,лс,ипу,окпу,нс,улица,дом,квартира");
инф.то =СокрЛП(МассивПодстрок[2]);
инф.лс =СокрЛП(СтрЗаменить(МассивПодстрок[3],"-",""));
инф.ипу =СокрЛП(МассивПодстрок[31]);
инф.окпу =СокрЛП(МассивПодстрок[92]);
инф.нс =СокрЛП(МассивПодстрок[8]);
инф.улица =СокрЛП(МассивПодстрок[9]);
инф.дом =СокрЛП(МассивПодстрок[10]);
инф.квартира=СокрЛП(МассивПодстрок[11]);
ИсходныеДанные.субабоненты.Добавить(инф);
КонецЦикла;