Программирование в 1СЧетверг, 21.11.2024, 18:08

| RSS
Главная | Каталог статей
Меню сайта

Категории раздела
Основы [36]
Общие вопросы по 1С 7.7 [88]
1С: Бухгалтерия 7.7 [7]
1С: Торговля 7.7 [4]
1С:Зарплата и кадры 7.7 [1]
1С 7.7: Проблемы и решения [33]
УРБД [3]
Управление Распределенными Базами Данных
OLE [2]
Механизм обмена данными между базами 1С через OLE
SQL [1]
Сервер терминалов [1]
Интеграция с внешними приложениями [3]
FAQ по 1С v.7.7 [7]
FAQ по 1С v.7.7

Поиск

Поиск по сайту

Главная » Статьи » 1С v.7.7 » Общие вопросы по 1С 7.7

Файловая система
    Для работы с файлами и каталогами в 1С:Предприятие используется специальный объект "ФС" (файловая система). Средства языка 1С имеют возможности поиска, копирования, переименования, удаления и совершения других операций с файлами и каталогами.
 
Обращение к файловой системе
  
    Для работы с файловой системой предназначен объект "ФС". В принципе его не требуется создавать с помощью функции СоздатьОбъект. Можно считать, что он уже создан. Но 1С позволяет создать сколько угодно таких объектов при помощи функции СоздатьОбъект; Это может оказаться полезным при создании рекурсивных функций для работы с фаловой системой. Пример такой функции будет рассмотрен далее.
  
Пример:
  
ГдеМыНаходимся = ФС.ТекКаталог();
ФС.СоздатьКаталог("DOCS");
НовФС = СоздатьОбъект("ФС");

Объект "ФС" имеет следующие методы:
  
Метод
Описание
ВыбратьФайл(<ИмяФайла>)
Открывает окно диалога выбора/сохранения файла. Возвращает: 0 - если в окне диалога нажата кнопка 'Отмена', 1 - если нажата кнопка 'ОК'.

Синтаксис: ВыбратьФайл (<ТипДиалога>, <ИмяФайла>, <ИмяНачКаталога>, <ЗаголовокОкна>, <Фильтр>, <Расширение>, <Таймаут>)

Параметры:
<ТипДиалога> -: 0 - диалог типа <открыть>, 1 - диалог типа <сохранить>;
<ИмяФайла> - переменная, содержащая на входе строку с именем файла, а на выходе - имя выбранного файла;
<ИмяНачКаталога> - переменная, содержащая на входе строку с начальным каталогом, а на выходе - имя выбранного каталога;
<ЗаголовокОкна> - строка с заголовком окна;
<Фильтр> - строка с фильтром отбора файлов (например: 'Все файлы (*.*) |*.*');
<Расширение> - строка с расширением файла по умолчанию;
<Таймаут> - время ожидания отклика пользователя в секундах (необязателен).
ВыбратьФайлКартинки
Открывает окно диалога выбора/сохранения файла картинки.
Возвращает: 0 - если в окне диалога нажата кнопка 'Отмена', 1 - если нажата кнопка 'ОК'.
Синтаксис: ВыбратьФайлКартинки (<ТипДиалога>, <ИмяФайла>, <ИмяНачКаталога>, <ЗаголовокОкна>, <Расширение>, <Таймаут>)
ВыбратьКаталог
Открывает окно диалога выбора каталога.
Возвращает: 0 - если в окне диалога нажата кнопка 'Отмена'; 1 - если в окне диалога нажата кнопка 'ОК', при этом в переменную <ИмяНачКаталога> возвращается имя выбранного каталога; -1 (минус единица) - закончилось время <Таймаут> ожидания отклика пользователя.
Синтаксис: ВыбратьКаталог(<ИмяКаталога>,<ЗаголовокОкна>,<Таймаут>)
СуществуетФайл
Проверяет существование файла..
Возвращает: 1 - файл существует; 0 - не существует.
Синтаксис: СуществуетФайл(<ИмяФайла>)
КопироватьФайл
Копирует файл.
Синтаксис: КопироватьФайл(<ИмяФайлаИсточника>,<ИмяФайлаПриемника>,<ФлагПерезаписи>)
Параметры:
<ИмяФайлаИсточника> - строка с именем файла источника;
<ИмяФайлаПриемника> - строка с именем файла приемника;
<ФлагПерезаписи> -:
0 - существующий файл приемника перезаписать;
1 - существующий файл приемника не перезаписывать.
УдалитьФайл
Удаляет файл.
Синтаксис: УдалитьФайл(<ИмяФайла>)
ПереименоватьФайл
Переименовать/переместить файл.
Синтаксис: ПереименоватьФайл(<ИмяФайлаИсточника>, <ИмяФайлаПриемника>, <ФлагПерезаписи>)

Параметры:
<ИмяФайлаИсточника> - строка с именем файла источника;
<ИмяФайлаПриемника> - строка с новым именем файла;
<ФлагПерезаписи> -:
0 - запрещает перемещение файла между дисками и существующий файл приемника не перезаписывается;
1 - разрешает перемещение файла между дисками (только для файлов) и существующий файл приемника перезаписывается.
НайтиПервыйФайл
Открывает выборку файлов по заданной маске и находит первый файл.
Возвращает строку с именем найденного файла.
Синтаксис: НайтиПервыйФайл(<МаскаИмени>)
НайтиСледующийФайл
Находит следующий файл по открытой выборке файлов.
Возвращает строку с именем найденного файла.
Синтаксис: НайтиСледующийФайл()
АтрибутыФайла
Возвращает атрибуты файла (в параметрах).
Синтаксис:
АтрибутыФайла (<ИмяФайла>, <РазмерФайла>, <АтрибутыФайла>, <ВремяСоздания>, <ВремяПоследнегоДоступа>, <ВремяПоследнейЗаписи>, <РасширенноеИмяФайла>)

Атрибуты файла закодированы, об этом см. Синтакс-Помощник или описание встроенного языка
СоздатьКаталог
Создать новый каталог (папку).
Синтаксис:СоздатьКаталог(<ИмяКаталога>)
УдалитьКаталог
Удаляет каталог файлов.
Синтаксис: УдалитьКаталог(<ИмяФайла>)
УстТекКаталог
Устанавливает текущий каталог файлов.
Синтаксис: УстТекКаталог(<ИмяФайла>)
ТекКаталог
Возвращает строку с именем текущего каталога файлов.
WindowsКаталог
Возвращает строку с именем Windows директории.
СвободноеМестоНаДиске
Возвращает размер свободного дискового пространства в байтах.
Синтаксис: СвободноеМестоНаДиске(<ИмяДиска>)

Также часто применяются системные функции:

Метод
Описание
КаталогИБ
Возвращает имя каталога базы данных.
КаталогПользователя
Возвращает имя каталога пользователя.
КаталогПрограммы
Возвращает имя каталога с исполняемыми файлами системы 1С:Предприятие.
КаталогВременныхФайлов
Возвращает имя каталога временных файлов.
ИмяКомпьютера
Возвращает сетевое имя компьютера, работающего в данный момент с программой.

Примеры

Пример 1

//переместить все текстовые файлы (*.txt) из каталога информационной базы в каталог TXT.
ФС.УстТекКаталог(КаталогИБ());
ИмяФайла = "";
ИмяФайла = ФС.НайтиПервыйФайл("*.txt");
Если ИмяФайла <> "" Тогда 
     ФС.СоздатьКаталог("TXT"); 
     ФС.КопироватьФайл(ИмяФайла,ФС.ТекКаталог() + "TXT" + ИмяФайла); 
     ФС.УдалитьФайл(ИмяФайла);

     Пока 1=1 Цикл 
          ИмяФайла = " "; 
          ИмяФайла = ФС.НайтиСледующийФайл() 
          Если ИмяФайла <> "" Тогда 
               ФС.КопироватьФайл(ИмяФайла,ФС.ТекКаталог() + "TXT" + ИмяФайла); 
               ФС.УдалитьФайл(ИмяФайла); 
          Иначе
               Прервать
          КонецЕсли
     КонецЦикла;
КонецЕсли;

Пример 2

//выбрать файл с фотографией сотрудника
ИмяФайла = "";
ИмяКаталога = КаталогИБ();
Если ФС.ВыбратьФайлКартинки(0,ИмяФайла,ИмяКаталога,"Укажите файл с фотографией:",,20)=1 Тогда
     ВремКартинка = СоздатьОбъект("Картинка"); 
     ВремКартинка.Загрузить(ИмяКаталога + ИмяФайла); 
     КартинкаНаФорме.УстановитьКартинку(ВремКартинка);
КонецЕсли;
 
Пример 3
 
При переборе файлов методами НайтиПервыйФайл() и НайтиСледующийФайл() файловая система перебирает как файлы, так и каталоги.
Для определения что выбрано - файл или каталог, служит приведенная ниже функция
 
Функция ЭтоКаталог(ИмяФайла)
     Перем Размер, Атрибуты, Создан, Доступ, Запись, РасшИмяФайла
     Рез = 0; 
     ФС.АтрибутыФайла(ИмяФайла, Размер, Атрибуты, Создан, Доступ, Запись, РасшИмяФайла); 
     Если Сред(Атрибуты,4,1) = "1" Тогда 
          Рез = 1; 
     КонецЕсли
     Возврат Рез;
КонецФункции
 
Пример 4
 
Этот пример показывает работу с файловой системой через рекурсивную процедуру, создающую объект "ФС".
В этой процедуре используется функция ЭтоКаталог() из предыдущего примера.
Эта процедура позволяет копировать все файлы или файлы с заданным расширением из одного каталога в другой, включая все вложенные подкаталоги.
 
КопироватьФайлы(КаталогЗаявок,КаталогDATAOUT,"csv");
 
Процедура КопироватьФайлы(ПутьОткуда,ПутьКуда,Расширение)
     ФС_ = СоздатьОбъект("ФС"); 
     ИмяФайла = ФС_.НайтиПервыйФайл(ПутьОткуда+"\*.*"); 
     Пока ПустаяСтрока(ИмяФайла) = 0 Цикл 
          Если (ИмяФайла <> ".") И (ИмяФайла <> "..") Тогда 
               Если ЭтоКаталог(ПутьОткуда+"\"+ИмяФайла) = 1 Тогда 
                    ПодКаталогОткуда = ПутьОткуда + "\"+ИмяФайла
                    ПодКаталогКуда = ПутьКуда + "\"+ИмяФайла
                    // Проверим наличие подкаталога в папке ПутьКуда
                    // - если его нет, создадим 
                    Если (ФС_.СуществуетФайл(ПодКаталогКуда) = 0) ИЛИ
                            (ЭтоКаталог(ПодКаталогКуда) = 0) Тогда 
                         ФС_.СоздатьКаталог(ПодКаталогКуда); 
                    КонецЕсли
                    КопироватьФайлы(ПодКаталогОткуда,ПодКаталогКуда,Расширение); 
               Иначе
                    Поз = Найти(ИмяФайла,"."); 
                    Расш = Нрег(?(Поз>0,Сред(ИмяФайла,Поз+1),"")); 
                    Если Расш <> Нрег(Расширение) Тогда 
                         ИмяФайла = ФС_.НайтиСледующийФайл(); 
                         Продолжить
                    КонецЕсли;
                    ИмяФайлаИсточника = ПутьОткуда + "\" + ИмяФайла
                    ИмяФайлаПриемника = ПутьКуда + "\" + ИмяФайла
                    ФС_.КопироватьФайл(ИмяФайлаИсточника,ИмяФайлаПриемника,0); // Копируем с перзаписью 
               КонецЕсли;
          КонецЕсли
          ИмяФайла = ФС_.НайтиСледующийФайл(); 
     КонецЦикла;
КонецПроцедуры
Категория: Общие вопросы по 1С 7.7 | Добавил: Spacer (03.10.2009)
Просмотров: 22852
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика

    Copyright 1C:Programmer © 2024
    Бесплатный конструктор сайтов - uCoz