HelpF.pro

Как преобразовать данные текстового файла с единым разделителем в ТЗ

Код 1C v 8.2 УП
 &НаСервере
//Текст - содержание текстового файла
//Разделитель - символ разделителя
//ЕстьЗакрывающийСимвол - последнее значение заканчивается разделителем
Функция ПреобразоватьТекстВТЗ(Текст,Разделитель,ЕстьЗакрывающийСимвол)
	
	ТаблицаЗначений = Новый ТаблицаЗначений;
	
	МаксимальноеКвоРазделителей = 0;
	Для НомерСтроки=1 по Текст.КоличествоСтрок() Цикл
		Стр = Текст.ПолучитьСтроку(НомерСтроки);
		КвоРазделителей = СтрЧислоВхождений(Стр,Разделитель);
		Если  КвоРазделителей > МаксимальноеКвоРазделителей Тогда
	          МаксимальноеКвоРазделителей = КвоРазделителей;
		КонецЕсли;	  
	КонецЦикла;	
	
	КвоКолонок = ?(ЕстьЗакрывающийСимвол = Истина,МаксимальноеКвоРазделителей,МаксимальноеКвоРазделителей+1);
	Ном = 0;
	Пока Ном < КвоКолонок Цикл
		 Ном = Ном+1;
		 ИмяКолонки = "Колонка"+Ном;
		 ТаблицаЗначений.Колонки.Добавить(ИмяКолонки);
	КонецЦикла;
	
	Для НомерСтроки=1 по Текст.КоличествоСтрок() Цикл
		
		Стр = Текст.ПолучитьСтроку(НомерСтроки);
		НоваяСтрока = ТаблицаЗначений.Добавить();
		
		Ном = 0;
		Пока Найти(Стр,Разделитель) > 0 Цикл
			Ном = Ном+1;
			ПозицияРазделителя = Найти(Стр,Разделитель);
			//получим значение
			ТекЗначение = ЛЕВ(Стр,ПозицияРазделителя - 1);
			Стр = Прав(Стр,СтрДлина(Стр) - ПозицияРазделителя);
			
			//теперь запишем значения
			ИмяКолонки = "Колонка"+Ном;
			НоваяСтрока[ИмяКолонки] = ТекЗначение;
		КонецЦикла;
		
		Если ЕстьЗакрывающийСимвол = Ложь Тогда
			ИмяКолонки = "Колонка"+(Ном+1);
			НоваяСтрока[ИмяКолонки] = Стр;
		КонецЕсли;
		
	КонецЦикла;
	
	Возврат  ТаблицаЗначений;
	
КонецФункции
   

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq/view/1476.html