|
как удалить файл из 1с выдает вот такую ошибку | ☑ | ||
---|---|---|---|---|
0
Sova112
15.01.16
✎
09:08
|
а (УдалитьФайлы)
УдалитьФайлы( Выборка.КаталогБазыДанных ); по причине: Ошибка удаления файлов по причине: Ошибка совместного доступа к файлу '\IBank\1.txt'. 32(0x00000020): Процесс не может получить доступ к файлу, так как этот файл занят другим процессом. |
|||
1
Lexey_
15.01.16
✎
09:10
|
(0) закрыть приложение, использующее этот файл
|
|||
2
Ник второй
15.01.16
✎
09:11
|
(0) А что в тексте ошибки не понятно?
1С, да и любая другая программа, удалить файл, который использует сторонняя программа не сможет. Освободи и удаляй |
|||
3
Sova112
15.01.16
✎
09:11
|
так я закрываю 1с и могу удалить файл
|
|||
4
Sova112
15.01.16
✎
09:12
|
как в 1с отклчится от файла тогда
|
|||
5
Ник второй
15.01.16
✎
09:13
|
(4) Все телепаты и знают как твоя программа заняла этот файл и темболее что это за файл
|
|||
6
Фрэнки
15.01.16
✎
09:13
|
(4) у тебя в самой 1С где-то в коде, написанном выше попытки удаления, файлы оказались заняты.
|
|||
7
Lexey_
15.01.16
✎
09:15
|
(4) уничтожить/закрыть объект встроенного языка, использующий файл
|
|||
8
Lexey_
15.01.16
✎
09:16
|
+(7)если ЧтениеТекста, то Закрыть()
|
|||
9
Sova112
15.01.16
✎
09:16
|
вот у меня весь код
Попытка Текст=Новый ТекстовыйДокумент; Текст.Прочитать(Выборка.КаталогБазыДанных); Для Ном = 1 По Текст.КоличествоСтрок() Цикл Стр=СокрЛП(Текст.ПолучитьСтроку(Ном)); НР=Найти(Стр,"="); Если НР>0 Тогда ИмяПоля=Сред(Стр,1,НР-1); ЗначениеПоля=Сред(Стр,НР+1); Если ИмяПоля="РасчСчет" Тогда Если ЗначениеПоля=СокрЛП(Выборка.База.НомерСчета) Тогда БазаСовпадает=ИСТИНА; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Исключение Сообщить("Не Загружен "+СокрЛП(Выборка.База)+" !!!!!!!!!!!!!!!!!!!!!!!!!!!"); КонецПопытки; КонецПопытки; НовоеИмяФайла = Архивчег.Путь + Архивчег.ИмяБезРасширения + ".zip.old"; //Попытка // КопияФ = Новый Файл( НовоеИмяФайла ); // Если КопияФ.Существует() Тогда // УдалитьФайлы( НовоеИмяФайла ); // КонецЕсли; // // ПереместитьФайл(Выборка.КаталогБазыДанных,НовоеИмяФайла); //Исключение //КонецПопытки; Если НЕ Выборка.База.НеУдалятьФайл Тогда НовоеИмяФайла = Архивчег.Путь + Архивчег.ИмяБезРасширения + ".zip.old"; КопияФ = Новый Файл( НовоеИмяФайла ); КопироватьФайл(Выборка.КаталогБазыДанных, НовоеИмяФайла); //КопияФ = Новый Файл( Выборка.КаталогБазыДанных ); //КопияФ.Закрыть(); УдалитьФайлы( Выборка.КаталогБазыДанных ); если убираю чтение текста, то все норм удаляется |
|||
10
Фрэнки
15.01.16
✎
09:27
|
(9) может быть попробовать перед прочтением из файла задать свойство объекта Текст.ТолькоПросмотр ( для объекта ТекстовыйДокумент )
|
|||
11
Futarkh
15.01.16
✎
09:28
|
(9) А если сделать Текст="" то удалит?
|
|||
12
Futarkh
15.01.16
✎
09:28
|
+(11) Перед УдалитьФайлы(...)
|
|||
13
Sova112
15.01.16
✎
09:31
|
(10) то же самое
|
|||
14
Sova112
15.01.16
✎
09:34
|
(11) тоже пишет ошибка совместного доступа
|
|||
15
НЕА123
15.01.16
✎
09:42
|
ЧтениеТекста = Новый ЧтениеТекста(Выборка.КаталогБазыДанных);
...... ЧтениеТекста.Закрыть(); |
|||
16
НЕА123
15.01.16
✎
09:43
|
(15)+
как вариант. |
|||
17
Lexey_
15.01.16
✎
09:43
|
(14) а весь ли код в(9)?
|
|||
18
hhhh
15.01.16
✎
09:47
|
(14)
КопироватьФайл(Выборка.КаталогБазыДанных, НовоеИмяФайла); УдалитьФайлы( Выборка.КаталогБазыДанных ); надо наверно паузу вставить между этими двумя командами. А то получается, что одновременно запускаешь и копирование и удаление. Они параллельно у тебя работают. Какую-нибудь там задержку поставь, 5 секунд. Или 10 секунд. Между этими двумя строчками. |
|||
19
Futarkh
15.01.16
✎
09:49
|
Как видно из (9) файл по пути Выборка.КаталогБазыДанных используется в Текст=Новый ТекстовыйДокумент;
Текст.Прочитать(Выборка.КаталогБазыДанных); и КопироватьФайл(Выборка.КаталогБазыДанных, НовоеИмяФайла); Чтобы освободить файл надо убить объект Текст и дождаться окончания копирования |
|||
20
НЕА123
15.01.16
✎
09:49
|
(18)
да, вероятнее всего так. |
|||
21
Lexey_
15.01.16
✎
09:52
|
(18) почему параллельно? Это ж не НачатьКопированиеФайла
|
|||
22
Фрэнки
15.01.16
✎
09:53
|
(18) (20) так он все равно "открыт" уже...
я бы попробовал переписать код на вариант (15) |
|||
23
hhhh
15.01.16
✎
09:58
|
(21) копирование может идти несколько секунд. Программа не ждет, а просто тупо идет дальше. Так всегда было.
|
|||
24
Serg_1960
15.01.16
✎
10:01
|
Весь мозг сломал, пока читал твой код. поэтому я его сократил, чтобы нагляднее было конфликтная ситуация :)
Текст.Прочитать(Выборка.КаталогБазыДанных); КопироватьФайл(Выборка.КаталогБазыДанных, НовоеИмяФайла); УдалитьФайлы(Выборка.КаталогБазыДанных); |
|||
25
Lexey_
15.01.16
✎
10:05
|
(23) никогда такого не было, в чем тогда отличие от асинхронной НачатьКопированиеФайла?
|
|||
26
hhhh
15.01.16
✎
10:07
|
(25) наоборот, НачатьКопированиеФайла никогда не было. Оно появилось в 8.3, всего несколько месяцев назад. А до него десятки лет ведь работало. Не было никаких Начать копирование.
|
|||
27
Lexey_
15.01.16
✎
10:12
|
(26) я имею ввиду, никогда не было такого, что "Программа не ждет, а просто тупо идет дальше". А в асинхронной НачатьКопированиеФайла, да идет дальше и не ждет, пока закончится копирование, на то она и асинхронная
|
|||
28
ЧеловекДуши
15.01.16
✎
10:20
|
(18) Пока копируется, 1С висит :)
|
|||
29
ЧеловекДуши
15.01.16
✎
10:20
|
(23) Разве? :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |