При автоматизации администрирования 1С часто возникает ситуация, когда необходимо обновить конфигурацию или выполнить обновление информационной базы в период, когда она закрыта для пользователей. Прямое обращение через COM-соединение или запуск стандартного клиента часто оказывается невозможным из-за активной блокировки. Рассмотрим, как решить эту задачу с помощью механизмов пакетного запуска 1С.
Когда база находится в состоянии блокировки входа, стандартный запуск клиентского приложения 1С 1cv8.exe выдает сообщение об ошибке или требует подтверждения легальности обновления. Если база была заблокирована администратором, платформа ожидает специальный код разрешения. Без передачи этого кода в параметрах запуска даже административные сеансы не смогут выполнить необходимые действия, такие как простановка «галки легальности» или запуск процедуры обновления ИБ.
Для того чтобы обойти запрет, используйте ключ запуска /UC (код разрешения). Этот ключ позволяет авторизоваться в заблокированной базе. Чтобы запустить внешнюю обработку в момент блокировки, необходимо использовать следующий подход:
1cv8.exe, соответствующий версии платформы, на которой работает целевая база. Разница в версиях (например, переход с 8.3.10 на 8.3.14) может привести к некорректной работе COM-соединения или автоматизированных скриптов.
"C:\Program Files\1cv8\bin\1cv8.exe" ENTERPRISE /S"Server\Base" /N"Admin" /P"Password" /UC"КодРазрешения" /Execute"C:\Path\To\MyScript.epf"
В данном примере параметр /UC передает секретный код, который был установлен при блокировке базы. Это позволяет сеансу «войти» в систему, несмотря на запрет для других пользователей. Ваша обработка, запущенная через /Execute, выполнит необходимые действия, после чего может корректно завершить работу.
Если ваша задача состоит в том, чтобы довести конфигурацию до актуального состояния, лучше всего использовать пакетный режим работы Конфигуратора. Это исключает необходимость открытия окна «Предприятие», которое требует «легализации» обновления пользователем.
Рассмотрим пошаговый алгоритм выполнения обновления:
/UpdateCfg, указав путь к файлу поставки обновления (.cf или .cfu)./UpdateDBCfg.Пример пакетного файла для автоматизации:
"C:\Program Files\1cv8\bin\1cv8.exe" CONFIG /S"Server\Base" /N"Admin" /P"Password" /UpdateCfg "C:\Update\1cv8.cf" /UpdateDBCfg /Out "C:\Logs\update.log"
При работе с автоматизацией важно учитывать следующие моменты:
1cv8.exe ведет именно в ту директорию версии платформы, которая соответствует текущей базе. Если база обновлена до версии 8.3.14, запуск через «бинарник» версии 8.3.10 вызовет ошибку./Execute может быть заблокирован до тех пор, пока не будет выполнено /UpdateDBCfg./Out), чтобы иметь возможность проанализировать причины сбоя, если процедура не завершится успехом.Таким образом, разделение процесса на техническое обновление через CONFIG и выполнение прикладной логики через ENTERPRISE с ключом /UC — это самый надежный способ работы с базой в условиях блокировки.