Я приведу пример разбора csv-файла, где количество столбцов будет вычисляться программно и результат будет помещен в таблицу значений для дальнейшей работы.
Процедура КнопкаВыполнитьНажатие(Кнопка)
// Примерный формат строки файла: "значение1|значение2|значение3|значение4|значение5"
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(Файл);
ТЗ = ПодготовитьТЗ(Текст);
// Обработка файла.
Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл
Стр = Текст.ПолучитьСтроку(НомерСтроки);
// Нужна отдельная переменная, так как при обрезке строка обрезается непосредственно
// в файле и работать с файлом дальше уже нельзя.
СтрокаДляРаботы = Стр;
КонецСтроки = СтрДлина(Стр);
Разделитель = "|";
КоличествоСтолбцов = ПолучитьКоличествоСтолбцов(СтрокаДляРаботы, КонецСтроки, Разделитель);
НС = ТЗ.Добавить();
// Обработка текущей строки, перенос значений в ТЗ.
Для Н = 1 По КоличествоСтолбцов Цикл
ПозицияРазделителя = Найти(Стр, Разделитель);
Значение = Сред(Стр, 1, ПозицияРазделителя - 1);
Стр = Сред(Стр, ПозицияРазделителя + 1, КонецСтроки);
Выполнить("НС.Колонка" + Строка(Н) + " = Значение;");
КонецЦикла;
КонецЦикла;
// На этом этапе все значения csv-файла перенесены в ТЗ, работать с которой уже проще.
КонецПроцедуры
Функция ПолучитьКоличествоСтолбцов(Стр, КонецСтроки, Разделитель)
КоличествоСтолбцов = 0;
Для Н = 1 По КонецСтроки Цикл
ПозицияРазделителя = Найти(Стр, Разделитель);
Если ПозицияРазделителя <> 0 Тогда
КоличествоСтолбцов = КоличествоСтолбцов + 1;
КонецЕсли;
Стр = Сред(Стр, ПозицияРазделителя + 1, КонецСтроки);
КонецЦикла;
Возврат КоличествоСтолбцов + 1;
КонецФункции
Функция ПодготовитьТЗ(Текст)
// В результате в ТЗ будут созданы колонки "Колонка1", "Колонка2" ...
ТЗ = Новый ТаблицаЗначений;
// Подразумеваем, что во всех строках равное количество столбцов, поэтому разберем только первую строку
Стр = Текст.ПолучитьСтроку(1);
// Нужна отдельная переменная, так как при обрезке строка обрезается непосредственно
// в файле и работать с файлом дальше уже нельзя.
СтрокаДляРаботы = Стр;
КонецСтроки = СтрДлина(Стр);
Разделитель = "|";
КоличествоСтолбцов = ПолучитьКоличествоСтолбцов(СтрокаДляРаботы, КонецСтроки, Разделитель);
// Подготовка таблицы значений.
Для Н = 1 По КоличествоСтолбцов Цикл
ТЗ.Колонки.Добавить("Колонка" + Строка(Н));
КонецЦикла;
Возврат ТЗ;
КонецФункции
Процедура ФайлНачалоВыбора(Элемент, СтандартнаяОбработка)
ДиалогФыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогФыбораФайла.Фильтр = "Файлы csv (*.csv)|*.csv";
ДиалогФыбораФайла.Заголовок = "Выберите файл";
ДиалогФыбораФайла.ПредварительныйПросмотр = Ложь;
ДиалогФыбораФайла.Расширение = "csv";
ДиалогФыбораФайла.ИндексФильтра = 0;
ДиалогФыбораФайла.ПолноеИмяФайла = Элемент.Значение;
Если ДиалогФыбораФайла.Выбрать() Тогда
Элемент.Значение = ДиалогФыбораФайла.ПолноеИмяФайла;
КонецЕсли;
КонецПроцедуры