Рассмотрим ситуацию, с которой часто сталкиваются крупные предприятия при переходе на новые масштабные редакции конфигураций (например, с 1С:ERP 2.4 на 2.5 или 1С:Управление торговлей 11.4 на 11.5). Процесс реструктуризации таблиц и выполнения отложенных обработчиков обновления может занимать десятки часов. Остановка работы сотен пользователей на такой длительный срок критична для бизнеса. Чтобы решить эту проблему, фирма «1С» предлагает типовой функционал: обновление информационной базы без остановки работы пользователей через копию базы. Разберем по шагам, как устроен этот механизм и какие подводные камни нас ожидают.
Данная технология жестко ограничена архитектурой хранения данных — она ориентирована исключительно на клиент-серверные информационные базы. Для файловых баз данных этот функционал не поддерживается. Интерфейс управления процессом обычно выведен в раздел Администрирование — Обслуживание — Результаты обновления и дополнительная обработка данных.
Посмотрим на классический алгоритм выполнения такого обновления:
Главный вопрос, который возникает у разработчиков при использовании этого механизма: нужно ли писать правила конвертации самостоятельно? Проанализируем ответы практиков. Разработчики конфигурации предоставляют базовый шаблон правил обмена, однако в большинстве случаев правила конвертации придется дописывать и адаптировать вручную.
Почему это необходимо? Рассмотрим подробнее:
Как отмечают специалисты, за полноценность принимаемых данных всегда отвечает отправляющая сторона. Это означает, что в правила конвертации иногда приходится вшивать логику алгоритмов обновления, чтобы новые документы, созданные пользователями во время переходного периода, корректно легли в новые регистры (например, если был добавлен новый учетный регистр, которого нет в базе-источнике).
Посмотрим на альтернативные варианты, которые обсуждаются в профессиональном сообществе:
1. Динамическое обновление. Почему бы не использовать его? Как мы знаем, при динамическом обновлении функционал может стать частично недоступным, формы могут падать, а запросы выдавать ошибки прямо во время работы пользователей. Обновление через копию исключает эти риски, так как пользователи работают в стабильной старой версии до момента полного переключения.
2. Использование РИБ (Распределенной информационной базы). Некоторые специалисты предлагают вместо сложного механизма «копии» использовать возможности РИБ. Идея заключается в том, чтобы сделать центральный узел, который обновляется в монопольном режиме без пользователей, а затем изменения мигрируют в периферийные узлы. Однако этот подход не решает проблему длительной реструктуризации и запуска отложенных обработчиков в самих узлах, где работают пользователи.
3. Обмен через шину данных. Вместо прямого обмена по правилам конвертации (который может быть излишне ресурсоемким), некоторые архитекторы предпочитают настраивать нормальный обмен на очередях сообщений через корпоративную шину данных. Это позволяет более гибко контролировать маршрутизацию и трансформацию объектов.
Механизм обновления информационной базы без остановки пользователей через копию — это мощный, но технически сложный инструмент. Он действительно избавляет бизнес от многодневных простоев. Однако мы должны быть готовы к серьезной подготовительной работе: разворачиванию тестовых стендов, детальному анализу измененных метаданных и, самое главное, к кропотливой разработке и отладке правил конвертации, способных корректно переносить дельту данных из старой структуры в новую с учетом отработанных процедур обновления.