C1Updater is a PowerShell script for unattended configuration updates of 1C:Enterprise 8.3 client-server infobases: it loads a .cf file or updates from a configuration repository (main configuration or extension), and around the update terminates user sessions, locks the infobase, blocks scheduled jobs, runs optional external data processors and БСП update handlers, then unlocks. It is for 1C administrators and DevOps engineers on Windows and works through COM (V83.COMConnector) or RAS (rac). The documentation below is in Russian.
- как из файла (ApplyCFPath), так и из хранилища(ConfigurationRepositoryF)
- как для основной конфигурации, так и для расширения(Extension)
- как с использованием доменной, так и парольной(BaseUser, BaseUserPass) авторизации
- Перед обновлением завершает работу всех пользователей
- Перед обновлением может выполнить обработку WorkloadBeforeUpdatePath
- Перед обновлением запомнит состояние работы РЗ и заблокирует их выполнение
- Перед обновлением блокирует базу случайным или указанным кодом(PermissionCode)
- После обновления применит конфигурацию
- После обновления восстановит сохранённое состояние работы РЗ
- После обновления может выполнить обработку WorkloadAfterUpdatePath
- После обновления может запустить выполнение обработчиков обновления конфигурации (UpdateByClientInTheEnd)
- После обновления разблокирует базу
TargetBase # имя целевой базы для обновления
TargetBaseServer # имя сервера целевой базы для обновления
TargetBasePort # порт сервера целевой базы, если отличается от стандартного то 1541
TargetBaseAgentPort # порт агента сервера целевой базы, если отличается от стандартного то 1540
PermissionCode # код разрешения доступа, если не указан, то устанавливается произвольный
ApplyCFPath # путь к применяемому файлу конфигурации, если отсутствует, то просто применяем конфигурацию
WorkloadBeforeUpdatePath # имя обработки, выполняемой перед обновлением конфигурации. Если файла нет, пропускаем этап
WorkloadAfterUpdatePath # имя обработки, выполняемой после обновления конфигурации. Если файла нет, пропускаем этап
BaseUser # имя пользователя для подключения к базе
BaseUserPass # пароль пользователя для подключения к базе
ConfigurationRepositoryF # адрес хранилища конфигурации
ConfigurationRepositoryN # имя пользователя хранилища конфигурации
ConfigurationRepositoryP # пароль пользователя хранилища конфигурации
Extension # имя расширения хранилища конфигурации
UpdateByClientInTheEnd # /C ЗапуститьОбновлениеИнформационнойБазы
UseRAServer # использовать RASserver с указанный именем и портом
LockMessage # сообщение, используемое для блокировки базы 1С
C1Files # Каталог для используемой версии 1С
Обновление базы basename на сервере serv конфигурацией из файла ApplyCFPath c:\1C\1cfv.cf под именем user с паролем pwd. База блокируется кодом 1, перед обновлением выполняется внешняя обработка отключения РИБ DistributedInfoBase_OFF.epf, после обновления - обработка c:\1C\DistributedInfoBase_ON.epf подключет РИБ
powershell.exe -NoProfile -File c:\dev\C1Updater\C1Updater.ps1 ^
-TargetBase basename ^
-TargetBaseServer serv ^
-TargetBasePort 1541 ^
-TargetBaseAgentPort 1540 ^
-ApplyCFPath c:\1C\1cfv.cf ^
-PermissionCode 1 ^
-WorkloadBeforeUpdatePath c:\1C\DistributedInfoBase_OFF.epf ^
-WorkloadAfterUpdatePath c:\1C\DistributedInfoBase_ON.epf ^
-BaseUser user ^
-BaseUserPass pwd
Обновление расширения repo_ext в базе targetbase на сервере targetserv из привязанного к базе хранилища tcp://server:port/repo_name под именем repo_user и паролем repo_pwd. После применения конфигурации запускаем БСПшные обработчики обновления в конфигурации. Используем RAS-сервер ras_host:port (вместо COM-соединения), указанную версию 1С и блокируем с сообщение "Ты не зайдёшь!" Для авторизации в базе используется доменная авторизация.
powershell -NoProfile -File c:\dev\C1Updater\C1Updater.ps1 ^
-TargetBase targetbase ^
-TargetBaseServer targetserv ^
-TargetBasePort 1541 ^
-TargetBaseAgentPort 1540 ^
-ApplyCFPath "c:\temp\1Cv8_demo.cf" ^
-ConfigurationRepositoryF tcp://server:port/repo_name ^
-ConfigurationRepositoryN repo_user ^
-ConfigurationRepositoryP repo_pwd ^
-Extension repo_ext ^
-UpdateByClientInTheEnd 1 ^
-UseRAServer targetserv:port ^
-LockMessage "Ты не зайдёшь!" ^
-C1Files "c:\program files\1Cv8\8.3.16.1148\bin"
Важный момент - Операции, совершаемые RAS-сервером, осуществляются под УЗ RAS-сервера. Если вы завели его с авторизацией под системной учётной записью, то в базу вы можете не попасть.