Скрипт запуска 1С 8 с принудительным обновлением кэша конфигурации 8.0-8.3 (замена 1cestart.exe)

Скрипт служит для борьбы с глюками 8-ой версии после динамического обновления. Данный скрипт очищает локальный кэш 1С при каждом запуске платформы. Для использования необходимо положить его в папку "%appdata%1C1CEStart" и у ярлыка на рабочем столе пользователей изменить расширение файла с ".exe" на ".js". Скрипт работает на всех версиях Windows включая Windows 7 (x64), Server 2008 (R2), Server 2012 (R2).

Скрипт служит для борьбы с глюками 8-ой версии после динамического обновления. Данный скрипт очищает локальный кэш 1С при каждом запуске платформы. Для использования необходимо положить его в папку «%appdata%1C1CEStart» и у ярлыка на рабочем столе пользователей изменить расширение файла с «.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»);

 

 

 

2 Comments

  1. bulpi

    1)Если положить в папку «%appdata%1C1CEStart , то скрипт выдает ошибку, что естественно , т.к. там нет файла 1CEStart.exe

    2)Если положить в папку c:Program Files1cv82common , то скрипт ошибки не выдает, но и не удаляет ни фига.

    Так что идея хорошая, а вот реализация…

    Но даже если бы все работало. Нужно чистить не весь кеш! Там полезные настройки пользователя по расположению окон и т.д. Нужно удалять подкаталоги вида Local SettingsApplication Data1C1Cv8234ff5021-755e-42cc-82ce-850d795866a8Config и ConfigSave

    Reply
  2. tuman777

    Текст скрипта обновлен. Были неверные пути к профилю 1С. Добавил путь к кэшу 8.3. Часто нужно чистить в том числе и пользовательские настройки. Например недавно пользователю заблокировали доступ на уровне записей к одной из ранее доступных организаций, а в параметрах одного отчета у него эта организация была сохранена и отчет перестал открываться

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *