Решено Как снять копии шаблона(дизайна) со списка баз? создать ntf

Ruslan280

Well-known member
18.04.2013
50
0
#1
Подскажите пожалуйста - возникла необходимость снять шаблон с большого количества баз.
хотелось бы автоматизировать процесс.
пытался сделать из ОС батником

FOR %%G IN (d:\lotus\domino\data\baza\*.nsf) DO (
echo %%~nxG
nserver.exe -c "cl copy baza\%%~nxG templates\%%~nG.ntf template"
)

также пытался создать текстовый файл с командами ( cl copy по каждой базе) и запустить его в консоли лотус-- в обоих случаях шаблоны создаются через раз. иногда пустые. иногда не все.

кто-нибудь знает правильное решение?
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 233
18
#2
тю, открываешь любую базу, достаешь док иконку и затираешь там это поле с название шаблона ;)
 

garrick

Lotus team
26.10.2009
911
61
#5
Сделать копию базы можно с помощью метода CreateCopy, но "назначить" её шаблоном метода нет.
обоих случаях шаблоны создаются через раз. иногда пустые. иногда не все.
Потому, что файлы баз могут быть заблокированы сервером и с консоли OC могут не скопироваться. И к тому же процесс копирования всех элементов базы может занимать продолжительное время, может просто подождать надо пока файл "наполнится"?
 

savl

Lotus team
28.10.2011
2 136
105
#6
Ну... я генерю ntf так:
Код:
fPath = StrLeftBack(db.Filepath,".")
If InStr(fPath, {\}) Then fPath = StrRightBack(fPath,{\})
 
Set templateDb = db.Createcopy("",fPath & ".ntf")
 
Call templateDb.Grantaccess(ses.Username, 6)
А вот тут целую базы создают для создания списка шаблонов
Для просмотра контента необходимо: Войти или зарегистрироваться
 

Ruslan280

Well-known member
18.04.2013
50
0
#8
Ну... я генерю ntf так:
Код:
fPath = StrLeftBack(db.Filepath,".")
If InStr(fPath, {\}) Then fPath = StrRightBack(fPath,{\})
 
Set templateDb = db.Createcopy("",fPath & ".ntf")
 
Call templateDb.Grantaccess(ses.Username, 6)
А вот тут целую базы создают для создания списка шаблонов
Для просмотра контента необходимо: Войти или зарегистрироваться

спасибо - то что надо

а они, интересно, зашифрованные создаются?
 

savl

Lotus team
28.10.2011
2 136
105
#10
@garrick, согласен, но у нас служба Design отключена.
Вместо refresh делаем Replace, программно.
А чтобы проставить галку, надо четко понимать что такого храниться в $Flags у иконки базы.
Иконку можно получить так: Set doc = db.GetDocumentByID("FFFF0010")
Для одной моей базы, если она не является шаблоном там значение: J7SF2
А вот если является, то: J7F2
Таким образом надо найти все возможности DBIcon и можно делать почти что угодно...
 

Ruslan280

Well-known member
18.04.2013
50
0
#12
всё отлично работает . отключил шифрование по умолчанию так
File - Security --> User Security --> Notes Data --> Databases --> "Do not locally encrypt"
 

Ruslan280

Well-known member
18.04.2013
50
0
#13
возможно кому-то будет интересно - vbs-скрипт для снятия копий шаблонов с баз в папке
копирует в папку лотус-клиента - data/годмесяцдень

Код:
server="domino/ru"
password=""
folder="papka"
 
Dim s, dir, db,ndb
Set s = CreateObject("Lotus.NotesSession")
Call s.Initialize(password)
Set dir = s.GetDbDirectory(server)
Set db = dir.GetFirstDatabase(1247)
 
dest=DatePart("yyyy",Now)& DatePart("m",Now) & DatePart("d",Now) & "/templates/"
While Not (db Is Nothing)
 
pos=InStr(UCase(db.FilePath),UCase(folder))
If pos=1 Then
 
WScript.Echo db.Title& "  " & db.FilePath
Set ndb=dir.OpenDatabase(db.FilePath)
 
If ndb.isopen Then
Set tdb=ndb.CreateCopy("",dest & db.Filename)
WScript.echo "ok"
Else
ers=ers & " " & db.title
WScript.echo db.title & " !!! error"
End If
 
End If
Set db = dir.GetNextDatabase
 
Wend
 
WScript.Echo "done.  errors: " & ers
 
Последнее редактирование модератором:

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 599
277
#14
vbs-скрипт для снятия копий шаблонов
фейерично будет работать на линухах, аиксах, ос390 ;)
почему это не агент, а какой-то виндятский скрипт, да еще вызывает КОМ нотусни...
страшное глюкало будет
 

Ruslan280

Well-known member
18.04.2013
50
0
#15
фейерично будет работать на линухах, аиксах, ос390 ;)
почему это не агент, а какой-то виндятский скрипт, да еще вызывает КОМ нотусни...
страшное глюкало будет
ну да - глючить может. просто возможно кому-то пригодится для примера.
скрипт из агента и сделан. - там разница только в Set s = CreateObject("Lotus.NotesSession").

агент занимает клиента лотус во время работы :(
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 599
277
#16
агент занимает клиента лотус во время работы
ну так БД создается не "просто-так" :), вполне нормальная ситуация - подождать (или запускать на сервере - если ответ "не нужен")
 

Ruslan280

Well-known member
18.04.2013
50
0
#17
ну так БД создается не "просто-так" :), вполне нормальная ситуация - подождать (или запускать на сервере - если ответ "не нужен")
или запустить скрипт и он всё что нужно сделает в фоне :)
вариантов масса. кому как нравится. я из скрипта этого сделал hta - там можно только несколько баз выбрать и видно прогресс.
удобно