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