Имя: Пароль:
1C
1С v8
После записи файла на флешку, не получается безопасно вытащить флешку.
,
0 FoXSkr
 
04.07.13
11:33
Доброго времени суток.

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

ТекстНаЗапись = Новый ТекстовыйДокумент;
ТекстНаЗапись.ДобавитьСтроку(Стр1);
ТекстНаЗапись.Записать(ПутьКФайлу, КодировкаТекста.OEM);

Процедура отрабатывается, форма закрывается (я так понимаю все переменные при этом убиваются). Но флешку все равно вытащить не получается. В чем проблема подскажите плиз.
1 ДенисЧ
 
04.07.13
11:37
Скажи в начале процедуры
Перем ТекстНаЗапись;
2 Maxus43
 
04.07.13
11:41
или ТекстНаЗапись = Неопределено в конце
3 samozvanec
 
04.07.13
11:49
а лучше напиши
4 FoXSkr
 
04.07.13
11:50
(1), (2) Не помогло не то не другое.
5 samozvanec
 
04.07.13
11:51
диалог выбора, еще что-то?
6 FoXSkr
 
04.07.13
11:51
(3) С диалогом выбора тоже так поступил (как описано в (1) и в (2)).
7 acsent
 
04.07.13
11:53
а где Закрыть();
8 acsent
 
04.07.13
11:54
используй лучше ЗаписьТекста
9 samozvanec
 
04.07.13
11:54
сдается мне, там есть еще код
10 Aprobator
 
04.07.13
11:54
(7) а нет его у ТекстовогоДокумента.
(0) Попробуй вместо ТекстовогоДокумента заюзать ЗаписьТекста. Там есть метод закрыть.
11 George Wheels
 
04.07.13
11:58
После записи файла перейти в другую папку (не на флешке). Та же беда с Acrobat-ом, если не завершить процесс.
12 FoXSkr
 
04.07.13
12:04
(8) Всмысле как перейти
13 FoXSkr
 
04.07.13
12:06
(10) Тоже не взлетело :(

Перем ТекстНаЗапись ;
ТекстНаЗапись = Новый ЗаписьТекста(ПутьКФайлу, КодировкаТекста.OEM);
ТекстНаЗапись .ЗаписатьСтроку(Стр1);
ТекстНаЗапись .Закрыть();
ТекстНаЗапись = Неопределено;
14 Grobik
 
04.07.13
12:09
(12) наверно записать  в файл находящийся на винте. Заодно и бекап будет.
15 samozvanec
 
04.07.13
12:19
пиши во временный файл, потом копируй на флешку
16 Серго62
 
04.07.13
12:41
(0) Попробуй после записи написать еще раз
ТекстНаЗапись = Новый ТекстовыйДокумент;
Проблема скорей всего в том, что объект ТекстНаЗапись "держит"  файл в открытом состоянии, поэтому операционка не дает безопасно извлечь флешку.
17 FoXSkr
 
04.07.13
12:51
Не дело оказывается вообще не в записи файла.
По все видимости дело в диалоге выбора.
Вообще закоментировал запись файла оставил только:

   Перем ДиалогОткрытияКаталога;
   
   Режим = РежимДиалогаВыбораФайла.ВыборКаталога;
   ДиалогОткрытияКаталога = Новый ДиалогВыбораФайла(Режим);
   ДиалогОткрытияКаталога.Заголовок = "Выбирете каталог для записи";
   ДиалогОткрытияКаталога.Каталог = "A:\";
   
   Если Не ДиалогОткрытияКаталога.Выбрать() Тогда
       Возврат;
   КонецЕсли;
   
   Каталог = ДиалогОткрытияКаталога.Каталог;    
   Каталог = ?(Прав(Каталог, 1) = "\", Каталог , Каталог + "\");
   
   //ДополнительныйМодуль.СформироватьФайлыНачисленийДляКазКомерцБанка(Ссылка, Каталог);
   ДиалогОткрытияКаталога = Неопределено;

Даже при таком раскладе программа уже не дает вытащить флешку.
18 George Wheels
 
04.07.13
12:52
(16) Не объект ТекстНаЗапись "держит" файл в открытом состоянии, а сама 1С держит последний использовавшийся каталог. В 7.7 делал (давно), в 8 что-то не найду как определить текущий каталог. Ну и как его сменить.
19 Серго62
 
04.07.13
13:03
(18) может так: КомандаСистемы("cd c:\temp", "c:\temp");
20 Aprobator
 
04.07.13
13:06
(18) прикольно однако. Надо будет взять себе на заметку.
21 FoXSkr
 
04.07.13
13:22
(18) Не тоже не взлетело.
22 hhhh
 
04.07.13
13:24
(21) а файл-то появляется? И именно тот файл?
23 FoXSkr
 
04.07.13
13:37
(22) Да файл появляется.
Но я потом убрал вообще формирование файла см (17).
После того как я вообще открываю диалог выбора и выбираю папку.
24 Серго62
 
04.07.13
14:03
(23) Попробуй после выбора каталога написать ДиалогОткрытияКаталога.Каталог = "С:\";
или любой другой путь. Может он после этого флешку отпустит...
25 FoXSkr
 
04.07.13
14:31
(24) Я уже склоняюсь сказать буху: "не парьтесь не стоит оно того".
26 Grobik
 
04.07.13
14:55
(25) Попробуй таки (14)

То есть после записи строки в файл на флешку, записывать эту же строку в файл на диске.