Навеяно //infostart.ru/public/65109/
Были трудности с удалением индексов, копированием базы перед тестированием и исправлением и собственно с тестированием и исправлением. Когда едешь в маршрутке не всегда сообразишь и вспомнишь что и как, а безграмотные пользователи и их кривые ручки - страшная сила.
1С 7.7 конфа полностью самописная
Сделал просто "ПриНачалеРаботыСистемы"
запускаю ОткрытьФормуМодально("Обработка.СозданиеBat_ников");
а там:
[CODE]
//*******************************************
Процедура ПриОткрытии()
СтатусВозврата(0);
Сформировать();
КонецПроцедуры
//*******************************************
Процедура Сформировать()
Если (ФС.СуществуетФайл("C:\BAT_Files\*.*")=0) Тогда
ФС.СоздатьКаталог("C:\BAT_Files\");
КонецЕсли;
//Удаление индексов
ИмяБАТФайла="c:\BAT_Files\DEL_CDX.bat";
BatFile = СоздатьОбъект("Текст");
BatFile.КодоваяСтраница(0);
BatFile.ДобавитьСтроку("del "+СокрЛП(КаталогИБ())+"*.cdx");
BatFile.ДобавитьСтроку("pause ");
BatFile.Записать(ИмяБАТФайла);
//Копирование базы
Если (ФС.СуществуетФайл("C:\Copy_Before\*.*")=0) Тогда
ФС.СоздатьКаталог("C:\Copy_Before\");
КонецЕсли;
КаталогБазы=СокрЛП(КаталогИБ());
КаталогБазы=Лев(КаталогБазы,СтрДлина(КаталогБазы)-1);
ИмяБАТФайла="c:\BAT_Files\CopyBase.bat";
BatFile = СоздатьОбъект("Текст");
BatFile.КодоваяСтраница(0);
BatFile.ДобавитьСтроку("xCopy "+КаталогБазы+" C:\Copy_Before /E /I /F /H /R /Y ");
BatFile.ДобавитьСтроку("pause ");
BatFile.Записать(ИмяБАТФайла);
//запуск тестирования
ИмяБАТФайла="c:\BAT_Files\TestIB.bat";
BatFile = СоздатьОбъект("Текст");
BatFile.КодоваяСтраница(0);
ИмяФайлаДляПоиска=СокрЛП(КаталогПрограммы())+"1cv7*.exe";
ИмяФайлаДвижка=ФС.НайтиПервыйФайл(ИмяФайлаДляПоиска);
BatFile.ДобавитьСтроку("rem - копируем базу ");
BatFile.ДобавитьСтроку("echo on ");
BatFile.ДобавитьСтроку("xCopy "+КаталогБазы+" C:\Copy_Before /E /I /F /H /R /Y ");
BatFile.ДобавитьСтроку("echo off ");
BatFile.ДобавитьСтроку(" ");
BatFile.ДобавитьСтроку(" ");
BatFile.ДобавитьСтроку("rem - удаляем файлы, чтобы зайти в 1С безымянным ");
BatFile.ДобавитьСтроку("del /Q "+СокрЛП(КаталогИБ())+"USRDEF\*.* ");
BatFile.ДобавитьСтроку(" ");
BatFile.ДобавитьСтроку(" ");
BatFile.ДобавитьСтроку("rem - запуск 1С для тестирования и исправления ИБ ");
BatFile.ДобавитьСтроку("start /wait ""1с"" """+СокрЛП(КаталогПрограммы())+СокрЛП(ИмяФайлаДвижка)+""" config /D"+СокрЛП(КаталогИБ())+" /N /P /@C:\Obr_Mag\TestIB.prm");
BatFile.ДобавитьСтроку(" ");
BatFile.ДобавитьСтроку(" ");
BatFile.ДобавитьСтроку("rem - ждём завершения работы 1С ");
BatFile.ДобавитьСтроку(":exist ");
BatFile.ДобавитьСтроку("if exist C:\Base\TMP\Base_DO\1Cv7.LCK goto exist ");
BatFile.ДобавитьСтроку(" ");
BatFile.ДобавитьСтроку(" ");
//вернём USRDEF на место
BatFile.ДобавитьСтроку("xCopy C:\Copy_Before\USRDEF "+СокрЛП(КаталогИБ())+"USRDEF /E /I /F /H /R /Y ");
BatFile.ДобавитьСтроку(" ");
BatFile.Записать(ИмяБАТФайла);
ИмяБАТФайла="c:\BAT_Files\TestIB.prm";
BatFile = СоздатьОбъект("Текст");
BatFile.КодоваяСтраница(0);
BatFile.ДобавитьСтроку("[General]");
BatFile.ДобавитьСтроку("Quit = 1");
BatFile.ДобавитьСтроку("CheckAndRepair=1");
BatFile.ДобавитьСтроку("[CheckAndRepair]");
BatFile.ДобавитьСтроку("Repair=1");
BatFile.ДобавитьСтроку("PhysicalIntegrity=1");
BatFile.ДобавитьСтроку("Reindex=1");
BatFile.ДобавитьСтроку("LogicalIntegrity=1");
BatFile.ДобавитьСтроку("RecalcSecondaries=1");
BatFile.ДобавитьСтроку("RecalcTotals=1");
BatFile.ДобавитьСтроку("Pack=1");
BatFile.ДобавитьСтроку("SkipUnresolved=0");
BatFile.ДобавитьСтроку("CreateForUnresolved=0");
BatFile.ДобавитьСтроку("Reconstruct=0");
BatFile.Записать(ИмяБАТФайла);
КонецПроцедуры
[/CODE]
Формируем несколько BAT-ников, которые и делают нужное нам.
Поэтому с любого компьютера в сети в любой момент времени можно легко сделать нужную операцию (если хоть раз был выполнен вход в 1С). И путь к базе всегда актуальный (если кто-то по какой-то причине её перенёс)
Ну а уж запустить BAT-ник по телефону – не сложно ;-)
P.S. Почему-то BAT-ник с тестированием и исправлением срабатывает через раз. Почему - не знаю. Может подскажет кто...