Был замечен случай когда на данном компьютере пользователя в рабочей базе была старая конфигурация, хотя на любом другом ПК и на сервере она обновилась. В таком случае поможет очистка кеша 1С 8.2 в каталоге пользователя %userprofile%\Local settings\Application data\1C\1Cv82\. Известные программы очистки диска обходят этот каталог стороной.
Для Win XP:
%userprofile%\Local Settings\Application Data\1C\1Cv82 %userprofile%\Application Data\1C\1Cv82 Для Win 7: %userprofile%\AppData\Roaming\1C\1Cv82 %userprofile%\AppData\Local\1C\1Cv82
clearcash2.vbs
{codecitation style="brush: xml;"}
If Exist %USERPROFILE%\AppData\Roaming\1C\1Cv82 (
rem Удаляем все файлы в 7
Del /F /Q %USERPROFILE%\AppData\Roaming\1C\1Cv82\*.*
Del /F /Q %USERPROFILE%\AppData\Local\1C\1Cv82\*.*
rem Удаляем все каталоги в 7
for /d %%i in ("%USERPROFILE%\AppData\Roaming\1C\1Cv82\*") do rmdir /s /q "%%i"
for /d %%i in ("%USERPROFILE%\AppData\Local\1C\1Cv82\*") do rmdir /s /q "%%i"
)
If Exist %USERPROFILE%\Local Settings\Application Data\1C\1Cv82 (
rem Удаляем все файлы в XP
Del /F /Q %USERPROFILE%\Local Settings\Application Data\1C\1Cv82\*.*
Del /F /Q %USERPROFILE%\Application Data\1C\1Cv82\*.*
rem Удаляем все файлы в XP
for /d %%i in ("%USERPROFILE%\Local Settings\Application Data\1C\1Cv82\*") do rmdir /s /q "%%i"
for /d %%i in ("%USERPROFILE%\Application Data\1C\1Cv82\*") do rmdir /s /q "%%i"
Код 1C v 8.1 8.2
{codecitation style="brush: xml;"}
// Процедура создает и запускает vbs файл, который производит очистку кэша. // 1С и презапускает программу // Процедура ОчиститьКэшИПерезапуститьПрограмму() Экспорт СкриптФайл = Новый ТекстовыйДокумент; СтрокаСоединенияСБД = СтрокаСоединенияИнформационнойБазы(); СтрокаЗапускаПрограммы = КаталогПрограммы(); ПутьКФайлуСкрипта = КаталогВременныхФайлов() + "CacheCleaning.vbs"; ПутьКФайлу1С = СтрокаЗапускаПрограммы + "1cv8.exe"; ИмяСервера = ""; ИмяБазы = ""; Путь = ""; КомандаЗапуска = ""; Один = """"; Два = """"""; Три = """"""""; Если (Найти(СтрокаСоединенияСБД, "File=") <> 0) Тогда Путь = СтрЗаменить(СтрокаСоединенияСБД, "File=", ""); Путь = Лев(Путь, СтрДлина(Путь)-1); КомандаЗапуска = "WshShell.Run " + Три + ПутьКФайлу1С + Два + " ENTERPRISE /F" + Путь + Один + ", 1, true"; Иначе МассивПараметровСоединения = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СтрокаСоединенияИнформационнойБазы(), ";"); МассивПараметровСервера = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(МассивПараметровСоединения[0], """"); ИмяСервера = СокрЛП(МассивПараметровСервера[1]); МассивПараметровБазы = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(МассивПараметровСоединения[1], """"); ИмяБазы = СокрЛП(МассивПараметровБазы[1]); КомандаЗапуска = "WshShell.Run " + Три + ПутьКФайлу1С + Два + " ENTERPRISE /S" + ИмяСервера + "\" + ИмяБазы + Один + ", 1, true"; КонецЕсли; // Если пользователь не хочет перезапускать сеанс 1С, то после выполнения скрипта ничего не делаем. Если Не глЗначениеПеременной("глПерезапускатьСеансРаботыСПрограммой") Тогда КомандаЗапуска = ""; КонецЕсли; СкриптФайл.УстановитьТекст("WScript.Sleep(5000) | |Dim FSO |Set FSO = WScript.CreateObject(""Scripting.FileSystemObject"") |Set WshShell = WScript.CreateObject(""WScript.Shell"") |Set colEnvVars = WshShell.Environment(""Process"") | |strComputer = ""."" |Set objWMIService = GetObject(""winmgmts:"" _ |& ""{impersonationLevel=impersonate}!\\"" _ |& strComputer & ""\root\cimv2"") | |Set colProcesses = objWMIService.ExecQuery( _ |""S_elect * From Win32_Process "" _ |& ""Where Name = '1cv8.exe'"") | |For Each objProcess In colProcesses | objProcess.Terminate |Next | |WScript.Sleep(1000) | |FolderName1 = ""\Local Settings\Application Data\1C\1Cv82"" |FolderName2 = ""\Local Settings\Application Data\1C\1Cv81"" |FolderName3 = ""\appdata\Local\1C\1Cv82"" |FolderName4 = ""\appdata\Local\1C\1Cv81"" | |If FSO.FolderExists(colEnvVars(""userprofile"") & FolderName1) Then | GoSubFolders colEnvVars(""userprofile"") & FolderName1 |End If |If FSO.FolderExists(colEnvVars(""userprofile"") & FolderName2) Then |GoSubFolders colEnvVars(""userprofile"") & FolderName2 | End If |If FSO.FolderExists(colEnvVars(""userprofile"") & FolderName3) Then | GoSubFolders colEnvVars(""userprofile"") & FolderName3 |End If |If FSO.FolderExists(colEnvVars(""userprofile"") & FolderName4) Then | GoSubFolders colEnvVars(""userprofile"") & FolderName4 |End If | |" + КомандаЗапуска + " |Set WshShell = Nothing | |Sub DelFile(sFILE) | On Error Resume Next | FSO.DeleteFile sFILE, True | If Err.Number <> 0 Then | Wscript.Echo ""Error deleting file: "" & sFILE | End If |End sub | |Function GetFolder(sFOLDER) | On Error Resume Next | Set GetFolder = FSO.GetFolder(sFOLDER) | If Err.Number <> 0 Then | Wscript.Echo ""Error connecting to folder:"" & sFOLDER & VBlf & ""["" & Err.Number & ""]"" & Err.Description | Wscript.Quit Err.Number | End If |End Function | |Sub GoSubFolders (objDIR) | ProcessFilesInFolder objDIR | Set sFolder = GetFolder(objDIR) | For Each eFolder in sFolder.SubFolders | GoSubFolders eFolder | Next | FSO.DeleteFolder sFolder, True |End Sub | |Sub ProcessFilesInFolder (objDIR) |Set sFolder = GetFolder(objDIR) |For Each objFile in sFolder.Files | DelFile objFile |Next |End Sub"); Попытка СкриптФайл.Записать(ПутьКФайлуСкрипта, КодировкаТекста.Системная); ЗапуститьПриложение(ПутьКФайлуСкрипта); Исключение КонецПопытки; КонецПроцедуры {/codecitation}
|
Очистка кеша 1С
- Информация о материале
- Просмотров: 10751