Скрипт служит для борьбы с глюками 8-ой версии после динамического обновления. Данный скрипт очищает локальный кэш 1С при каждом запуске платформы. Для использования необходимо положить его в папку "%appdata%\1C\1CEStart\" и у ярлыка на рабочем столе пользователей изменить расширение файла с ".exe" на ".js". Скрипт работает на всех версиях Windows включая Windows 7 и Server 2008.
Для использования необходимо создать текстовый файл, скопировать в него текст скрипта и изменить его расширение с *.txt на *.js.
Текст скрипта (1cestart.js):
var FSO = new ActiveXObject("Scripting.FileSystemObject");
var WshShell = new ActiveXObject("WScript.Shell");
var colEnvVars = WshShell.Environment("Process");
var sErrors = false;
var WshSysEnv = WshShell.Environment;
var WshUserEnv = WshShell.Environment("USER");
//Устанавливаем переменную окружения для того, чтобы Windows не спрашивала
//про сертификат безопасности, если скрипт будет запускаться из сетевой папки
//------------------------------------------------------------------
WshUserEnv("SEE_MASK_NOZONECHECKS") = 1;
//------------------------------------------------------------------
//Очищаем кэш
//------------------------------------------------------------------
var FolderName1 = "\\AppData\\Local\\1C\\1Cv8";
var FolderName2 = "\\AppData\\Roaming\\1C\\1Cv8";
var FolderName3 = "\\AppData\\Local\\1C\\1Cv80";
var FolderName4 = "\\AppData\\Roaming\\1C\\1Cv80";
var FolderName5 = "\\AppData\\Local\\1C\\1Cv81";
var FolderName6 = "\\AppData\\Roaming\\1C\\1Cv81";
var FolderName7 = "\\AppData\\Local\\1C\\1Cv82";
var FolderName8 = "\\AppData\\Roaming\\1C\\1Cv82";
if (FSO.FolderExists(colEnvVars("userprofile") + FolderName1))
GoSubFolders(colEnvVars("userprofile") + FolderName1);
if (FSO.FolderExists(colEnvVars("userprofile") + FolderName2))
GoSubFolders(colEnvVars("userprofile") + FolderName2);
if (FSO.FolderExists(colEnvVars("userprofile") + FolderName3))
GoSubFolders(colEnvVars("userprofile") + FolderName3);
if (FSO.FolderExists(colEnvVars("userprofile") + FolderName4))
GoSubFolders(colEnvVars("userprofile") + FolderName4);
if (FSO.FolderExists(colEnvVars("userprofile") + FolderName5))
GoSubFolders(colEnvVars("userprofile") + FolderName5);
if (FSO.FolderExists(colEnvVars("userprofile") + FolderName6))
GoSubFolders(colEnvVars("userprofile") + FolderName6);
if (FSO.FolderExists(colEnvVars("userprofile") + FolderName7))
GoSubFolders(colEnvVars("userprofile") + FolderName7);
if (FSO.FolderExists(colEnvVars("userprofile") + FolderName8))
GoSubFolders(colEnvVars("userprofile") + FolderName8);
//if (!sErrors)
// WScript.Echo("Обновление кэша прошло успешно");
//else
// WScript.Echo("Возникли ошибки. Возможно есть запущенные процессы 1С");
function DelFile(sFILE)
{
try
{
FSO.DeleteFile(sFILE, True);
}
catch(e)
{
sErrors = true;
}
}
function GetFolder(sFOLDER)
{
try
{
return FSO.GetFolder(sFOLDER);
}
catch(e)
{
sErrors = true;
}
}
function GoSubFolders(objDIR)
{
ProcessFilesInFolder(objDIR);
var sFolder = GetFolder(objDIR);
var subFlds = new Enumerator(sFolder.SubFolders);
for (; !subFlds.atEnd(); subFlds.moveNext())
{
GoSubFolders(subFlds.item());
}
try
{
FSO.DeleteFolder(sFolder, true);
}
catch(e)
{
sErrors = true;
}
}
function ProcessFilesInFolder(objDIR)
{
var sFolder = GetFolder(objDIR);
var subFiles = new Enumerator(sFolder.Files);
for (; !subFiles.atEnd(); subFiles.moveNext())
{
DelFile(subFiles.item());
}
}
//------------------------------------------------------------------
//Запускаем 1С
//------------------------------------------------------------------
WshShell.Run("1cestart.exe");