Можно ли обновить 1С, перепрыгнув через несколько релизов в распределенной базе (РИБ)?

Системный администратор 1С v8.3 (Управляемые формы) 1С:Розница IT и автоматизация бизнеса
← На главную

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

В чем главная опасность «прыжков» через релизы в РИБ?

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

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

Если мы обновляем центральную базу (ЦБ) последовательно, релиз за релизом, то на каждом шаге в режиме «Предприятие» успешно отрабатывают промежуточные обработчики. Но что происходит, если подчиненная база (РБ) обновляется скачком — например, сразу с релиза 2.2.11 на 2.2.13?

При обмене из центрального узла в подчиненный прилетает сразу финальная конфигурация релиза 2.2.13. При запуске периферийной базы БСП видит, что текущая версия данных — 2.2.11, а конфигурация уже 2.2.13. Система пытается запустить цепочку пропущенных обработчиков за все промежуточные релизы. Именно в этот момент велика вероятность столкнуться со следующими критическими проблемами:

---

Сценарий из практики: ЦБ обновлена последовательно, а РБ — через обмен. Что делать?

Выясним причину частой иллюзии успешного обновления. Администратор последовательно обновил центральный узел (запуская «Предприятие» на каждом шаге), а затем запустил синхронизацию. Периферийные узлы получили финальный файл конфигурации и успешно открылись в режиме «Предприятие». Базы работают, пользователи не жалуются. Означает ли это, что все прошло гладко?

К сожалению, нет. Ошибки незавершенных обработчиков обновлений в РБ часто носят отложенный характер. Проблемы могут проявиться через недели или месяцы — например, при попытке провести старый документ, закрыть месяц, сформировать регламентированную отчетность или при очередном обновлении.

Выполним проверку состояния базы прямо сейчас. Для этого в каждой периферийной базе перейдем в раздел Администрирование — Обслуживание — Результаты обновления программы (или воспользуемся журналом регистрации, отобрав события по источнику БСП). Если там присутствуют невыполненные обработчики или ошибки с красными маркерами — структура данных нарушена. Для поиска расхождений в учете, которые могут возникнуть при некорректном выполнении обработчиков, применяется автоматическое сравнение бухгалтерских и налоговых проводок между базами 1С.

---

Три проверенных метода безопасного обновления распределенных баз

Рассмотрим по шагам рабочие сценарии, которые используют практикующие специалисты 1С для предотвращения и исправления подобных проблем.

Метод 1. Классический (Последовательное обновление ЦБ с промежуточным обменом)

Этот метод является самым надежным и рекомендованным фирмой 1С, так как гарантирует полную идентичность выполнения всех алгоритмов во всех узлах сети.

Разберем алгоритм действий:

  1. Остановим работу всех пользователей во всех узлах распределенной информационной базы.
  2. Выполним полную двустороннюю синхронизацию, убедившись, что все документы и справочники из периферийных узлов успешно зашли в центральный узел.
  3. Временно отключим автоматическое расписание синхронизации баз.
  4. Обновим конфигурацию центральной базы на первый промежуточный релиз в конфигураторе, затем запустим ЦБ в режиме «1С:Предприятие» и дождемся 100% выполнения всех обработчиков обновления.
  5. Запустим сеанс одностороннего обмена (выгрузки) из центрального узла. При этом в файл обмена запишется промежуточная конфигурация и зарегистрированные изменения данных.
  6. В периферийном узле примем этот пакет обмена, обновим конфигурацию базы данных в конфигураторе, запустим режим «1С:Предприятие» и также дождемся завершения всех обработчиков БСП.
  7. Повторим эти шаги для каждого промежуточного релиза.

Замечание: Если периферийных компьютеров много (например, более 5), данный метод становится крайне трудоемким. В таких случаях переходят к альтернативным сценариям.

Метод 2. Временное отключение («отвязка») периферийного узла от РИБ

Этот способ позволяет обновить подчиненную базу локально на торговой точке или удаленном офисе без передачи промежуточных файлов конфигураций по сети, что значительно экономит время и трафик.

Проанализируем шаги реализации этого метода:

  1. В периферийной базе необходимо снять признак подчинения главному узлу. Для этого запустим внешнюю обработку (например, «Управление параметрами РИБ») или выполним в режиме «1С:Предприятие» в простейшей обработке следующий код:
    
    // Отключаем главный узел, делая базу автономной
    ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
    
  2. После выполнения этого кода база становится обычной локальной информационной базой. Теперь мы можем обновлять ее в конфигураторе последовательно с помощью файлов обновлений (.cfu или полного .cf), обязательно запуская режим «Предприятие» на ключевых точках для выполнения обработчиков БСП.
  3. Параллельно (или предварительно) точно таким же образом последовательно обновляем центральную базу до финального релиза.
  4. После того как релизы конфигураций центральной и периферийной баз сравнялись, восстановим связь РИБ. Для этого в периферийной базе выполним код восстановления:
    
    // Находим узел центральной базы по коду и подключаем обратно
    СсылкаНаЦБ = ПланыОбмена.ПоискПоКоду("ЦБ"); // Замените "ЦБ" на реальный код вашей центральной базы
    Если ЗначениеЗаполнено(СсылкаНаЦБ) Тогда
        ПланыОбмена.УстановитьГлавныйУзел(СсылкаНаЦБ);
        Сообщить("Связь с главным узлом успешно восстановлена.");
    КонецЕсли;
    
  5. Запустим стандартную синхронизацию для восстановления регистрации изменений.

Метод 3. Пересоздание начального образа (Радикальный, но самый чистый способ)

Если базы на периферийных компьютерах уже обновились «прыжком» через обмен и в них обнаружились скрытые ошибки обновления данных, самым быстрым и безопасным решением будет полная замена периферийных баз новыми образами.

Многие дилетанты боятся этого метода, опасаясь потерять настройки торгового оборудования (кассы, сканеры, эквайринг) или учетные записи локальных пользователей. Посмотрим, как сделать это правильно:

  1. В центральной базе завершим все процедуры обновления до самого актуального релиза.
  2. Перед удалением старой базы на периферийном компьютере сохраним все локальные файлы настроек оборудования. Обычно они хранятся в каталоге пользователя AppData или прописываются в реестре Windows. Также полезно сделать скриншоты или выписать параметры COM-портов, сетевых адресов весов и кассовых аппаратов.
  3. Сделаем резервную копию старой периферийной базы (на всякий случай).
  4. В центральной базе перейдем в список узлов планов обмена, выберем нужный узел и нажмем кнопку Создать начальный образ. Сохраним получившийся файл базы данных.
  5. Перенесем созданный файл на периферийный компьютер, развернем его вместо старой базы.
  6. Подключим сохраненное торговое оборудование, используя ранее записанные параметры. База будет на 100% чистой, актуальной и гарантированно лишенной каких-либо системных ошибок обновления.

---

Резюме и рекомендации

Если вы столкнулись с необходимостью обновить РИБ через несколько релизов, придерживайтесь следующих правил:

← На главную