otkrytie_i_preobrazovanie_csv_v_tablicu_znachenij

Модуль формы. Тонкий клиент

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	Разделитель	=	";";
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьПереводыИзCSV(Команда)
	
	ПолноеИмяВыбранногоФайла 	=	"";
		
	ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	ДиалогВыбора.Заголовок = "Выберите файл";
	ДиалогВыбора.Фильтр	="Документ CSV (*.csv)|*.csv|";	
	
	Если ДиалогВыбора.Выбрать() Тогда
		ПолноеИмяВыбранногоФайла = ДиалогВыбора.ПолноеИмяФайла;
		ОбработатьЗагруженныйФайл()
	КонецЕсли;
	
КонецПроцедуры
&НаСервере
Процедура ОбработатьЗагруженныйФайл()
	
	
	ЗагружаемыйФайл = Новый ТекстовыйДокумент;
	ЗагружаемыйФайл.Прочитать(ПолноеИмяВыбранногоФайла);
	
	//Формируем колонки ТЗ
	ТаблицаЗначений	=	Новый ТаблицаЗначений;
	
	Шапка 			=	ЗагружаемыйФайл.ПолучитьСтроку(1);
	МассивКол 		=	СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Шапка,Разделитель);
	
	Для Каждого ИмяСтолбца Из МассивКол Цикл	
		ИмяБезПробелов = СтрЗаменить(ИмяСтолбца," ","");
		ТаблицаЗначений.Колонки.Добавить(ИмяБезПробелов,,ИмяСтолбца);		
	КонецЦикла;
	
	//Заполняем ТЗ
	Для НомерСтроки=2 по ЗагружаемыйФайл.КоличествоСтрок() Цикл
		
		// получить стрoку с указанным номером и преобразуем её в массив
		Строка = ЗагружаемыйФайл.ПолучитьСтроку(НомерСтроки);
		МассивКол = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Строка,Разделитель);// процедура из типовой конфигурации, разбивает строку в массив по разделителям
		НоваяСтрочка= ТаблицаЗначений.Добавить();
		
		Если МассивКол.Количество() <> ТаблицаЗначений.Колонки.Количество() Тогда
			Продолжить; // скорее всего в тексте содержит разделитель
		КонецЕсли;
		
		Для НомерСтолбца= 1 по МассивКол.Количество() Цикл
			//заполняем строчку значениями
			ТекущееЗначение = МассивКол[НомерСтолбца-1];
			ИмяКолонки = ТаблицаЗначений.Колонки[НомерСтолбца-1].Имя;
			НоваяСтрочка[ИмяКолонки] = ТекущееЗначение;
		КонецЦикла;
		
	КонецЦикла;
	
	сооб	=	новый СообщениеПользователю;
	сооб.Текст	=	"Преобразование CSV завершено";
	сооб.Сообщить();
	
КонецПроцедуры
  • /sites/data/pages/otkrytie_i_preobrazovanie_csv_v_tablicu_znachenij.txt
  • Последнее изменение: 2021/03/04 08:32
  • tro