Работа с файлами

Диалог выбора файла

При создании обработок или в процессе разработки конфигураций может возникнуть необходимость организовать выбор файла на форме. Для этой цели в платформе 1С есть все необходимые инструменты.

Обычное приложение

В обычном приложение необходимо добавить на форму элемент "Поле ввода" и установить галочку напротив свойства "КнопкаВыбора". В событии "НачалоВыбора" прописать функцию, которая будет предоставлять выбор

файла. Функцию добавить в модуль формы.

Управляемое приложение

В управляемом приложении сначала необходимо создать реквизит формы. Затем для этого реквизита на форму надо добавить элемент "Поле" и установить для свойства "КнопкаВыбора" значение "Да". И так же как в обычном приложении, в событии "НачалоВыбора", прописать функцию. Функция будет расположена в модуле

формы. В отличии от обычного приложения перед функцией надо прописать &НаКлиенте.

Параметры объекта ДиалогВыбораФайла:

    • Заголовок - заголовок окна выбора фйлов

    • ИндексФильтра - индекс активного фильтра

    • Каталог - текущий каталог выбора файла

    • МножественныйВыбор - задаёт возможность выбора нескольких файлов

    • ПолноеИмяФайла - имя выбранного файла

    • ПредварительныйПросмотр - отображение окна предварительного просмотра содержимого файла

    • ПроверятьСуществованиеФайла - определяет проверять существование файла

    • Расширение - расширения для записи файлов

    • Режим - РежимДиалогаВыбораФайла.(ВыборКаталога, Открытие, Сохранение)

    • Фильтр - строка с файловыми фильтрами

Выбор одного файла

Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);

Диалог.Заголовок = "Выбор файла";

Диалог.Фильтр = "Excel файлы(*.xls;*.xlsx)|*.xls;*.xlsx";

Диалог.ИндексФильтра = 0;

Диалог.ПредварительныйПросмотр = Ложь;

Диалог.ПроверятьСуществованиеФайла = Истина;

Диалог.МножественныйВыбор = Ложь;

Диалог.ПолноеИмяФайла = ПутьКФайлу;

Если Диалог.Выбрать() Тогда

ПутьКФайлу = Диалог.ПолноеИмяФайла;

КонецЕсли;

КонецПроцедуры

Множественный выбор файлов

Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);

Диалог.Заголовок = "Выбор файла";

Диалог.Фильтр = "Excel файлы(*.xls;*.xlsx)|*.xls;*.xlsx";

Диалог.ИндексФильтра = 0;

Диалог.ПредварительныйПросмотр = Ложь;

Диалог.ПроверятьСуществованиеФайла = Истина;

Диалог.МножественныйВыбор = Истина;

Диалог.ПолноеИмяФайла = ПутьКФайлу;


Если Диалог.Выбрать() Тогда


МассивФайлов = Диалог.ВыбранныеФайлы;

Для Каждого ИмяФайла Из МассивФайлов Цикл

//Обработка файлов

//...

//...

//...

КонецЦикла


КонецЕсли;


КонецПроцедуры

Как прочитать информацию о файле?

ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогОткрытияФайла.Выбрать(); Файл = Новый Файл(ДиалогОткрытияФайла.ПолноеИмяФайла); Текст = "Файл: " + Файл.Имя; Текст = Текст + Символы.ПС + "Расширение: " + Файл.Расширение; Текст = Текст + Символы.ПС + "Полное имя: " + Файл.ПолноеИмя; Текст = Текст + Символы.ПС + "Путь: " + Файл.Путь; Текст = Текст + Символы.ПС + "Размер: " + Файл.Размер() + " байт"; Текст = Текст + ?(Файл.ПолучитьНевидимость(), Символы.ПС + "Невидимый. ", ""); Текст = Текст + ?(Файл.ПолучитьТолькоЧтение(), Символы.ПС + "Только чтение.", ""); Текст = Текст + Символы.ПС + "Последнее изменение: " + Файл.ПолучитьВремяИзменения(); Сообщить(Текст);

Как получить список файлов в указанном каталоге?

МассивНайденных = НайтиФайлы("C:\Обмен\Входящие", "*.xml"); Для Каждого Файл из МассивНайденных Цикл Сообщить(Файл.Имя); // Обработать найденные файлы. КонецЦикла;

Как переместить файл, выложенный на ftp к себе на локальный компьютер?

Если НайтиФайлы("C:\Temp\Sklad.xml") <> Неопределено Тогда УдалитьФайлы("C:\Temp\ Sklad.xml "); КонецЕсли; Если НайтиФайлы("ftp://111.222.333.4/Sklad.xml") <> Неопределено Тогда ПереместитьФайл("ftp://111.222.333.4/Sklad.xml", "C:\Temp\ Sklad.xml"); Сообщить("Файл перемещен."); Иначе Сообщить("Действие не выполнено. Файл в источнике не найден."); КонецЕсли;

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

//Разделяем указанный файл на несколько частей заданного размера РазделитьФайл("D:/1/MyFile.xml", 1024*1024, "D:/1/11/"); // Обратная операция - объединение нескольких файлов в один ОбъединитьФайлы("D:/1/11/MyFile.xml.*", "D:/1/11/MyProg.exe");

Как поместить файлы в архив?

ФайлАрхива = Новый ЗаписьZipФайла("C:\Arch.zip", , , МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Максимальный); ФайлАрхива.Добавить("C:\Inetpub\wwwroot\Applic1\*.*", РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно); ФайлАрхива.Записать(); ФайлАрхива = Новый ЧтениеZIPФайла("C:\Arch.zip"); ФайлАрхива.ИзвлечьВсе("C:\Open", РежимВосстановленияПутейФайловZIP.Восстанавливать); ФайлАрхива.Закрыть();

Как сравнить два текстовых файла?

ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогОткрытияФайла.Фильтр = "Текстовый документ(*.txt)|*.txt"; // Выбрать первый файл. ДиалогОткрытияФайла.Заголовок = "Выберите первый файл:"; ДиалогОткрытияФайла.Выбрать(); ИмяФайла1 = ДиалогОткрытияФайла.ПолноеИмяФайла; // Выбрать второй файл. ДиалогОткрытияФайла.Заголовок = "Выберите второй файл:"; ДиалогОткрытияФайла.Выбрать(); ИмяФайла2 = ДиалогОткрытияФайла.ПолноеИмяФайла; // Сравнить выбранные файлы. СравнениеФайлов = Новый СравнениеФайлов(); СравнениеФайлов.ПервыйФайл = ИмяФайла1; СравнениеФайлов.ВторойФайл = ИмяФайла2; СравнениеФайлов.ИгнорироватьПустоеПространство = Истина; СравнениеФайлов.СпособСравнения = СпособСравненияФайлов.ТекстовыйДокумент; СравнениеФайлов.ПоказатьРазличия();

Как организовать контроль формирования файла внешним приложением?

Процедура ПроверкаНаличияФайла() ИмяКаталога = "c:\temp"; Маска = "*.xml"; НайденныеФайлы = НайтиФайлы(ИмяКаталога, Маска); Для Каждого Файл Из НайденныеФайлы Цикл Сообщить(Файл.Имя); КонецЦикла; КонецПроцедуры ПодключитьОбработчикОжидания("ПроверкаНаличияФайла", 10);

Выбор каталога

Режим = РежимДиалогаВыбораФайла.ВыборКаталога; ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытия.Каталог = ""; ДиалогОткрытия.МножественныйВыбор = Ложь; ДиалогОткрытия.Заголовок = "Выберите каталог"; Если ДиалогОткрытия.Выбрать() Тогда ПутьККаталогу = ДиалогОткрытия.Каталог; КонецЕсли;