Программная очистка кеша Internet Explorer из 1С Ключевые слова: 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");
КонецПроцедуры
|