Автоматизация процесса регулярного обновления типовых конфигураций 1С позволяет существенно сократить рутинные трудозатраты администраторов. Однако при попытке реализовать подобный механизм исключительно средствами встроенного языка в режиме 1С:Предприятие разработчики сталкиваются с принципиальными ограничениями платформы. Разберем, как устроена процедура обновления, почему обычная обработка не способна выполнить ее целиком внутри себя и какие инструменты позволяют реализовать требуемый сценарий.
Проанализируем архитектуру платформы 1С. Из пользовательского сеанса 1С:Предприятие (включая запуск внешних обработок) невозможно применить файл обновления к конфигурации и выполнить реструктуризацию таблиц информационной базы без монопольного запуска режима Конфигуратор. Таким образом, любая внешняя обработка может выступать только в роли инициатора процесса — формировать управляющую команду и запускать отдельный процесс операционной системы.
Кроме того, процедура обновления любой современной типовой конфигурации всегда является двухэтапной:
.cf или .cfu) и последующее обновление конфигурации базы данных. Этот шаг выполняется исключительно через Конфигуратор либо специализированные системные утилиты платформы в пакетном режиме.1С:Предприятие от имени пользователя с административными правами. Без завершения данного этапа база считается необновленной, а пользователи не смогут продолжить работу.Для решения задачи фонового обновления типовых конфигураций на практике часто применяют специализированные внешние утилиты, такие как программа «Обновлятор-1С». Этот инструмент берет на себя исполнение полного жизненного цикла обновления базы:
Конфигуратора для применения файлов обновлений.1С:Предприятие для выполнения обработчиков БСП и контроль их завершения.Если требуется выстроить аналогичный процесс самостоятельно с помощью скриптов (PowerShell, Bash, OneScript) или управляющей обработки, разберем каждый этап детально.
Шаг 1. Блокировка соединений и завершение сеансов
Для корректного монопольного доступа необходимо заблокировать вход пользователей, задав код разрешения для административных запусков. При установке блокировки сеансов указывается специальный ключ, который в дальнейшем передается в параметрах запуска через ключ командной строки /UC.
В клиент-серверном варианте завершать активные подключения пользователей и фоновые задания надежнее всего через утилиту администрирования кластера серверов rac (в связке со службой ras) либо через программный COM-интерфейс кластера. Завершение сеансов из самого сеанса 1С:Предприятие может оказаться неуспешным при наличии зависших процессов.
Шаг 2. Создание резервной копии
Выгрузка базы средствами платформы с помощью пакетного ключа /DumpIB допустима только для файловых информационных баз. Для клиент-серверных баз выгрузка в .dt не является полноценной резервной копией из-за низкой скорости работы и риска нарушения целостности транзакций. В промышленной эксплуатации перед обновлением обязательно создается бэкап средствами используемой СУБД (PostgreSQL, MS SQL Server и др.).
Шаг 3. Пакетное обновление метаданных
Для применения изменений вызывается исполняемый файл 1cv8.exe в пакетном режиме со следующими ключевыми параметрами:
DESIGNER — запуск в режиме Конфигуратора./UpdateCfg <ПутьКФайлу> — указание файла обновления (.cfu или .cf)./UpdateDBCfg — применение изменений к конфигурации базы данных./UC <КодДоступа> — код разрешения для обхода установленной блокировки./Out <ПутьКФайлуЛога> — перенаправление журнала выполнения в текстовый файл для последующего анализа ошибок и кодов возврата.Шаг 4. Запуск обработчиков БСП
После успешного завершения работы Конфигуратора необходимо запустить сеанс клиента с ключом /UC, чтобы отработали процедуры обновления данных БСП. Скрипт или управляющая программа должны отслеживать завершение регламентных процедур обновления данных в журнале регистрации или специальных служебных константах БСП.
Шаг 5. Снятие блокировки соединений
После подтверждения успешности обоих этапов скрипт снимает блокировку соединений через кластер серверов или параметры информационной базы, открывая доступ пользователям.
Посмотрим на другие встроенные возможности платформы, облегчающие задачу обновления:
ibcmd: в современных версиях платформы доступна автономная серверная утилита, позволяющая выполнять манипуляции с конфигурацией базы данных без запуска графического исполняемого файла Конфигуратора.