Печать
Родительская категория: Статьи
Категория: 1C

Данная процедура вызывает окно выбора одного или нескольких файлов для их последующего чтения или обработки.

Например, код ниже записывает выбранные файлы в массив и выводит их имена на экран.


&НаКлиенте
Процедура ВыбратьФайл(Команда)
   
    //Диалог открытия файла
    Режим = РежимДиалогаВыбораФайла.Открытие;       
    ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытия.ПолноеИмяФайла = "";
    Фильтр = "Текст, *.txt|*.txt|";
    ДиалогОткрытия.Фильтр = Фильтр;
    ДиалогОткрытия.МножественныйВыбор = Истина;
    ДиалогОткрытия.Заголовок = "Выберите файлы";   
   
    Если ДиалогОткрытия.Выбрать() Тогда
        МассивВыбранныхФайлов = ДиалогОткрытия.ВыбранныеФайлы;
        Для Каждого ИмяВыбранногоФайла Из МассивВыбранныхФайлов Цикл                       
           
            Сообщить(ИмяВыбранногоФайла);
           
        КонецЦикла; //конец цикла "Для каждого файла" из выбранных
    КонецЕсли;
   
КонецПроцедуры

Практический пример.

Напишем процедуру, которая считывает построчно каждый из выбранных файлов. Т.е. внутри основного цикла обхода файлов создается еще один цикл по строкам файла. Данный цикл записывает строки в массив и выводит их в сообщении:


&НаКлиенте
Процедура ПрочитатьФайл(Команда)
   
    Режим = РежимДиалогаВыбораФайла.Открытие;       
    ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытия.ПолноеИмяФайла = "";
    Фильтр = "Текст, *.txt|*.txt|";
    ДиалогОткрытия.Фильтр = Фильтр;
    ДиалогОткрытия.МножественныйВыбор = Истина;
    ДиалогОткрытия.Заголовок = "Выберите файлы";   
   
    Если ДиалогОткрытия.Выбрать() Тогда
        МассивВыбранныхФайлов = ДиалогОткрытия.ВыбранныеФайлы;
        Для Каждого ИмяВыбранногоФайла Из МассивВыбранныхФайлов Цикл                       
           
            ПрочитанныйТекст = Новый ЧтениеТекста(ИмяВыбранногоФайла, КодировкаТекста.ANSI);
            СтрокаТекстовогоФайла = ПрочитанныйТекст.ПрочитатьСтроку();
            //Создаем массив из строк файла;
            СчетчикСтрок = 0;
            //МассивСтрок = Новый Массив;
            Пока Истина Цикл
                Строка = ПрочитанныйТекст.ПрочитатьСтроку();
                Если Строка = Неопределено Тогда
                    Прервать;
                Иначе
                    МассивСтрок.Добавить(Строка);
                    Сообщить(Строка);
                    СчетчикСтрок = СчетчикСтрок + 1;
                КонецЕсли;
            КонецЦикла;
                   
        КонецЦикла;    
    КонецЕсли;
КонецПроцедуры