Единый список баз у всех пользователей 1С 7.7 и немного о 8.1

У меня пользователи работают только на терминальных серверах с win2003 (4 штуки), все делалось применительно к этому, но в целом пойдет (с незначительными доработками) и для других вариантов сети.

Начну с простого - 8.1. Список баз пользователя храниться в файле, поэтому сильно не заморачиваемся:
1. Настраиваем желаемый список у одного пользователя
2. находим файлик “C:\Documents and Settings\loninia\Application Data\1C\1Cv81\ibases.v8i” и раскидываем его по всем компутерам, на которых стоит 1С8, примерно вот сюда: “C:\Documents and Settings\Default User\Рабочий стол\1С8_Все_Базы.v8i”.  Папки с остальными настройками пользователя будут нормально создаваться при обращении к нужной базе. Процесс раскидывания можно и автоматизировать через netlogon, но у меня всего четыре машины и я раскидал ручками.

3. удалить все штатные ярлычки для запуска 1С8 что-бы шаловливые пальчики юзверей не тыкались куда не надо :)

наслаждаемся.

В 7.7. все гораздо хуже. У кого этих баз больше трех (у меня до 2009 года было далеко за 20… %) ), я думаю, меня поймут :). Каждому новому юзеру необходимо их прописывать ручками, а иногда, вместе с профилем, они ещё и слетают… При настройке переносимого профиля и одновременной работе пользователя на нескольких терминальных серверах с разными базами в 7.7 вообще караул… Нас это порядком достало, в результате родилось следующее:

1. понадобиться какой не то домен с батником запускаемым при логоне. У меня самба, там все просто, а для виндового домена не знаю как делать :(, извиняйте.

в smb.conf  добавим (если такого нет естесно)

logon script = %U.bat

и создадим шару

[netlogon]
        comment = Network Logon Service
        path = /var/spool/samba/netlogon
        guest ok = yes
        writeable = no

все остальные файлики будут создаваться/редактироваться в этой-же папке.

2. Создаем в этой папке файлики <имя пользователя>.bat следующего содержания либо просто добавляем в имеющиеся файлы красную строчку.
@echo off
net time /workgroup:apksouz -y /set

net use h: \\samba\homes
net use o: \\samba\pub
net use t: \\samba\temp

cscript \\samba\netlogon\StartInitBases.vbs

3. Теперь создаем скрипт StartInitBases.vbs

'===============================Скрипт инициализации баз 1с=========================
'====Удаляет все базы в файле Del1cBases_<Имя машины>.txt====
'====В зависимости от машины добавляет все базы из файла Add1cBases_<Имя машины>.txt====
'===================================Сам скрипт====================================
'Создадим объекты
const HKEY_CURRENT_USER = &H80000001
Set WshNetwork = CreateObject("WScript.Network")
set WSHShell = WScript.CreateObject("WScript.Shell")
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")

Set objFSO = CreateObject("Scripting.FileSystemObject")
'Откроем файл только для чтения
Set Del1cBasesStream = objFSO.OpenTextFile("\\samba\netlogon\Del1cBases_" + ucase(Trim(WshNetwork.Comp
uterName)) + ".txt", 1, True)
'Откроем файл только для чтения
Set Add1cBasesStream = objFSO.OpenTextFile("\\samba\netlogon\Add1cBases_" + ucase(Trim(WshNetwork.Comp
uterName)) + ".txt", 1, True)

'========= Удаляем все базы которые есть в файлике =========
Do While Not Del1cBasesStream.AtEndOfStream
	strTxtLine = Del1cBasesStream.ReadLine + "\"

	'msgbox "Del "+ strTxtLine
	On Error Resume Next
	WshShell.Run "REG DELETE HKCU\Software\1C\1Cv7\7.7\Titles /v """ & strTxtLine & "\"" /f", 0, True

Loop

'========= Добавляем все базы которые есть в файлике =========
Do While Not Add1cBasesStream.AtEndOfStream
	strTxtLineNameBase = Add1cBasesStream.ReadLine
	strTxtLinePathBase = Add1cBasesStream.ReadLine + "\"

	'msgbox "Add "+ strTxtLineNameBase
	On Error Resume Next
	WshShell.Run "REG ADD HKCU\Software\1C\1Cv7\7.7\Titles /v """ & strTxtLinePathBase & "\"" /t REG_SZ /d """ & st
rTxtLineNameBase & """ /f", 0, True
Loop

4. Теперь создаем файлы для каждого сервера. приведу пример самого короткого :)

4а. Del1cBases_XEON4.txt - в нем может быть больше строк что-бы зачистить старые базы созданные когда-то.
\\Fdir2\ASKID
C:\1CBases\Base2006
C:\1CBases\Base2005
C:\1CBases\Plateshi
C:\1CBases\Base2007AVZM7
\\Fdir\ASKID
C:\1CBases\Base2008

4б. Add1cBases_XEON4.txt - а здесь только то, что должно появиться у пользователя. По две строки на одну базу. В первой название, во второй путь. Кодировка CP-1251.
Комплектация 2006-2007
C:\1CBases\Base2006
Комплектация 2005
C:\1CBases\Base2005
Платежи
C:\1CBases\Plateshi
!Карты коннтроля
\\Fdir2\ASKID
Комплектация 2008
C:\1CBases\Base2008
Комплектация 2009
C:\1CBases\Base2009
Комплектация Атест
C:\1ctemp\BaseAttestacia

Выгоняем всех пользователей. Пускаем обратно и наслаждаемся :)

Есть Очень важный момент:  у меня рабочий стол появляется раньше, чем успевает отработать скрипт!!! Если пользователь быстро тычит в значек 1С, то список баз может быть пустым или неполным. Лечиться: logoff/logon и объяснить юзверю, что надо подождать 5-10 секунд перед запуском 1С.