gifts2017

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

Опубликовал tuman777 xxx (tuman777) в раздел Администрирование - Стартеры 1С

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

Скрипт служит для борьбы с глюками 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");

 

 

 

См. также

Подписаться Добавить вознаграждение

Комментарии

1. bulpi bulpi (bulpi) 27.02.13 17:25
1)Если положить в папку "%appdata%\1C\1CEStart\ , то скрипт выдает ошибку, что естественно , т.к. там нет файла 1CEStart.exe
2)Если положить в папку c:\Program Files\1cv82\common , то скрипт ошибки не выдает, но и не удаляет ни фига.

Так что идея хорошая, а вот реализация...
Но даже если бы все работало. Нужно чистить не весь кеш! Там полезные настройки пользователя по расположению окон и т.д. Нужно удалять подкаталоги вида Local Settings\Application Data\1C\1Cv82\34ff5021-755e-42cc-82ce-850d795866a8\Config и ConfigSave
2. tuman777 xxx (tuman777) 17.07.15 13:27
Текст скрипта обновлен. Были неверные пути к профилю 1С. Добавил путь к кэшу 8.3. Часто нужно чистить в том числе и пользовательские настройки. Например недавно пользователю заблокировали доступ на уровне записей к одной из ранее доступных организаций, а в параметрах одного отчета у него эта организация была сохранена и отчет перестал открываться
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа