Примеры работы с файловой системой

В статье приведены подробные примеры работы с файловой системой в 1С: как читать текст из файла, записывать строки, сохранять и загружать сериализованные значения, проверять наличие файлов и удалять их. Рассмотрены доступные методы для тонкого, толстого клиента и веб-клиента.

Как прочитать текст из файла

Пример последовательного чтения из текстового файла. Рекомендуется использовать для чтения больших текстовых файлов.

&НаСервере
Процедура ПрочитатьТекстИзФайлаПример(ПолноеИмяФайла)
	Текст = Новый ЧтениеТекста(
	    ПолноеИмяФайла,
	    КодировкаТекста.ANSI,
	    Символы.ПС,
	    ,
	    Истина // Монопольный режим.  Необязательно
	);
	Стр = Текст.ПрочитатьСтроку();
	Если Стр  Неопределено Тогда // читаем пока есть что читать
		Сообщить(Стр);
		Стр = Текст.ПрочитатьСтроку();
	КонецЦикла;
КонецПроцедуры

Доступность: Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Как записать текст в файл

Пример последовательной записи текста в файл.

&НаСервере
Процедура ЗаписатьТекстВФайлПример(ПолноеИмяФайла)
    Текст = Новый ЗаписьТекста(
        ПолноеИмяФайла, // Полное имя файл
        КодировкаТекста.ANSI, // Кодировка в которой будет записан текст
        Символы.ПС, // Разделитель строк в файле. Не обязательно, по умолчанию "Перевод строки"
        Ложь // Истина - дописывать файл, Ложь - перезаписывать файл. Необязательно
    );    
    Текст.ЗаписатьСтроку("Пример текста, для проверки.");
    Текст.ЗаписатьСтроку("Записать текст в файл легко!");
    Текст.Закрыть();
КонецПроцедуры 

Доступность: Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Как сохранить любое значение в файл

Пример сохранения любого сериализуемого (значение которое 1С может преобразовывать в строку и обратно) значения в файл.

&НаСервере
Процедура ЗначениеВФайлПример(ПолноеИмяФайла)
    СохраняемоеЗначение = Новый Структура;
    СохраняемоеЗначение.Вставить("Имя", "Иван");
    СохраняемоеЗначение.Вставить("Лет", 27);
    ЗначениеВФайл(ПолноеИмяФайла, СохраняемоеЗначение);
КонецПроцедуры

Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Как прочитать любое значение из файла

Пример как загрузить любое сохранённое сериализованное значение из файла.

&НаСервере
Процедура ЗначениеИзФайлПример(ПолноеИмяФайла)
    СохраняемоеЗначение = ЗначениеИзФайла(ПолноеИмяФайла);
    Сообщить(СохраняемоеЗначение.Имя); // Иван
    Сообщить(СохраняемоеЗначение.Лет); // 27
КонецПроцедуры 

Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Как проверить наличие файла

Пример кода, для проверки наличия файла.

ПолноеИмяФайла = "C:\file_test.txt";
ФайлНаДиске = Новый Файл(ПолноеИмяФайла);
Если ФайлНаДиске.Существует() Тогда
	Сообщить("Файл "+ПолноеИмяФайла+" существует!");
КонецЕсли;

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Примечание: Для работы метода на веб-клиенте необходимо предварительно подключить расширение работы с файлами.

Как скопировать файл

Пример копирования файл-источника в файл-приемник. При копировании, если файл-приемник существует, он будет переписан.

ИмяФайлаИсточника = "C:\file_test.txt";
ИмяФайлаПриёмника = "C:\file_test_copy.txt";
КопироватьФайл(
	ИмяФайлаИсточника,
	ИмяФайлаПриёмника
);

Доступность: Тонкий клиент, сервер, веб-клиент, мобильный клиент, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Как переместить файл

Пример перемещения (переименования) указанного файла.

ИмяФайлаИсточника = "C:\file_test.txt";
ИмяФайлаПриёмника = "C:\tmp\file_test.txt";
ПереместитьФайл(
	ИмяФайлаИсточника,
	ИмяФайлаПриёмника
);

Доступность: Тонкий клиент, сервер, веб-клиент, мобильный клиент, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Как найти все файлы в указанном каталоге

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

КаталогДляПоиска = "C:\TEMP";
МаскаПоиска = "*.txt";
ИскатьВПодкаталогах = Ложь;
НайденныеФайлы = НайтиФайлы(
	КаталогДляПоиска,
	МаскаПоиска,
	ИскатьВПодкаталогах
);

Доступность: Тонкий клиент, сервер, веб-клиент, мобильный клиент, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Как удалить файлы в указанном каталоге

Пример удаления одного файла или группы файлов по заданным параметрам. Файлы будут удалены, если в указанных файлах не установлено свойство «Только чтение». В противном случае генерируется сообщение об ошибке.

// Удалить один файл
ИмяУдаляемогоФайла = "C:\file_test.txt";
УдалитьФайлы(
	ИмяУдаляемогоФайла
);

// Удалить файлы в каталоге по маске
КаталогДляПоиска = "C:\TEMP";
МаскаПоиска = "*.txt";// Если маску не указывать, то будут удалены все файлы
УдалитьФайлы(
	КаталогДляПоиска,
	МаскаПоиска
);

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Как найти файлы по маске из каталога

Обработчик команды «НайтиФайлы»

&НаКлиенте
Процедура НайтиФайлыВКаталоге(Команда)
    ВыбратьКаталог("Выбор каталога для поиска файлов", Новый ОписаниеОповещения("ПослеВыбораКаталогаДляПоиска", ЭтотОбъект));
КонецПроцедуры

Процедура ВыбратьКаталог()

&НаКлиенте
Процедура ВыбратьКаталог(ЗаголовокДиалога, Оповещение)
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
    Диалог.Заголовок = ЗаголовокДиалога;
    Диалог.Показать(Оповещение);
КонецПроцедуры

Процедура ПослеВыбораКаталогаДляПоиска()

&НаКлиенте
Процедура ПослеВыбораКаталогаДляПоиска(ВыбранныеФайлы, Параметры) Экспорт
    Если ВыбранныеФайлы = Неопределено Тогда
        Возврат;
    КонецЕсли;
    КаталогПоиска = ВыбранныеФайлы[0];
    Если ПустаяСтрока(МаскаФайлов) Тогда
        МаскаФайлов = "*.*";
    КонецЕсли;
    // Найти файлы в выбранном каталоге по указанной маске.
    НачатьПоискФайлов(Новый ОписаниеОповещения("НайтиФайлыВКаталогеЗавершение", ЭтотОбъект), КаталогПоиска, МаскаФайлов);
КонецПроцедуры 

Процедура НайтиФайлыВКаталогеЗавершение()

&НаКлиенте
Процедура НайтиФайлыВКаталогеЗавершение(МассивФайлов, Дополнительно) Экспорт
    Сообщение = Новый СообщениеПользователю;
    Для Каждого Файл Из МассивФайлов Цикл
        Сообщение.Текст = "Найден файл - " + Файл.Имя;
        Сообщение.Сообщить();
    КонецЦикла;
КонецПроцедуры

Поделиться с друзьями
Smirnov code
Добавить комментарий