Чтение большого файла csv в 1С

Куда ни глянь, в интернете чаще всего предлагается обработка и чтение большого файла csv в 1С при помощи загрузки в «текстовыйДокумент». Примерно так:

ТекстДок = Новый ТекстовыйДокумент;
ТекстДок.Прочитать(ИмяВременногоФайлаХар);
Для Индекс = 2 По ТекстДок.КоличествоСтрок() Цикл
СтрокаФайла = ТекстДок.ПолучитьСтроку(Индекс);
конеццикла;

Что в корне не верно, при обработке большого csv файла, так как в этом случае весь файл вычитывается предварительно в память. А она не безразмерная в большинстве случаев. Правильный же способ обработки — построчное чтение файла. Примерно так:

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.