Основная страница

 

Глава 37
Работа с Файлами


 

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

Контекст работы с Файлами

Во всех программных модулях для работы с файлами следует использовать методы объекта типа «ФС». По умолчанию в системе всегда доступен уже существующий объект с именем ФС (англоязычный синоним — FS) (имя существующего объекта совпадает с названием типа данных), к которому можно непосредственно применять методы объекта ФС. Кроме того, можно создать произвольное число объектов типа «ФС» при помощи функции СоздатьОбъект. Чтобы вызвать метод объекта, имя метода (с указанием необходимых параметров) пишется через точку после имени объекта.

Англоязычный синоним ключевого слова ФСFS.

Пример:

* Здесь приведены примеры различных способов вызова методов объекта «ФС».

ФС.УдалитьФайл("Текст1.txt");

ВАКФайлы = СоздатьОбъект("ФС");

ВАКФайлы.УдалитьФайл("Текст3.txt");

Методы объекта «ФС»

ВыбратьФайл

Открывает окно диалога выбора/сохранения файла.

Синтаксис:

ВыбратьФайл(<ТипДиалога>, <ИмяФайла>, <ИмяНачКаталога>, <3аголовокОкна>, <Фильтр>,

            <Расширение>, <Таймаут>)

Англоязычный синоним:

SelectFile

Параметры:

<TипДиaлoгa>

Числовое выражение, значение которого определяет тип открываемого диалога. Допустимые значения: 0 — диалог типа «открыть», 1 — диалог типа «сохранить».

<ИмяФайла>

Имя переменной, содержащей строковое значение с именем файла. В эту же переменную система возвращает имя выбранного файла.

<ИмяНачКаталога>

Имя переменной, содержащей строковое значение с именем начального каталога. В эту же переменную система возвращает имя выбранного каталога.

<ЗаголовокОкна>

Строковое выражение, с помощью которого можно задать заголовок открываемого окна.

<Фильтр>

Строковое выражение, с помощью которого можно задать список фильтров отбора файлов. Фильтр состоит из двух частей, разделенных сиволом "" (вертикальная черта): строки представления, которая отображается в окне выбора файла, и непосредственно строки маски. В строке маски можно использовать символ "*", что означает наличие любого числа произвольных символов. Символ "?" в строке маски означает наличие одного произвольного символа. Одновременно можно задавать несколько фильтров в виде списка, в качестве разделителей используется символ "|" (вертикальная черта). Например, список из двух фильтров:

"Текст(*.txt)|*.txt| Таблицы(*.mxl)|*.mxl"

<Расширение>

Строковое выражение, с помощью которого можно задать расширение файла по умолчанию, которое используется системой при записи файла.

<Таймаут>

Необязательный параметр. Числовое выражение, значение которого задает время ожидания системы (в секундах) на отклик пользователя.

Возвращаемое значение:

Число: 0 — если в окне диалога нажата кнопка «Отмена»; 1 — если в окне диалога нажата кнопка «ОК», при этом в переменную <ИмяФайла> возвращается выбранное имя файла, а в переменную <ИмяНачКаталога> возвращается имя выбранного каталога; -1 (минус единица) — закончилось время <Таймаут> ожидания отклика пользователя.

Описание:

Метод ВыбратьФайл открывает окно диалога выбора/сохранения файла.

Пример:

* В данном примере приведена процедура вызова диалога выбора файла.

Процедура УдалФ()

   ИмяВыбрФайла = "";

   ИмяПути="";

   Если ФС.ВыбратьФайл(0, ИмяВыбрФайла, ИмяПути, "Выберите файл",

           "Все файлы (*.*)!*.*", , ) = 1 Тогда

      ФС.УдалитьФайл(ИмяПути + ИмяФайла);

   КонецЕсли;

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

ВыбратьФайлКартинки

Открывает окно диалога выбора/сохранения файла картинки.

Синтаксис:

ВыбратьФайлКартинки(<ТипДиалога>, <ИмяФайла>, <ИмяНачКаталога>, <3аголовокОкна>,

                    <Расширение>, <Таймаут>)

Англоязычный синоним:

SelectPictFile

Параметры:

<ТипДиалога>

Числовое выражение, значение которого определяет тип открываемого диалога. Допустимые значения: 0 — диалог типа «открыть», 1 — диалог типа «сохранить».

<ИмяФайла>

Имя переменной, содержащей строковое значение с именем файла. В эту же переменную система возвращает имя выбранного файла.

<ИмяНачКаталога>

Имя переменной, содержащей строковое значение с именем начального каталога. В эту же переменную система возвращает имя выбранного каталога.

<3аголовокОкна>

Строковое выражение, с помощью которого можно задать заголовок открываемого окна.

<Расширение>

Строковое выражение, с помощью которого можно задать расширение файла по умолчанию, которое используется системой при записи файла.

<Таймаут>

Необязательный параметр. Числовое выражение, значение которого задает время ожидания системы (в секундах) на отклик пользователя.

Возвращаемое значение:

Число: 0 — если в окне диалога нажата кнопка «Отмена»; 1 — если в окне диалога нажата кнопка «ОК», при этом в переменную <ИмяФайла> возвращается выбранное имя файла, а в переменную <ИмяНачКаталога> возвращается имя выбранного каталога; -1 (минус единица) — закончилось время <Таймаут> ожидания отклика пользователя.

Описание:

Метод ВыбратьФайлКартинки открывает окно диалога (с возможностью предварительного просмотра) выбора/сохранения файла картинки.

Пример:

* В данном примере приведена процедура вызова диалога выбора файла картинки.

// Фото — Объект типа "Картинка"

Процедура ЗагрКарт()

   ИмяВыбрФайла = "";

   ИмяПути = "";

   // Выбор файла с просмотром

   Если ФС.ВыбратьФайлКартинки(0, ИмяВыбрФайла, ИмяПути,

         "Выберите файл", "bmp", ) = 1 Тогда

      Фото.Загрузить(ИмяПути + ИмяВыбрФайла);

   КонецЕсли;

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

ВыбратьКаталог

Открывает окно диалога выбора каталога.

Синтаксис:

ВыбратьКаталог(<ИмяКаталога>, <3аголовок>, <Таймаут>)

Англоязычный синоним:

SelectDirectory

Параметры:

<ИмяКаталога>

Имя переменной, содержащей строковое значение с именем начального каталога. В эту же переменную система возвращает имя выбранного каталога.

<3аголовок>

Строковое выражение, с помощью которого можно задать заголовок открываемого окна.

<Таймаут>

Необязательный параметр. Числовое выражение, значение которого задает время ожидания системы (в секундах) на отклик пользователя.

Возвращаемое значение:

Число: 0 — если в окне диалога нажата кнопка «Отмена»; 1 — если в окне диалога нажата кнопка «ОК», при этом в переменную <ИмяНачКаталога> возвращается имя выбранного каталога; -1 (минус единица) — закончилось время <Таймаут> ожидания отклика пользователя.

Описание:

Метод ВыбратьКаталог открывает окно диалога выбора каталога.

Пример:

* В данном примере приведена процедура вызова диалога выбора каталога.

Функция УстКат(ИмяПути)

   Если ФС.ВыбратьКаталог(ИмяПути, "Выберите каталог", 10) = 1 Тогда

      Возврат ИмяПути;

   Иначе

      Возврат КаталогПользователя();

   КонецЕсли;

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

СуществуетФайл

Проверяет существование файла.

Синтаксис:

Существуетфайл(<ИмяФайла>)

Англоязычный синоним:

ExistFile

Параметры:

<ИмяФайла>

Строковое выражение с именем файла.

Возвращаемое значение:

Число: 1 — файл существует; 0 — не существует.

Описание:

Метод СуществуетФайл проверяет существование файла.

Пример:

Процедура СущФ(ИмяФайла)

   Если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда

      Сообщить("Файл " + ИмяФайла + " — существует");

   КонецЕсли;

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

КопироватьФайл

Копирует файл.

Синтаксис:

КопироватьФайл(<ИмяФайлаИсточника>, <ИмяФайлаПриемника>, <ФлагОтказаПерезаписи>)

Англоязычный синоним:

FileCopy

Параметры:

<ИмяФайлаИсточника>

Строковое выражение с именем файла источника.

<ИмяФайлаПриемника>

Строковое выражение с именем файла приемника.

<ФлагОтказаПерезаписи>

Числовое выражение: 0 — при существовании файла приемника заменяет его на копируемый; 1 — при существовании файла приемника копирования не производится.

Описание:

Метод КопироватьФайл копирует файл-источник в файл-приемник.

Пример:

* В данном примере приведена процедура копирования файла.

Процедура КопирФ()

   ФС.КопироватьФайл(ИмяВыбрФайла, ФПриемник, 1);

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

УдалитьФайл

Удалить файл.

Синтаксис:

УдалитьФайл(<ИмяФайла>)

Англоязычный синоним:

DeleteFile

Параметры:

<ИмяФайла>

Строковое выражение с именем удаляемого файла.

Описание:

Метод УдалитьФайл удаляет указанный файл.

Пример:

* В данном примере приведена процедура удаления файла.

Процедура УдалФ()

   ФС.УдалитьФайл(ИмяФайла);

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

ПереименоватьФайл

Переименовать файл.

Синтаксис:

ПереименоватьФайл(<ИмяФайлаИсточника>, <ИмяФайлаПриемника>, <ФлагПерезаписи>)

Англоязычный синоним:

MoveFile

Параметры:

<ИмяФайлаИсточника>

Строковое выражение с именем файла источника.

<ИмяФайлаПриемника>

Строковое выражение с требуемым именем файла.

<ФлагПерезаписи>

Числовое выражение: 0 — запрещает перемещение файла между дисками и при существовании файла приемника копирования не производится; 1 — разрешает перемещение файла (только для файлов) между дисками и при существовании файла приемника замещает его на копируемый.

Описание:

Метод ПереименоватьФайл выполняет переименование (перемещение) указанного файла.

Пример:

* В данном примере приведена процедура переименования файла.

Процедура ПереимФ()

   ФС.ПереименоватьФайл(Результат, ФПриемник, 1);

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

НайтиПервыйФайл

Открывает выборку файлов по заданной маске и находит первый файл.

Синтаксис:

НайтиПервыйФайл(<МаскаИмени>)

Англоязычный синоним:

FindFirstFile

Параметры:

<МаскаИмени>

Строковое выражение с маской имен файлов. В строке маски можно использовать символ "*", что означает наличие любого числа произвольных символов. Символ "?" в строке маски означает наличие одного произвольного символа.

Возвращаемое значение:

Строка с именем найденного файла.

Описание:

Метод НайтиПервыйФайл находит первый файл и открывает выборку файлов по заданной маске.

Замечание. Методы НайтиПервыйФайл и НайтиСледующийФайл возвращают имена файлов в той же последовательности, как это делает команда Dir операционной системы MS DOS, т. е. если задана маска "*.*"для некорневого каталога, первым возвращаемым значением будет "." — обозначающая ссылку на текущий каталог. Имя следующего файла будет ".." — обозначающее ссылку на каталог уровнем выше. При получении следующих файлов возвращаемым значением будет имя найденного файла.

Пример:

* В данном примере приведена процедура открытия выборки файлов по заданной маске.

Процедура ПервФ()

   Результат = ФС.НайтиПервыйФайл("*.*");

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

См. также: НайтиСледующийФайл

НайтиСледующийФайл

Находит следующий файл по открытой выборке файлов.

Синтаксис:

НайтиСледующийФайл()

Англоязычный синоним:

FindNextFile

Возвращаемое значение:

Строка с именем найденного файла.

Описание:

Метод НайтиСледующийФайл находит следующий файл по открытой выборке файлов.

Пример:

* В данном примере приведена процедура взятия следующего файла выборки файлов.

Процедура СледФ()

   Результат = ФС.НайтиСледующийФайл();

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

См. также: НайтиПервыйФайл

АтрибутыФайла

Возвращает атрибуты файла.

Синтаксис:

АтрибутыФайла(<ИмяФайла>, <РазмерФайла> , <АтрибутыФайла>, <ВремяСоздания>,

            <ВремяПоследнДоступа>, <ВремяПоследнЗаписи>, <РасширенноеИмяФайла>)

Англоязычный синоним:

GetFileAttr

Параметры:

<ИмяФайла>

Строковое выражение с именем файла.

<РазмерФайла>

Возвращаемое Числовое значение размера файла в байтах.

<АтрибутыФайла>

Возвращаемое строковое значение длиной 9 символов, в котором закодированы атрибуты файла. Символы могут принимать значения "0" или "1":

Первый символ: если "1" — файл только для чтения;

Второй символ: если "1" — скрытый файл;

Третий символ: если "1" — системный файл;

Четвертый символ: если "1" — каталог;

Пятый символ: если "1" — архивный файл;

Шестой символ: если "1" — обычный файл (все другие атрибуты не установлены);

Седьмой символ: если "1" — временный файл;

Восьмой символ: если " 1" — файл, сжатый каким-либо архиватором;

Девятый символ: если "1" — нет доступа к файлу.

Для проверки атрибута можно применять выражение:

Цел(ПолученныйАтрибут/КодАтрибута)/2

где кодАтрибута — 1/2/4/16/32...

это выражение возвращает 1 или 0, в зависимости от того, установлен атрибут или нет.

<ВремяСоздания>

Возвращаемое строковое значение, содержащее дату и время создания файла.

<ВремяПоследнДоступа>

Возвращаемое строковое значение, содержащее дату и время последнего доступа к файлу.

<ВремяПоследнЗаписи>

Возвращаемое строковое значение, содержащее дату и время последней записи файла.

<РасширенноеИмяФайла>

Возвращаемое строковое значение, содержащее полное имя файла.

Описание:

Метод АтрибутыФайла считывает атрибуты файла и записывает их значения в передаваемые параметры.

Пример:

* В данном примере приведена процедура считывания атрибутов файла.,

Лроцедура АттрФ()

   ФС.АтрибутыФайла(ИмяВыбрФайла, A, B, C, D, E, F);

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

СоздатьКаталог

Создает новый каталог файлов.

Синтаксис:

СоздатьКаталог(<ИмяКат>)

Англоязычный синоним:

CreateDirectory

Параметры:

<ИмяКат>

Строковое выражение с именем создаваемого каталога.

Описание:

Метод СоздатьКаталог создает новый каталог файлов.

Пример:

* В данном примере приведена процедура создания нового каталога файлов.

Процедура СоздДир()

   ФС.СоздатьКаталог(ИмяВыбрДир);

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

УдалитьКаталог

Удаляет каталог файлов.

Синтаксис:

УдалитьКаталог(<ИмяКат>)

Англоязычный синоним:

RemoveDirectory

Параметры:

<ИмяКат>    Строковое выражение с именем удаляемого каталога файлов.

Описание:

Метод УдалитьКаталог удаляет каталог файлов.

Пример:

* В данном примере приведена процедура удаления каталога файлов.

Процедура УдалДир()

   ФС.УдалитьКаталог(ИмяВыбрДир);

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

УстТекКаталог

Устанавливает текущий каталог файлов.

Синтаксис:

УстТекКаталог(<ИмяКат>)

Англоязычный синоним:

GetCurrentDirectory

Параметры:

<ИмяКат>

Строковое выражение с именем текущего каталога файлов.

Описание:

Метод УстТекКаталог устанавливает текущий каталог файлов.

Пример:

* В данном примере приведена процедура установки текущего каталога файлов

Процедура УстТекДир()

   ФС.УстТекКаталог(ИмяВыбрДир);

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

См. также: ТекКаталог

ТекКаталог

Возвращает текущий каталог файлов.

Синтаксис:

ТекКаталог()

Англоязычный синоним:

GetCurrentDirectory

Возвращаемое значение:

Строковое значение имени текущего каталога файлов.

Описание:

Метод ТекКаталог возвращает строковое значение имени текущего каталога файлов.

Пример:

ТекКат = ФС.ТекКаталог();

См. также: УстТекКаталог

WindowsКаталог

Возвращает имя Windows директории.

Синтаксис:

WindowsКаталог()

Англоязычный синоним:

GetWindowsDirectory

Возвращаемое значение:

Строковое значение — имя Windows директории.

Описание:

Метод WindowsКаталог возвращает имя Windows директории.

Пример:

WinKaT = ФC.WindowsКаталог();

СвободноеМестоНаДиске

Определить размер свободного дискового пространства.

Синтаксис:

СвободноеМестоНаДиске(<ИмяДиска>)

Англоязычный синоним:

GetDiskFreeSpace

Параметры:

<ИмяДиска>

Строковое выражение с именем диска.

Возвращаемое значение:

Численое значение — размер свободного дискового пространства в байтах.

Описание:

Метод СвободноеМестоНаДиске возвращает численое значение размера

свободного дискового пространства.

Пример:

* В данном примере приведена процедура определения свободного дискового пространства диска С:

Процедура РазмД()

   Рез = ФС.СвободноеМестоНаДиске("С:");

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







Перейти  к оглавлению: Описание встроенного языка