Как организовать одновременное обновление 12 идентичных информационных баз 1С?

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При работе с большим количеством однотипных конфигураций (например, если вы ведете 12 организаций на базе «1С:Бухгалтерия 2.0»), ручное внесение изменений в каждую базу становится трудоемким процессом, чреватым ошибками. Часто такая потребность возникает, когда было выполнено разделение информационной базы по организациям для удобства учета. Рассмотрим эффективные способы автоматизации этого процесса, начиная от классических механизмов платформы и заканчивая современными инструментами DevOps.

Метод 1: Использование механизма собственной поставки и поддержки

Этот способ считается «золотым стандартом» в среде 1С для тиражных решений. Мы создаем иерархию, где одна база является эталоном, а остальные — ее потребителями. Разберем этот процесс по шагам:

  1. Создание эталонной базы: Выбираем одну базу (13-ю), в которой будут вестись все разработки. В этой базе заходим в меню Конфигурация — Расширения конфигурации — Создать файлы поставки и обновления.
  2. Настройка поставки: В появившемся окне указываем данные о поставщике. Это позволит платформе идентифицировать изменения как «официальные» от вашего лица.
  3. Постановка рабочих баз на поддержку: В каждой из 12 рабочих баз выполняем сравнение и объединение с файлом .cf из эталонной базы. При первом объединении платформа предложит поставить конфигурацию на поддержку. Соглашаемся.
  4. Дальнейшее обновление: Теперь при внесении правок в эталон вы просто создаете файл обновления .cfu. Обновление рабочих баз будет проходить гораздо быстрее, так как платформа будет четко понимать, какие объекты изменились.

Преимущество: Вы сохраняете возможность видеть три конфигурации при сравнении (конфигурация поставщика, основная конфигурация и конфигурация базы данных), что критически важно для контроля изменений в сложных системах, особенно если требуется оперативный возврат к старой версии объекта.

Метод 2: Хранилище конфигурации и автоматизированные инструменты

Если проект подразумевает активную разработку, разберем связку штатного хранилища 1С и популярного стороннего инструмента «Обновлятор». Это наиболее практичный путь для повседневной работы программиста. При использовании внешней автоматизации важно убедиться, что окружение настроено верно, и выполнена регистрация COM компоненты в один клик для исключения ошибок подключения.

Проанализируем алгоритм действий:

  1. Создаем Хранилище конфигурации из нашей актуальной эталонной базы.
  2. Подключаем все 12 рабочих баз к этому хранилищу. Важно понимать, что для автоматизации нам не обязательно держать их постоянно подключенными в режиме конфигуратора.
  3. Используем специализированную утилиту (например, «Обновлятор» Милькина). В настройках каждой базы указываем путь к хранилищу.
  4. После завершения разработки в хранилище, в утилите выбираем все нужные базы и запускаем команду «Обновить». Программа сама по очереди зайдет в каждую базу, получит изменения из хранилища и выполнит обновление конфигурации базы данных.

Выясним причину, почему это удобно: автоматизированные средства умеют делать снимки (snapshots) баз перед обновлением. Если в одной из баз произойдет сбой (например, из-за нехватки места или блокировки таблиц), система автоматически откатит изменения, сохранив целостность данных.

Метод 3: Автоматизация через пакетный режим командной строки

Для тех, кто предпочитает полный контроль и скрипты, рассмотрим параметры командной строки платформы 1С. Мы можем написать .bat или .ps1 файл, который будет последовательно перебирать все базы.

Посмотрим на примеры ключевых параметров для работы конфигуратора:


/LoadCfg "C:\Release\hotfix.cf" — загрузить конфигурацию из файла cf;
/UpdateDBCfg — выполнить обновление конфигурации базы данных;
/UpdateCfg "C:\Release\update.cfu" — запустить обновление на поддержке с помощью файла cfu;
/DumpResult "C:\Logs\result.txt" — записать результат выполнения в лог-файл.

Типовой скрипт для обновления одной базы может выглядеть следующим образом:


"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" CONFIG /F "D:\Bases\Base1" /N "Admin" /P "Pass" /LoadCfg "D:\Releases\Current.cf" /UpdateDBCfg

Разберем ситуацию, когда нам нужно программно проверить успешность операции. Платформа возвращает код завершения: 0 — успех, 1 — ошибка, 101 — наличие критических ошибок. Эти коды можно использовать в циклах для остановки процесса, если что-то пошло не так.

Современные подходы: Расширения и OneScript

Если ваша платформа версии 8.3.6 и выше, проанализируем возможность использования Расширений конфигурации. Вместо того чтобы менять основную «тяжелую» конфигурацию, можно вынести уникальный код в расширение .cfe. В долгосрочной перспективе это облегчит дальнейший переход с редакции 2.0 на 3.0 и работу в управляемом приложении.

Преимущества расширений:

Для продвинутых разработчиков рекомендуется использовать OneScript. Это скриптовый язык с синтаксисом 1С, который позволяет писать мощные сценарии автоматизации. С помощью библиотек (например, vrunner), процесс обновления 12 баз сводится к одной команде в консоли:


vrunner vanessa --settings ./all_bases.json update-db --storage-path "tcp://server/repo"

Важные рекомендации по безопасности

При любом выбранном методе автоматизации, всегда следуйте правилам «хорошего тона» разработки:

  1. Резервное копирование: Перед массовым обновлением обязательно создавайте бэкапы. Перед этим полезно запустить регламентное задание для удаления помеченных объектов, чтобы уменьшить объем базы.
  2. Завершение сеансов: Обновление конфигурации базы данных (/UpdateDBCfg) невозможно при активных пользователях. Используйте параметры /UC для блокировки соединений.
  3. Тестирование: Сначала обновляйте одну тестовую базу, проверяйте работоспособность критических функций, таких как восстановление последовательности документов, и только потом запускайте процесс для остальных 11 баз.

Выясним итог: для 12 баз на обычных формах (Бухгалтерия 2.0) оптимальным выбором будет либо связка Хранилище + Обновлятор (для быстрого старта), либо механизм собственной поставки (для долгосрочной архитектурной правильности). Эти подходы избавят вас от рутины и минимизируют человеческий фактор.

← На главную