Имя: Пароль:
1C
1С v8
Создать файл, включая все промежуточные каталоги
,
0 suvolod
 
03.04.13
07:57
Добрый день! Есть путь типа "D:\Exchange\Obr\Log\01.04.2013\log.txt"

В языке 1С я не смог найти функции, которая может создать файл, включая все промежуточные каталоги, в которых должен лежать файл лога. Такая функция есть? ... или придется парсировать строку, выделять из нее названия каталогов, и создавать их по одному?
1 ZanderZ
 
03.04.13
07:59
есть объект "Файл" - у него свойство "Путь"
2 Jonny_Khomich
 
03.04.13
08:00
(0) СП, гугл, яндекс рулит!
3 suvolod
 
03.04.13
08:01
(1) Что мне это даст? Путь - это свойство, а мне нужно метод, типа

ЛогФайл = СоздатьФайл(D:\Exchange\Obr\Log\01.04.2013\log.txt")... и чтобы файл был создан, включая все каталоги: Exchange, Obr, Log ...etc
4 Jonny_Khomich
 
03.04.13
08:03
(3) Пример:

ИмяФайла = "C:\Test\readme.txt";
ВыбФайл = Новый Файл(ИмяФайла);
Если ВыбФайл.Существует() Тогда
   Стр = "Результат выполнения:"+Символы.ПС+
   +"Файл: "+ВыбФайл.ПолноеИмя+Символы.ПС+
   +"Имя: "+ ВыбФайл.Имя+Символы.ПС+
   +"Имя без расширения: "+ВыбФайл.ИмяБезРасширения+Символы.ПС+
   +"Расширение: "+ВыбФайл.Расширение+Символы.ПС+
   +"Путь: "+ВыбФайл.Путь+Символы.ПС+
   +"Размер: "+ВыбФайл.Размер()+Символы.ПС+
   +"Это файл: "+ВыбФайл.ЭтоФайл()+Символы.ПС+
   +"Время изменения: "+ВыбФайл.ПолучитьВремяИзменения()+Символы.ПС+
   +"Только чтение: "+ВыбФайл.ПолучитьТолькоЧтение()+Символы.ПС+
   +"Невидимость: "+ВыбФайл.ПолучитьНевидимость();  
   Сообщить(Стр);
Иначе
   Предупреждение("Файл не найден!");
КонецЕсли;

//Результат выполнения:
//Файл: C:\Test\readme.txt
//Имя: readme.txt
//Имя без расширения: readme
//Расширение: .txt
//Путь: C:\Test//Размер: 916
//Это файл: истина
//Время изменения: 31.10.2000 12:42:04
//Только чтение: истина
//Невидимость: ложь


Выдежрка из СП
5 suvolod
 
03.04.13
08:07
(4)Jonny_Khomich, спасибо конечно, но это тоже не то. Ладно... видимо, придется самому писать функцию СоздатьФайлВключаяВсеПромежуточныеКаталоги() :)
6 ZanderZ
 
03.04.13
08:08
(3) читай СП там все есть
Файло = Новый Файл(ИмяФайла);
Путь = Файло.Путь;
Текст = Новый ЗаписьТекста(Путь+ИмяФайлаТвоего, КодировкаТекста.ANSI);
Текст.ЗаписатьСтроку("Добро пожаловать!");
Текст.ЗаписатьСтроку("Посторонним вход воспрещен.");
Текст.Закрыть();
7 ZanderZ
 
03.04.13
08:08
(5) ага изобретай колесо
8 Jonny_Khomich
 
03.04.13
08:09
(7) +1
9 suvolod
 
03.04.13
08:15
(6), (7) Не получается так.. падает в исключение при попытке выполнения строки с пока не существующим путем:

Новый ЗаписьТекста(Путь + "log.txt", КодировкаТекста.ANSI);
10 ZanderZ
 
03.04.13
08:17
(9) от человек даже думать уже не хочет... создай каталог, потом пиши. Метод для создания каталога я думаю найдешь или сообразишь
11 suvolod
 
03.04.13
08:19
На всякий случай: тестировал вот на таком коде:

ИмяФайлаЛогов    = "C:\111\log.txt";
ЛогФайл = Новый Файл(ИмяФайлаЛогов);
Путь = ЛогФайл.Путь;
Текст = Новый ЗаписьТекста(Путь + "log.txt", КодировкаТекста.ANSI);
Текст.ЗаписатьСтроку("Добро пожаловать!");
Текст.ЗаписатьСтроку("Посторонним вход воспрещен.");
Текст.Закрыть();

... хотя, на мой взгляд, здесь первые строчки вообще лишние. Достаточно было и так:

ИмяФайлаЛогов    = "C:\111\log.txt";
Текст = Новый ЗаписьТекста(ИмяФайлаЛогов, КодировкаТекста.ANSI);
Текст.ЗаписатьСтроку("Добро пожаловать!");
Текст.ЗаписатьСтроку("Посторонним вход воспрещен.");
Текст.Закрыть();
12 suvolod
 
03.04.13
08:21
(9). Блин, так я об этом и справшивал еще в (0)!
ЕСТЬ ИЛИ НЕТ функция, создающая файл вместе с каталогами ?!!!
13 suvolod
 
03.04.13
08:22
всем спасибо за участие.. пошел писать универсальную функцию
14 Галахад
 
гуру
03.04.13
08:31
Млин. Какие нафиг универсальные?

СоздатьКаталог("C:\1\1\1");

ИмяФайлаЛогов    = "C:\1\1\1\log.txt";
Текст = Новый ЗаписьТекста(ИмяФайлаЛогов, КодировкаТекста.ANSI);
Текст.ЗаписатьСтроку("Добро пожаловать!");
Текст.ЗаписатьСтроку("Посторонним вход воспрещен.");
Текст.Закрыть();
15 Cyberhawk
 
03.04.13
08:37
(0) если у тебя на входе готовое имя файла, то в 1С нет готовой функции, которая создаст тебе этот файл вместе с каталогом. Нужно отрезать все до последнего слеша и создать каталог, а затем уже файл в этом каталоге.
16 ZanderZ
 
03.04.13
08:42
(15) еще один с парсером строки..
17 suvolod
 
03.04.13
08:49
(14) Снимаю шляпу... Про СоздатьКаталог - знал, но про то, что он способен создавать вложенные каталоги - не додумался.
18 Cyberhawk
 
03.04.13
08:53
(16) ну иначе-то никак, если строка с именем файла
19 kosts
 
03.04.13
09:01
(18) Для несуществующего файла вполне работает

ИмяФайла = "D:\Exchange\Obr\Log\01.04.2013\log.txt";
ВыбФайл = Новый Файл(ИмяФайла);
Сообщить(ВыбФайл.Путь);


D:\Exchange\Obr\Log\01.04.2013\