Работа с файлами
Диалог выбора файла
При создании обработок или в процессе разработки конфигураций может возникнуть необходимость организовать выбор файла на форме. Для этой цели в платформе 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);
Выбор каталога
Режим = РежимДиалогаВыбораФайла.ВыборКаталога; ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытия.Каталог = ""; ДиалогОткрытия.МножественныйВыбор = Ложь; ДиалогОткрытия.Заголовок = "Выберите каталог"; Если ДиалогОткрытия.Выбрать() Тогда ПутьККаталогу = ДиалогОткрытия.Каталог; КонецЕсли;