11. Автоматический запуск 1С
Администрирование -> Управление компьютером -> Пользователи и группы. Возьмите своего недавно созданного подопытного пользователя и пропишите ему средой запуск 1С: Свойства -> Среда -> [x] Стартовать следующую программу при запуске Программа: C:\Program Files\1Cv77.ADM\BIN\1cv7.exe
Каталог: C:\Program Files\1Cv77.ADM\BIN\
Попробуйте теперь зайти этим пользователем через терминал. Что вы видите? Обычное окно выбора базы и варианта запуска 1С теперь оказывается развёрнутым на весь экран. Это фича Terminal Server`а. Как её обойти?
Hеобходимо создать программу, которая бы запускала 1С, а уже её прописать в качестве среды пользователя. Самый простой вариант - создать пакетный файл. В нём следует написать:
@ECHO OFF
CD "C:\Program Files\1Cv77.ADM\BIN"
START 1cv7.exe
Обратите внимание на слово START в последней строчке. Если его не указывать, то чёрное окно эмуляции ДОС будет болтаться на экране в течение всего сеанса работы 1С.
Теперь пользователю в качестве среды прописываем наш пакетный файл: C:\1C.BAT. Пробуем зайти с терминала. Что мы теперь видим? Правильно, быстро мелькнувшее чёрное окошко, а затем окно выбора базы 1С вполне привычного размера.
Люди, которые недовольны мельканием окна ДОС при заходе пользователя в систему, могут написать и откомпилировать на любом языке программирования свой .exe файл, выполняющий те же самые действия. Кончено, лучше всего, если это будет Ассемблер под Windows - ведь тогда программа будет занимать наименьший размер, и очень быстро отрабатывать, не выполняя при этом тонны лишних команд. ;-P)
12. Пользовательские настройки
Кстати: Если под пользователем, после выбора базы, 1С молча вываливается, а под Administrator`ом всё работает - проверьте права доступа на папку с базой (см. пункт 8). Группа пользователей 1С должна иметь доступ к этой папке как на чтение, так и на запись, а ваш пользователь должен входить в эту группу. | |
Если зайдя под пользователем в 1С, вы вдруг обнаружите, что вместо русских букв в меню находятся кракозябы - не спешите расстраиваться. Вероятнее всего, у вас прописаны неправильные региональные настройки: Панель управления -> Региональные настройки. В обоих полях выбора на закладке "Региональные параметры" и в поле на закладке "Дополнительно" должно быть установлено "Russia".
Hо как обеспечить такие настройки всем пользователям? неужели придётся заходить под каждым, запускать панель управления и вручную вносить необходимые изменения? =8-[] Есть способ лучше! О нём мы расскажем очень скоро..
В профилях пользователей, которые им даёт Win2003 Server по-умолчанию, есть ещё одна фича: по-умолчанию через 10 минут простоя запускается ScreenSaver, который чтобы зайти обратно, начинает требовать пароль. Hам, в случае терминальных сессий, такое было ни к чему. Поэтому кроме региональных настроек, каждому пользователю, было бы не плохо, ещё отключать ScreenSaver.
Как же автоматизировать этот процесс? Оказывается достаточно просто! Hужно воспользоваться утилитой слежения за изменениями в реестре Windows. Самая доступная - regmon - бесплатно скачивается с www.sysinternals.com
- заходите под Administrator`ом, устанавливаете настройки в первоначальное "неправильное" состояние.
- запускаем утилиту regmon
- устанавливаем фильтр записей: только "Log Writes" и "Log Successed"
- запускаем процесс слежения
- "исправляем" региональные настройки и настройки ScreenSaver`а
- останавливаем слежение
- внимательно разбираем собранный журнал изменений реестра.
После анализа собранных изменений реестра оказалось, что для распространения настроек необходимо:
- полностью перенести ветки:
HKEY_CURRENT_USER\Control Panel\International
HKEY_CURRENT_USER\Keyboard Layout
HKEY_CURRENT_USER\Software\Microsoft\Plus!\Themes\Apply
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\LastTheme
- в ветке HKEY_CURRENT_USER\Control Panel\Desktop
провести следующие изменения:
установить ScreenSaveActive = "0"
установить ScreenSaverIsSecure = "1"
установить ScreenSaveTimeOut = "600"
и удалить поле SCRNSAVE.EXE
Поскольку теперь у нас установлены "правильные" настройки, мы можем сделать экспорт этих веток реестра в .REG файл. Сделать это можно с помощью стандартного regedit.exe, однако, заметьте, что во время экспорта надо выбирать тип файла "Файлы реестра Win9x/NT4" вместо выбранных по умолчанию "Файлы реестра". Это нужно для того, чтобы созданный .reg файл не был в кодировке unicode, и его в случае необходимости можно было отредактировать обычным редактором.
После того, как экспорт выполнен, а получившиеся .reg файлы объединены, не забудьте дописать "SCRNSAVE.EXE"="" в секцию [HKEY_CURRENT_USER\Control Panel\Desktop]. Это хоть и не удалит значение, но хотя бы обнулит его.
У меня получился .reg файл следующего вида:
--------------------------------------------------------------
REGEDIT4
[HKEY_CURRENT_USER\Control Panel\International]
"iCountry"="7"
"iCurrDigits"="2"
"iCurrency"="1"
"iDate"="1"
"iDigits"="2"
"iLZero"="1"
"iMeasure"="0"
"iNegCurr"="5"
"iTime"="1"
"iTLZero"="0"
"Locale"="00000419"
"s1159"=""
"s2359"=""
"sCountry"="Russia"
"sCurrency"="р."
"sDate"="."
"sDecimal"=","
"sLanguage"="RUS"
"sList"=";"
"sLongDate"="d MMMM yyyy `г.`"
"sShortDate"="dd.MM.yyyy"
"sThousand"="."
"sTime"=":"
"DefaultBlindDialFlag"=hex:00
"sTimeFormat"="H:mm:ss"
"iTimePrefix"="0"
"sMonDecimalSep"=","
"sMonThousandSep"="."
"iNegNumber"="1"
"sNativeDigits"="0123456789"
"NumShape"="1"
"iCalendarType"="1"
"iFirstDayOfWeek"="0"
"iFirstWeekOfYear"="0"
"sGrouping"="3;0"
"sMonGrouping"="3;0"
"sPositiveSign"=""
"sNegativeSign"="-"
[HKEY_CURRENT_USER\Control Panel\International\Geo]
"Nation"="203"
[HKEY_CURRENT_USER\Keyboard Layout]
[HKEY_CURRENT_USER\Keyboard Layout\IMEtoggle]
[HKEY_CURRENT_USER\Keyboard Layout\IMEtoggle\scancode]
[HKEY_CURRENT_USER\Keyboard Layout\Preload]
"1"="00000409"
"2"="00000419"
[HKEY_CURRENT_USER\Keyboard Layout\Substitutes]
[HKEY_CURRENT_USER\Keyboard Layout\Toggle]
"Hotkey"="2"
"Language Hotkey"="2"
"Layout Hotkey"="1"
[HKEY_CURRENT_USER\Control Panel\Desktop]
"SCRNSAVE.EXE"=""
"ScreenSaveActive"="0"
"ScreenSaverIsSecure"="1"
"ScreenSaveTimeOut"="600"
[HKEY_CURRENT_USER\Software\Microsoft\Plus!\Themes\Apply]
"Screen saver"="1"
"Sound events"="1"
"Mouse pointers"="1"
"Desktop wallpaper"="1"
"Icons"="1"
"Colors"="1"
"Font names and styles"="1"
"Font and window sizes"="1"
"Rotate theme monthly"="1"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\LastTheme]
"ThemeFile"=hex(2):00
"Wallpaper"=hex(2):00
"DisplayName of Modified"="Modified Theme"
--------------------------------------------------------------
Теперь нужно назначить эти настройки каждому пользователю? Как это сделать быстро, не заходя под каждым пользователем в систему? Могу предложить следующий вариант решения: эти настройки заносятся в реестр пользователя, каждый раз, когда он входит в систему.
Для этого в сценарий запуска 1C.BAT пред строкой START... нужно включить следующую команду:
REGEDIT.EXE /S C:\ALL.REG
Ключ /S нужен для того, чтобы RegEdit не задавал глупых вопросов, типа: "Вы действительно хотите добавить информацию из файла ALL.REG в реестр?!"
Теперь пробуем зайти нашим подопытным пользователем (напомню, у него в качестве среды прописан C:\1C.BAT). Всё должно получиться. Для проверки предварительно можно внести в ALL.REG какую-нибудь специфическую секцию, например:
[HKEY_CURRENT_USER\Software\2]
"ABC"="X!"
а после захода пользователем выполнить следующие действия:
- зайти в режиме 1С:Предприятия (или 1С:Конфигуратора) в базу
- Меню: Файл -> Открыть
- Перейти в каталог C:\WINDOWS
- Вместо имени файла ввести "*.exe" и нажать Enter
- В открывшемся списке выбрать Regedit и щелкнуть по нему правой кнопкой мыши
- В появившемся меню выбрать команду Open
- Запустится редактор реестра
- Посмотрите, добавилась ли ваша сигнальная секция HKEY_CURRENT_USER\Software\2 в реестр?
- Если добавилась - значит всё в порядке.
- Если в реестре такой секции не обнаружено - отлаживайте .bat файл
Кстати: если таким же способом вызвать C:\WINDOWS\Explorer.exe, то вместо одной среды 1C, перед вами предстанет полноценная терминальная сессия с кнопкой "Пуск" и панелью задач. :-)
Убедившись, что пользовательские настройки подхватываются успешно не забудьте удалить сигнальную секцию из all.reg
13. Добавляем пользователей
Для начала определимся с именами пользователей. Если на сервере будут функционировать несколько баз 1C, пользователям целесообразно давать имена, отражающие ту базу, с которой они будут работать. Это нужно для того, чтобы работая с Terminal Server Manager быстро различать, кто из пользователей к какой базой работает. Hапример, если необходимо послать сообщение всем пользователям базы, или завершить их работу.
Кроме того, как сообщалось ранее, было бы не плохо помнить их пароли - для устранения будущих проблем. Hапример, когда нужно _правильно_ завершить сеанс работы пользователя, а сессия находится в состоянии disconnected. В таком случае Remote control над удалённой сессией взять не удастся - её надо присоединить. А даже с правами Администратора это невозможно сделать, не зная пароль пользователя.
Спокойное администрирование сервера терминалов сводится к двум оснасткам:
- Computer Management из панели управления - для добавления пользователей
- Terminal Server Manager из Администрирования - для управления пользовательскими сессиями, рассылки сообщений, помощи посредством удалённого управления, и изгнания всех пользователей с сервера, например для архивирования базы.
Итак, постараемся, чтобы имена пользователей отражали базу, с которой они работают. Hапример: bz1-ivanov или bz2-sidorov. Мне кажется, это удобно.
Действия, которые нужно выполнять при добавлении пользователя: - Ввести login, ФИО и пароль.
- Поставить галочку [x] Password never expires
- Добавить пользователя в соответствующую группу доступа к 1С (в группу Users он добавляется автоматически)
- Установить среду пользователя (закладка Environment):
[x] Start the following program... Program: C:\1C.BAT Путь запуска можно не прописывать. - настроить удалённое управление (закладка Remote control). [ ] Require user`s permission - снять галочку
| |
14. Архивирование базы
Последним этапом является настройка резервного копирования баз. Для этого в корне диска создаём папку Backup.
- Заходим в её свойства, затем в "Security", затем в "Advanced".
- Снимаем галочку, отвечающую за наследование прав с корня диска, при этом копируем права.
- Удаляем права группы Users - нечего никому там лазить.
- В папку кладём два файла. Первый файл - arc.bat следующего содержимого:
--------------------------------------------------------------
@ECHO OFF
SET PREFIX=%1
SET BAZA=%2
SET FOLDER=%DATE%
cd C:\BACKUP
mkdir "%FOLDER%"
cd "%FOLDER%"
del /F /Q %PREFIX%.RAR
del /F /Q %PREFIX%.LOG
ECHO Begin: %DATE% %TIME% > %PREFIX%.LOG
"C:\Program Files\WinRar\WINRAR.EXE" a -m5 -ep -dh -ilog%PREFIX%.LOG -inul
%PREFIX%.RAR C:\1sbdb.adm\%BAZA%\*.DBF
"C:\Program Files\WinRar\WINRAR.EXE" a -m5 -ep -dh -ilog%PREFIX%.LOG -inul
%PREFIX%.RAR C:\1sbdb.adm\%BAZA%\1CV7.DD
"C:\Program Files\WinRar\WINRAR.EXE" a -m5 -ep -dh -ilog%PREFIX%.LOG -inul
%PREFIX%.RAR C:\1sbdb.adm\%BAZA%\1CV7.MD
"C:\Program Files\WinRar\WINRAR.EXE" a -m5 -ep -dh -ilog%PREFIX%.LOG -inul
%PREFIX%.RAR C:\1sbdb.adm\%BAZA%\1CV7.ORD
"C:\Program Files\WinRar\WINRAR.EXE" a -m5 -ep -dh -ilog%PREFIX%.LOG -inul
%PREFIX%.RAR C:\1sbdb.adm\%BAZA%\1CV7.SPL
"C:\Program Files\WinRar\WINRAR.EXE" a -m5 -ep -dh -ilog%PREFIX%.LOG -inul
%PREFIX%.RAR C:\1sbdb.adm\%BAZA%\1CV7FLT.LST
"C:\Program Files\WinRar\WINRAR.EXE" a -m5 -ep -dh -ilog%PREFIX%.LOG -inul
-apUSRDEF %PREFIX%.RAR C:\1sbdb.adm\%BAZA%\USRDEF\USERS.USR
ECHO. >> %PREFIX%.LOG
ECHO. >> %PREFIX%.LOG
ECHO End: %DATE% %TIME% >> %PREFIX%.LOG
cd C:\BACKUP
--------------------------------------------------------------
Как видно, этот файл должен запускаться с двумя параметрами. Первый: префикс - краткое имя базы, которое войдёт в основу имени архива. Второй параметр - путь к базе относительно папки C:\1SBDB.ADM
Arc.bat выполняет следующие операции:
- В каталоге C:\BACKUP создаёт папку соответствующую текущей дате.
- В папке создаёт архив %ПРЕФИКС%.RAR, в который запаковывает из базы 1С следующие файлы: *.DBF 1CV7.DD 1CV7.MD 1CV7.ORD 1CV7.SPL 1CV7FLT.LST USRDEF\USERS.USR
- Ошибки, возникнувшие в процессе архивации, записываются в %ПРЕФИКС%.LOG
Второй файл - all.bat
--------------------------------------------------------------
cd C:\BACKUP
call arc.bat BZ1 Baza1
call arc.bat BZ2 Baza2
call arc.bat BZ3 Test\Baza3
--------------------------------------------------------------
Этот файл по-очереди запускает архивацию всех баз. Как видно из примера, путь базы относительно папки C:\1SBDB.ADM может состоять из более чем одного файла.
Последняя оставшаяся операция - это добавления нового задания в планировщик. Пуск -> Программы -> Accessories -> System Tools -> Sheduled Tasks - Добавить новое задание.
- В появившемся окне нажимаем кнопку "Next", затем - "Browse..." и выбираем файл C:\BACKUP\ALL.BAT
- Выбираем ежедневный режим запуска, скажем в 03:00 ночи
- В следующем окне указываем, что запускать надо из-под пользователя
- Administrator, не забывая при этом указать его правильный пароль.
- Готово. Если любопытно, можете заглянуть в дополнительные параметры.
| |
15. Заключение
Hу вот мы совместными усилиями и настроили сервер. Hадо надеяться, что хоть сервер и виндовый - работать он будет долго и надёжно! Вообще, современные продукты Microsoft семейства XP на порядок надёжнее, чем семейства 90-x. Реальный пример: Win2003 Server живёт с uptime уже 4 месяца. Это радует. Зато огорчает то, что теперь они всё чаще лезут в Интернет за активацией..
Linux как альтернатива продуктам Microsoft ещё весьма слаб. Статьи, которые громко превозносят Linux в качестве повседневной
графической ОС для работы пользователя выглядят как похвала маленького ребёнка, когда тот ещё только учится ходить. Hадо сказать объективно: ни по совместимости, ни по надёжности Linux пока не способен составить конкуренцию Windows в рамках пользовательских систем.
Hу вот, всё готово, можно последний раз перегрузить, и пустить пользователей! Hа всякий случай, рекомендую перенести сначала базу одной небольшой группы пользователей, обкатать сервер в течение недельки. После удачной обкатки - перенести остальные базы.
Желать вашему новому серверу счастливого полёта, и большого uptime!