Выковал я из стали BAT-файл, да вооружил им Шедулер серверный. А файл тот был следующего содержания:
@ECHO OFF CLS SET BASE_NAME=ИмяБазыДанных SET CONNECT_STR="File=""D:\1C_Base\МояБазаДанных"";" SET USER_NAME=Update SET USER_PWD=123 SET START_FILE="C:\Program Files (x86)\1cv82\8.2.19.90\bin\1cv8.exe" SET BACKUP_DIR=D:\1C_Base\etc\Backup SET CF_DIR=D:\1C_Base\etc\Update SET LOG_DIR=D:\1C_Base\etc\Update\Log SET UNLOCK_CODE=КодРазрешения SET CF_FILE=%CF_DIR%\1Cv8.cf SET LOG_FILE=%LOG_DIR%\%BASE_NAME%_%date:~6,4%-%date:~3,2%-%date:~0,2%.log SET DUMP_FILE=%BACKUP_DIR%\%BASE_NAME%_%date:~6,4%-%date:~3,2%-%date:~0,2%.dt IF NOT EXIST %CF_FILE% EXIT ECHO --- Start the update %DATE% %TIME% --- ECHO --- Start the update %DATE% %TIME% --- >> %LOG_FILE% ECHO. ECHO. >> %LOG_FILE% ECHO --- Completion of the inactive terminal sessions --- ECHO --- Completion of the inactive terminal sessions --- >> %LOG_FILE% tskill *1cv8* /a /v @ECHO. @ECHO. >> %LOG_FILE% ECHO --- Shutdown users --- ECHO --- Shutdown users --- >> %LOG_FILE% START "" /wait %START_FILE% ENTERPRISE /IBConnectionString%CONNECT_STR% /N%USER_NAME% /P%USER_PWD% /WA- /DisableStartupMessages /CЗавершитьРаботуПользователей /Out%LOG_FILE% -NoTruncate ECHO. ECHO. >> %LOG_FILE% IF EXIST %DUMP_FILE% GOTO NO_BACKUP ECHO --- Creating a backup --- ECHO --- Creating a backup --- >> %LOG_FILE% ECHO Backup file: %DUMP_FILE% ECHO Backup file: %DUMP_FILE% >> %LOG_FILE% START "" /wait %START_FILE% DESIGNER /IBConnectionString%CONNECT_STR% /N%USER_NAME% /P%USER_PWD% /WA- /UC%UNLOCK_CODE% /DumpIB%DUMP_FILE% /Out%LOG_FILE% -NoTruncate ECHO. ECHO. >> %LOG_FILE% :NO_BACKUP ECHO --- Configuration update --- ECHO --- Configuration update --- >> %LOG_FILE% ECHO Update file: %CF_FILE% ECHO Update file: %CF_FILE% >> %LOG_FILE% START "" /wait %START_FILE% DESIGNER /IBConnectionString%CONNECT_STR% /N%USER_NAME% /P%USER_PWD% /WA- /UC%UNLOCK_CODE% /LoadCfg%CF_FILE% -WarningsAsErrors /Out%LOG_FILE% -NoTruncate ECHO. ECHO. >> %LOG_FILE% ECHO --- Information base update --- ECHO --- Information base update --- >> %LOG_FILE% START "" /wait %START_FILE% DESIGNER /IBConnectionString%CONNECT_STR% /N%USER_NAME% /P%USER_PWD% /WA- /UC%UNLOCK_CODE% /UpdateDBCfg -WarningsAsErrors /Out%LOG_FILE% -NoTruncate ECHO. ECHO. >> %LOG_FILE% ECHO --- Unlock database --- ECHO --- Unlock database --- >> %LOG_FILE% START "" /wait %START_FILE% ENTERPRISE /IBConnectionString%CONNECT_STR% /N%USER_NAME% /P%USER_PWD% /WA- /DisableStartupMessages /CРазрешитьРаботуПользователей /UC%UNLOCK_CODE% /Out%LOG_FILE% -NoTruncate ECHO. ECHO. >> %LOG_FILE% ECHO --- End of update %DATE% %TIME% --- ECHO --- End of update %DATE% %TIME% --- >> %LOG_FILE% ECHO. ECHO. >> %LOG_FILE% PAUSEBASE_NAME - Имя базы данных, используется в наименовании лог-файлов и файлов резервных копий.
CONNECT_STR - строка подключения к информационной базе. В случае файлового варианта должна выглядить так "File=""D:\1C_Base\МояБазаДанных"";" (обратите внимание на двойные кавычки). Для клиент-серверного варината "Srvr=""ИмяСервера"";Ref=""МояБазаДанных"";".
USER_NAME и USER_PWD - Соответственно логин и пароль пользователя под которым делается обновление. Полные права давать не обязательно, в типовых конфигурациях достаточно права администрирования.
START_FILE - Путь к программе 1С:Предприятие. Следует обратить внимание на то, что нужно обращаться к конкретному релизу (например, "C:\Program Files (x86)\1cv82\8.2.19.90\bin\1cv8.exe"), а не к файлу запускатору ("C:\Program Files (x86)\1cv82\common\1cestart.exe"). Дело в том, что этот файл запускает еще один новый процесс, а сам закрывается. В этом случае BAT-файл не будет дожидаться завершения каждого отдельного действия и запустить несколько версий 1С одновременно.
BACKUP_DIR - Путь для резервных копий. Имена файлов генерируются как ИмяБазыДанных_Год-Месяц-Число.
CF_DIR - Путь к файлу обновления 1Cv8.cf. Если файл в указанной директории есть, то начинается обновление, если нет - работа BAT-файла завершается.
LOG_DIR - Путь где будут храниться лог-файлы. Имена файлов генерируются как Год-Месяц-Число_ИмяБазыДанных.
Прошу прощения за английские слова. Проблема в том, что BAT-файл должен быть в кодировке 866 OEM, а лог программа 1С пишет в 1251 ANSI.
Итак, что делает скрипт.
1. Проверяет наличие файла обновления по указанному пути. Если файла нет, то скрипт завершается.
2. Убивает зависшие процессы: tskill *1cv8* /a /v
3. Завершает работу всех пользователей и блокирует базу для входа.
4. Если в текущую дату еще не делалась резерваная копия, то делает выгрузку данных.
5. Обновляет конфигурацию.
6. Обновляет информационную базы.
7. Разблокирует базу для входа пользователей.
Теперь я просто кладу вечером файл обновления в нужную папку, прихожу утром и, на всякий случай, проверяю логи, дабы убедиться, что все обновилось.