Недавно мне понадобилось перенести 1Сv77 с одного сервера на другой.
Однако в конторе где это все происходило работает около 30 человек, и эксплуатируется полдесятка DBF-ных баз 1С. В конторе большая текучка кадров, и часто приходится выдавать новым пользователям права на доступ к определенным базам 1С, или модифицировать список доступных баз для старых пользователей.
При этом обычно после каждой модификации доступов надо руками добавлять/удалять нужные базы в списке баз 1С, или же всем пользователям импортировать список всех баз. Ни один ни другой вариант мне не нравился.
Потому для упрощения дальнейшего сопровождения нового сервера (и для уменьшения нагрузки на мозг пользователей) я задумал генерировать список баз 1С автоматически, в зависимости от прав пользователя на доступ к конкретным базам.
Например если пользователь user1 имеет права на одну базу — то только эта база будет отображаться у него в приложении 1С. Если этому же user1 выдать права на доступ к еще одной базе — то в списке будут отображаться только две требуемые базы.
Общеизвесно что 1С хранит список баз в реестре по адресу [HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles] в формате «путь к базе»=«название базы».
Для решения задачи быстренько набросался скриптик, основная идея логики которого следующая:
Скрипт запускается при входе пользователя в систему или перед запуском 1С. Дальше оно проверяет по списку возможность доступа к файлам конфигурации всех баз, и в случае успеха собирает reg-файл со списком доступных баз. Reg-файл импортируется в реестр, и PROFIT!!1.
В скрипте основная логика выглядит так:
где %db01% — путь к 1й базе, %dbfile1% — заготовка с названием базы.
Тоесть при использовании этого скрипта достаточно выдать пользователю доступ к базе на уровне NTFS — и у него соответстенно изменится список баз в приложении 1С.
Готовое все можно забрать по адресу 213.186.114.8/lo0-habr/1s-scripts.zip
Содержимое архива надо распаковать в корень диска С, допилить напильником под себя в батнике и текстовиках, и поставить пользователям в автозапуск.
Это решение вполне может применяться когда базы находятся в SQL, всеравно файлы с конфигурациями остаются.
p.s.
Не смотря на то, что по миру уже вовсю шагает 1Сv8х, в котором все делается иначе, еще осталость 100500 компаний использующих 1Сv77. И я надеюсь что мой опыт будет кому-нибудь полезным.
p.p.s.
Скрипт далек от идеала, и имеет место для усовершенствования.
Один из недостатков — необходимость в текстовых файлах-шаблонах названий баз.
Если кто сможет это удачно усовершествовать — прошу делиться наработками.
Однако в конторе где это все происходило работает около 30 человек, и эксплуатируется полдесятка DBF-ных баз 1С. В конторе большая текучка кадров, и часто приходится выдавать новым пользователям права на доступ к определенным базам 1С, или модифицировать список доступных баз для старых пользователей.
При этом обычно после каждой модификации доступов надо руками добавлять/удалять нужные базы в списке баз 1С, или же всем пользователям импортировать список всех баз. Ни один ни другой вариант мне не нравился.
Потому для упрощения дальнейшего сопровождения нового сервера (и для уменьшения нагрузки на мозг пользователей) я задумал генерировать список баз 1С автоматически, в зависимости от прав пользователя на доступ к конкретным базам.
Например если пользователь user1 имеет права на одну базу — то только эта база будет отображаться у него в приложении 1С. Если этому же user1 выдать права на доступ к еще одной базе — то в списке будут отображаться только две требуемые базы.
Общеизвесно что 1С хранит список баз в реестре по адресу [HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles] в формате «путь к базе»=«название базы».
Для решения задачи быстренько набросался скриптик, основная идея логики которого следующая:
Скрипт запускается при входе пользователя в систему или перед запуском 1С. Дальше оно проверяет по списку возможность доступа к файлам конфигурации всех баз, и в случае успеха собирает reg-файл со списком доступных баз. Reg-файл импортируется в реестр, и PROFIT!!1.
В скрипте основная логика выглядит так:
if exist %db01%\1cv7.md type %dbfile1%>>%regfile%
где %db01% — путь к 1й базе, %dbfile1% — заготовка с названием базы.
Тоесть при использовании этого скрипта достаточно выдать пользователю доступ к базе на уровне NTFS — и у него соответстенно изменится список баз в приложении 1С.
Готовое все можно забрать по адресу 213.186.114.8/lo0-habr/1s-scripts.zip
Содержимое архива надо распаковать в корень диска С, допилить напильником под себя в батнике и текстовиках, и поставить пользователям в автозапуск.
Это решение вполне может применяться когда базы находятся в SQL, всеравно файлы с конфигурациями остаются.
p.s.
Не смотря на то, что по миру уже вовсю шагает 1Сv8х, в котором все делается иначе, еще осталость 100500 компаний использующих 1Сv77. И я надеюсь что мой опыт будет кому-нибудь полезным.
p.p.s.
Скрипт далек от идеала, и имеет место для усовершенствования.
Один из недостатков — необходимость в текстовых файлах-шаблонах названий баз.
Если кто сможет это удачно усовершествовать — прошу делиться наработками.