Ситуация, когда после обновления базы «1С:Предприятие» начинают появляться необъяснимые баги, расхождения в данных или ошибки в коде, знакома многим администраторам и программистам. Особенно остро это проявляется в сложных конфигурациях, таких как Управление торговлей 11 (УТ 11). В данной статье мы разберем критическую ошибку — попытку «обновить» систему путем простой замены файла конфигурации (.cf), минуя штатные механизмы, и выясним, как вернуть базу в рабочее состояние без потери данных, введенных пользователями за время работы на «битой» версии.
Проанализируем действия, которые приводят к катастрофическим последствиям. Часто технические специалисты, желая сэкономить время, вместо последовательного наката .cfu-файлов (обновлений) используют функцию «Загрузить конфигурацию из файла» или «Сравнить/объединить с конфигурацией из файла», выбирая при этом .cf-файл финального релиза (например, прыгая с версии 11.5.12 сразу на 11.5.19).
Рассмотрим, почему это не является обновлением в техническом смысле 1С:
В результате мы получаем ситуацию, когда код программы уже новый (он обращается к новым регистрам и полям), а данные в этих полях отсутствуют, так как они не были перенесены из старых структур. Это и порождает те самые «баги», о которых пишут пользователи.
Выясним, как система понимает, что ей нужно что-то обновить. В базе данных существует регистр сведений ВерсииПодсистем. При запуске программа сравнивает номер версии, прописанный в коде конфигурации, с номером, записанным в этом регистре. Если версия в коде выше, запускается механизм обновления БСП.
Однако, если разница между версиями слишком велика и не соответствует цепочке, описанной в файлах поставки, критически важные процедуры переноса данных могут быть проигнорированы. Например, в УТ 11 между версиями 11.5.12 и 11.5.19 происходили масштабные изменения в блоках ценообразования, учета НДС и прослеживаемости товаров. Без запуска обработчиков эти данные в вашей базе станут некорректными.
Если вы уже совершили ошибку и база работает на неправильно «накатанном» релизе, первое, что нужно сделать — восстановить корректную поддержку. Это позволит конфигуратору снова «видеть» штатные файлы обновления.
Рассмотрим пошаговый алгоритм:
.cf (полный дистрибутив) именно того релиза, который у вас сейчас якобы установлен (в нашем примере — 11.5.19.63).Теперь система будет корректно распознавать свою версию и предлагать следующие обновления штатно.
Самое сложное — заставить программу выполнить те самые процедуры обновления данных, которые были пропущены за неделю работы. Рассмотрим несколько вариантов решения этой задачи.
Вариант А: Параметры запуска.
Попробуйте запустить базу в режиме «Предприятие» с ключом командной строки:
/C ЗапуститьОбновлениеИнформационнойБазы
Это заставляет БСП инициировать проверку всех процедур обновления. Иногда этого достаточно, если разрыв в релизах был не критичным.
Вариант Б: Манипуляция с регистром версий (Только для опытных!).
Проанализируем ситуацию: система «думает», что она уже версии 11.5.19. Чтобы обмануть её и заставить выполнить старые скрипты, некоторые специалисты прибегают к изменению номера версии в регистре ВерсииПодсистем.
УправлениеТорговлей).Внимание: Это крайне опасный метод. Он может привести к дублированию данных или ошибкам в коде, если структура таблиц уже физически изменилась слишком сильно. Делайте это только на копии!
Для того чтобы не попадать в подобные ситуации, важно соблюдать последовательность обновлений. В 1С существуют рекомендуемые точки перехода. Посмотрим на пример безопасной цепочки для ветки 11.5:
Если вы пытаетесь перепрыгнуть через эти узловые точки, вы рискуете потерять логику работы регистров накопления и сведения.
Если после восстановления механизмов обновления вы обнаружили, что старые документы не видят цен или остатков, скорее всего, отложенные обработчики не смогли обработать данные, введенные в «неправильный» период. Выясним причину: за эту неделю пользователи могли создать документы, которые записались в структуру 11.5.19, но без учета промежуточных правил трансформации данных.
В этом случае единственным надежным решением остается:
Подведем итог нашему разбору. Главное правило администратора 1С: никогда не используйте «Загрузить конфигурацию из файла» для обновления боевой базы, если вы не уверены на 100%, что релизы идентичны. Для обновления используйте только пункт «Обновить конфигурацию» и файлы .cfu.
Если беда уже случилась:
Результат обновления программы (находится в разделе Обслуживание).Помните, что время, сэкономленное на «быстром обновлении», почти всегда оборачивается многодневными исправлениями учета и поиском потерянных цифр в отчетах.