Книга знаний

1С:Предприятие / Приемы программирования / Интернет-технологии

Программная очистка кеша Internet Explorer из 1С

При использовании объекта InternetExplorer.Application требуется очистить кеш браузера. Автор статьи: romix | Редакторы:
Последняя редакция №2 от 30.11.07 | История
URL: http://kb.mista.ru/article.php?id=613

Ключевые слова: InternetExplorer.Application, очистка, кеша, запрет, кеширования


При использовании объекта InternetExplorer.Application проблемным оказалось программно запретить кеширование файлов.

//Запись любых значений в эту ветвь реестра ни к чему не приводит
shell.RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\SyncMode5", 4, "REG_DWORD");


//Это тоже не срабатывает
navNoHistory=2;
navNoReadFromCache=4;
navNoWriteToCache=8;

Headers = "Content-Type: text/html" + РазделительСтрок;
Headers = Headers + "If-Modified-Since: Sat, 1 Jan 2000 00:00:00 GMT" + РазделительСтрок;
flags=navNoReadFromCache+navNoWriteToCache;
oIE.Navigate(стрФайлHttp,flags,,,Headers);


Какая жалость! Но не все еще потеряно. Удаление файлов в папке (не очень аккуратный способ, но что делать) срабатывает хорошо.

///////////////////////////////////////////////////////////////////////
//Добавляет к концу пути слэш \ если его там нет
Функция ДобавитьОбратныйСлэш(прм_имяф)
    Если прав(прм_имяф,1)="\" Тогда
        Возврат прм_имяф;
    Иначе
        Возврат прм_имяф+"\";
    КонецЕсли;    
    
КонецФункции    

///////////////////////////////////////////////////////////////////////
//Возвращает 1, если в качестве параметра передан каталог, и 0 - если файл.
Функция ЭтоКаталог(прм_ИмяФайла)
    Если фс.СуществуетФайл(прм_ИмяФайла)=0 Тогда
        //проверка на всякий случай
        Сообщить("Файл или каталог с таким именем не существует: "+прм_ИмяФайла); 
        а=1/0; //генерируем исключение
    КонецЕсли;    
    
    РазмерФайла=0;
    атр="";
    фс.АтрибутыФайла(прм_ИмяФайла,РазмерФайла, атр);
    Возврат Число(Сред(атр, 4, 1));
    
КонецФункции    

///////////////////////////////////////////////////////////////////////
Процедура ОчисткаКешаРекурсивно(прм_Папка)
    Если фс.СуществуетФайл(прм_Папка)=0 Тогда
        Сообщить("Каталог с таким именем не существует: "+прм_Папка); 
        а=1/0; //генерируем исключение
    КонецЕсли;
    Если ЭтоКаталог(прм_Папка)=0 Тогда
        Сообщить("Это не каталог: "+прм_Папка); 
        а=1/0; //генерируем исключение
    КонецЕсли;
    
    
    имяф=СокрЛП(фс.НайтиПервыйФайл(ДобавитьОбратныйСлэш(прм_Папка)+"*.*"));
    сз=СоздатьОбъект("СписокЗначений");
    Пока 1=1 Цикл
        ок=1;
        Если имяф="." Тогда
            ок=0;
        КонецЕсли;    
        Если имяф=".." Тогда
            ок=0;
        КонецЕсли;    
        
        
        
        Если ок=1 Тогда
            имяфп=ДобавитьОбратныйСлэш(прм_Папка)+имяф;
            Если ЭтоКаталог(имяфп)=1 Тогда
                сз.ДобавитьЗначение(имяфп);
            Иначе
                фс.УдалитьФайл(имяфп);
            КонецЕсли;    
        КонецЕсли;
        
        
        имяф=СокрЛП(фс.НайтиСледующийФайл());
        Если имяф="" Тогда
            Прервать;
        КонецЕсли;
    КонецЦикла;    
    
    Для й=1 по сз.РазмерСписка() Цикл
        кат=сз.ПолучитьЗначение(й);
        ОчисткаКешаРекурсивно(кат);
    КонецЦикла
КонецПроцедуры    

///////////////////////////////////////////////////////////////////////
Процедура ОчисткаКешаInternetExplorer()
    oShell = CreateObject("Wscript.Shell");
    strUserProfile = oShell.ExpandEnvironmentStrings("%USERPROFILE%");
    ОчисткаКешаРекурсивно(ДобавитьОбратныйСлэш(strUserProfile)+"Local Settings\Temporary Internet Files");
КонецПроцедуры    

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика