gifts2017

1С 7.7 как сделать удаление *.cdx, копирование базы и тестирование по простому...

Опубликовал Константин (Fisherru) в раздел Администрирование - Системное

Были трудности с удалением индексов, копированием базы перед тестированием и исправлением и собственно с тестированием и исправлением. Когда едешь в маршрутке не всегда сообразишь и вспомнишь что и как, а безграмотные пользователи и их кривые ручки - страшная сила.

Навеяно http://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-ник с тестированием и исправлением срабатывает через раз. Почему - не знаю. Может подскажет кто...

 

См. также

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

Комментарии

1. Константин (Fisherru) 05.02.10 07:53
Добавлю, чтоб понятнее стало.
Розничная сеть, более 200-от магазинов в каждом только 1 торговая база (самописная)
2. Константин (Fisherru) 05.02.10 08:32
Кстати, и по сети работает и подключенные сетевые диски понимает и IP-адреса ;)
3. Vasily Kushnir (vasilykushnir) 05.02.10 09:02
Как много буков написано... В чем собственно трудности удалить индексы? Вижу только в одном - выключен комп, тогда действительно трудно.
На заметку:
http://infostart.ru/public/16915/

#( 1c_copy
AsLoggedUser
// Запускаем задание в 00:15
Time: 15 0 * * * *
Action:

// Здесь мы удаляем все процессы и индексы 1С
BEGIN
KILL: "1cv7.exe"
PROC-EXIST: "1cv7.exe" NOT
UNTIL

FILE-DELETE: "D:\FARMACEYA\*.cdx"

// Переиндексация базы
StartIn: "C:\1Cv77\bin"
ShowNormal NormalPriority
START-APPW: C:\1Cv77\BIN\1cv7.exe enterprise /d D:\FARMACEYA\ /NVasily /PПароль /m

// Делаем две копии (если надо) Базы - собственно синхронизация базы и ее копии
StartIn: "C:\Program Files\nnBackup"
ShowNormal NormalPriority
START-APPW: C:\Program Files\nnBackup\nnbackup.exe copy -log log\copy_arh.log -i D:\Farmaceya -o \\server2004\Pharmacia\ -p -s -v

StartIn: "C:\Program Files\nnBackup"
ShowNormal NormalPriority
START-APPW: C:\Program Files\nnBackup\nnbackup.exe copy -log log\copy_arh.log -i D:\Farmaceya -o \\server2004\1c_save\ -p -s -v

// Архивирование базы
StartIn: "C:\Arc"
ShowNormal NormalPriority
START-APPW: rar a -r -agDDMMYY -m5 -ed -ep2 -inul -mdg -t -x*.cdx -x*.tmp f:\1CCopy\2006\farmaceya D:\FARMACEYA\

// Месага о завершении
GET-CUR-TIME
MSG: "Копирование выполнено в %hh%:%mm%:%ss%"
)#
ZOMI; gutentag; +2 Ответить 2
4. vip (vip) 05.02.10 09:38
(3) Я тоже большой приверженец nncron. :)

> Вижу только в одном - выключен комп, тогда действительно трудно.
А включить из дома слабо? Я такой финт проделываю.
5. Vasily Kushnir (vasilykushnir) 05.02.10 09:55
(4) Я написал "Трудно" но не "Не возможно" :D

PS^ Автору - в чем еще прелесть крона: ставишь задание на ночь и никаких больше телодвижений. На утро база готова к употреблению. При необходимости любое задание крона можно в любой момент вызвать в ручном режиме (внепланово).
6. Константин (Fisherru) 05.02.10 11:00
(3)
Круто. :)
Я таких умных вещей и не знал. И даже не знал что они бывают ;)
Поэтому все по простому.
Кроме того компы на магазины системщики выставляют, а у них проблема - то одно забудут поставить, то другое, а тут крон какой-то - 100 пудово будут забывать его ставить, да и еще настраивать...
А кроме того, вдруг местный системщик базу в другое место перекинет в связи с ремонтом сервера, надо будет Крон перенастраивать?
А тут все само в общем-то!
Ну а за ссылку - спасибо - поизучаю.
А индексы и прочее нам приходится в рабочее время делать, когда слетает чего-нибудь...
7. Константин (Fisherru) 05.02.10 11:12
Кроме того наши продавцы гасят компы когда на ночь уходят - экономия электроэнергии и пожарная безопасность ;)
только сервак работает, а на нем настроено резервное копирование.
Правда сейчас отказываются от серваков - просто 2 компа вяжут, а их на ночь вырубают... :(
Кроме того еще заметил, что вы входите в 1С под конкретным юзером. А я делаю "финт ушами" - вхожу безымянным. Так как 100 пудово не на всех, более 200-сот магазинов, сохранилась моя учетная запись, поскольку список пользователей редактируют сами управляющие и меня местами поудаляли ...
8. Vasily Kushnir (vasilykushnir) 05.02.10 12:09
(7) Ну у меня ты фиг бы безымянным вошел :)
Юзер прописывается, естественно, в конфигураторе (надо как-то присобачить ему права и интерфейс), а также вводится в справочник Пользователи1С, где есть ссылка на юзера в конфигураторе. И если его нет в справочнике - нафиг с пляжа!
9. Константин (Fisherru) 05.02.10 14:13
(8) Ежели в конфигураторе отдельно ДопЗащита не прописана и справочника Пользователи1С нет - то удаление папочки USRDEF рулит.
Опять же заметьте, магазинов уже более 200-сот в радиусе 500 км. В каждом по нескольку пользователей в целом получается более 1000 человек. Большая текучка. Прописывать их всех в конфигураторе - не реально, запихивать в справочник Пользователи1С (централизованно) - тоже. Поэтому заведение пользователей в программу отдано на откуп Управляющей магазина, а она легко может удалить мою учетную запись...
В общем, у каждого своя специфика...
Однако не ответили что будет если базу перенести в другое место - надо будет Крон перенастраивать?
Ну и проблему, если пользовательскую учетную запись удалят - Крон то же не решает - ничего не сработает.
А мой вариант работает всегда, везде и хоть дворник может Bat-ничек запустить... ;)
10. Test Testers (chetirepda) 15.03.12 14:06
Если использовать созданную копию, то эта копия будет содержать все данные из базы с которой эта копия была сделана. Удалить эти данные можно как в пользовательском режиме, пометив все ненужные объекты на удаление, а потом удалив их. Так и более простым способом, путем удаления «ненужных» файлов из каталога с копией базы.

Обратите внимание, что если файлы будут удалены, вместе с ними будут удалены и данные! Восстановить их будет крайне сложно, а иногда и невозможно! Будьте аккуратны!

Итак, для очистки копии файловой базы достаточно удалить из каталога с копией базы файлы, кроме файлов, описанных ниже:

Нужно оставить:


Все каталоги, например ExtForms
Файл 1cv7.md
Файл 1cv7.dd
Если есть v7plus.als
Если есть v7plus.dll
Если есть 1cv7srct.st
Если есть 1cv7Main.tip
Если есть tmpltrns.tof
Если есть arj.pif
Если есть barcode.ocx
Все файлы с расширением *.spl
Все файлы с расширением *.txt
Все файлы с расширением *.dll
11. Test Testers (chetirepda) 15.03.12 14:08
Как быстро удалить все документы из 1С Предприятие 7.7

Скажу сразу, удалять будем не конкретные документы через интерфейс 1С Предприятие. Удалять будем напрямую файлы, в которых хранятся документы. Поэтому данный способ работает только на файловой версии 1С Предприятие 1С 7.7.

Как определить, какие файлы необходимо удалhttp://1czone.ru/admin.php?mod=editnews&action=editnews&id=18ить, чтобы очистить базу от документов? Для выполнения нашей цели необходимо немного знать структуру данных файловой версии 1С 7.7.

Справочники хранятся в файлах с именем SC*.DBF, документы в файлах с именами DT*.DBF и DH*.DBF, регистры в файлах RG*.DBF и RA*.DBF

Какой именно правочник или документ в каком файле хранится можно посомтреть открыв файл 1Cv7.DD любым текстовым редакотором.

Итак, нам необходимо очистить базу 1С 7.7 от документов, оставив справочники.

Для этого удаляем:

1. Файлы документов

dt*.*
dh*.*

2. Файлы регистров

rg*.*
ra*.*

3. Индексные файлы. Нам в любом случае необходимо будет переиндексировать базу

*.cdx

4. Служебные файлы, назначение которых Вам не интересно

*.lst
1SOPER.dbf
1SENTRY.dbf
1SBKTTLC.dbf
1SBKTTL.dbf
1SACCSEL.dbf
1SSBSEL.dbf
1supdts.dbf
1sdwnlds.dbf
1sdbset.dbf

5. Папки, которые нам не нужны

New_Stru
Syslog
12. Test Testers (chetirepda) 15.03.12 14:08
Для этого мы можем удалять файлы в ручную, но лучше написть исполняемый файл, который за 1 раз удалит все необходимые файлы.

Для этого создаем пустой файл "Удаление.CMD", в который пишем команды DOS:



Pause

del New_Stru

del Syslog
del *.cdx
del *.lst
del 1cv7srct.st
del dt*.*
del dh*.*
del 1sjourn.dbf
del 1scrdoc.dbf
del 1sdnlock.dbf
del 1sstream.dbf
del rg*.*
del ra*.*
del 1SOPER.dbf
del 1SENTRY.dbf
del 1SBKTTLC.dbf
del 1SBKTTL.dbf
del 1SACCSEL.dbf
del 1SSBSEL.dbf
del 1supdts.dbf
del 1sdwnlds.dbf
del 1sdbset.dbf



Далее необходимо скопировать этот файл в каталог Вашей информационной базы и запустить. Далее отвечаем "Yes" на вопросы об удалении.

Ждем 1секунду. Все, файлы удалены, в нашей базе больше нет документов.
13. Константин (Fisherru) 16.03.12 09:45
Да уж как много букв :-)))
Уже давно сделали bat-ничек,
который сам обрезает базу 1С, без участия пользователя.
В процессе происходит:
-резервное копирование
-тестирование и и справление
-выгрузка данных
-удаление данных (удаление дбф-ок)
-загрузка 1С монопольно
-загрузка данных
в процессе строятся отчеты по регистрам ДО и ПОСЛЕ,
чтобы можно было сравнить, что всё хорошо ;)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа