Обслуживание парка из нескольких десятков однотипных информационных баз с доработками — частая задача администраторов и разработчиков 1С. Когда в каждой базе используется одинаковая конфигурация, содержащая нетиповые изменения, ручное пошаговое обновление через сравнение и объединение отнимает слишком много времени. Разберем, можно ли использовать для тиражирования общее хранилище конфигурации, какие скрытые угрозы несет операция полной загрузки конфигурации и как выстроить безопасный процесс массового обновления.
На первый взгляд идея подключить все рабочие базы к единому хранилищу конфигурации кажется привлекательной: достаточно обновить одну базу, поместить изменения в хранилище, а в остальных выполнить команду Получить конфигурацию из хранилища. Однако такой подход несет серьезные риски:
1Cv8ddb.1CD). Одновременное обращение множества рабочих баз по сети создает пиковую нагрузку на файловую систему, что нередко приводит к блокировкам и физическому повреждению самого хранилища.Выясним причину, почему простое замещение конфигурации (через хранилище или меню Загрузить конфигурацию из файла) может привести к безвозвратной потере информации в рабочих базах. Платформа 1С идентифицирует каждый объект метаданных не только по имени, но и по уникальному внутреннему идентификатору (UUID):
Если 15 баз создавались в разное время из разных шаблонов или обновлялись вручную, внутренние идентификаторы даже одноименных таблиц и реквизитов могут различаться. При полной загрузке конфигурации (или первичном подключении к хранилищу) конфигурация замещается целиком. Если внутренние идентификаторы не совпали, платформа считает, что старые объекты были полностью удалены, а новые — добавлены. В процессе реструктуризации базы на уровне СУБД физическая таблица со старыми учетными данными удаляется и заменяется пустой таблицей с новым UUID. Это приводит к потере документов или справочников (особенно часто возникают коллизии со справочниками вида УдалитьСправочник).
При использовании штатного механизма Сравнить и объединить с конфигурацией из файла сопоставление выполняется по именам и типам, что исключает разрушение физической структуры уже записанных таблиц.
Использование хранилища допустимо только в том случае, если все продуктовые базы являются прямыми копиями одной исходной базы, их конфигурации идентичны по идентификаторам, а само хранилище развернуто на быстром и стабильном дисковом ресурсе. Рассмотрим пошаговый алгоритм:
Наиболее надежный, быстрый и масштабируемый способ тиражирования — подготовка эталонного файла конфигурации (cf) с последующей автоматизацией через командную строку конфигуратора. Этот вариант исключает зависимость от сетевого хранилища и позволяет выполнять обновление в нерабочее время.
Проанализируем правильную последовательность действий:
Удалить, а в следующем — удаляется полностью).update_release.cf).Посмотрим на пример командного файла пакетного наката конфигурации для клиент-серверной базы:
REM 1. Создание резервной копии информационной базы
"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /S "server-1c\base_01" /N "Admin" /P "Pass123" /DumpIB "D:\Backups\base_01.dt"
REM 2. Объединение конфигурации с эталонным файлом доработок
"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /S "server-1c\base_01" /N "Admin" /P "Pass123" /MergeCfg "D:\Releases\update_release.cf"
REM 3. Обновление структуры конфигурации базы данных
"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /S "server-1c\base_01" /N "Admin" /P "Pass123" /UpdateDBCfg -WarningsAsErrors
REM 4. Запуск процедур обновления данных в режиме предприятия
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S "server-1c\base_01" /N "Admin" /P "Pass123" /C ЗапуститьОбновлениеИнформационнойБазы
Если все рабочие базы гарантированно получены из одной исходной копии и не имеют расхождений по внутренним идентификаторам метаданных, вместо ключа /MergeCfg допускается использование ключа полной загрузки /LoadCfg, что заметно ускоряет процесс.
Для долгосрочной поддержки парка однотипных конфигураций рекомендуется организовать архитектуру собственной поставки:
cfu или cf через стандартный мастер поддержки. Это полностью предотвращает затирание данных и гарантирует корректное ведение версионности.