Операционные системы » Windows 2003 » Windows 2003 Server + Сервер терминалов + 1C Предприятие 7.7 - часть 2

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а всякий случай, рекомендую перенести сначала базу одной небольшой группы пользователей, обкатать сервер в течение недельки. После удачной обкатки - перенести остальные базы.




Imperio http://ru-admin.com

Отзывы (через аккаунты в социальных сетях Вконтакте, Facebook или Google+):

Оставить отзыв с помощью аккаунта ВКонтакте:

Оставить отзыв с помощью аккаунта FaceBook:

Оставить отзыв с помощью аккаунта Google+: