| 
    
            
         
         | 
    
  | 
как удалить файл из 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) Разве? :)     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |