Ситуации, когда обновление конфигурации 1С проходит не по плану, встречаются в практике администраторов и разработчиков нередко. Особенно это актуально для сложных систем, таких как Бухгалтерия КОРП, где присутствуют доработки, расширения и включена поддержка с возможностью изменения. Рассмотрим ситуацию, когда конфигурация поставщика была обновлена, но изменения в базу данных еще не были применены, и возникла необходимость вернуться на шаг назад для исправления ошибки.
Для того чтобы эффективно управлять процессом отката или исправления «кривого» обновления, нам необходимо четко понимать, что в системе 1С:Предприятие 8.3 одновременно сосуществуют три «образа» конфигурации. Проанализируем их:
F7 (Обновить конфигурацию базы данных), пользователи не видят изменений, внесенных в основную конфигурацию.Разберем ситуацию автора: конфигурация поставщика была обновлена до релиза 110, но конфигурация базы данных осталась на 109-м. Это означает, что структура таблиц в SQL еще соответствует старому релизу, что дает нам пространство для маневра.
Прежде чем предпринимать активные действия, выясним, в каком именно состоянии находится наша база. Посмотрим на заголовки окон и воспользуемся встроенными инструментами сравнения.
Если в заголовке окна «Конфигурация» висит знак восклицания (!), это верный признак того, что основная конфигурация отличается от конфигурации базы данных. Если знака нет, значит, вы уже либо применили изменения, либо еще не начинали их вносить.
Рассмотрим подробнее способ точной проверки версий. Для этого выполним следующие шаги:
Конфигурация — Поддержка — Настройка поддержки. Здесь мы увидим версию конфигурации поставщика (в примере автора это был бы 110 релиз).Свойства. В поле «Версия» указана версия основной конфигурации.Чтобы окончательно убедиться в различиях, проанализируем ситуацию через инструмент сравнения. Выберем Конфигурация — Сравнить конфигурации. В открывшемся окне мы можем попарно сравнить «Основную конфигурацию» с «Конфигурацией базы данных». Если список различий пуст, значит, все правки уже «в базе».
Если мы внесли изменения в основную конфигурацию (например, накатили новый релиз), но еще не успели обновить базу данных (не нажимали «синий бочонок» или F7), самым простым и безопасным способом будет откат.
Для этого выполним команду: Конфигурация — Конфигурация БД — Вернуться к конфигурации БД. Система полностью сотрет все изменения в основной конфигурации и заменит их тем, что сейчас работает у пользователей. Это идеальный вариант, если вы поняли, что обновление «не заходит», еще до того, как выгнали пользователей.
Если команда возврата не активна или нам нужно восстановить конкретное состояние, которое было сохранено ранее, воспользуемся загрузкой файла конфигурации. Рассмотрим этот процесс по шагам:
Конфигурация — Конфигурация БД — Сохранить конфигурацию БД в файл....Конфигурация — Загрузить конфигурацию из файла.... Внимание! Этот метод полностью заменяет дерево объектов и настройки поддержки.Проанализируем риски: при загрузке CF мы можем потерять связь с конфигурацией поставщика, если файл был снят с поддержки. Поэтому всегда проверяйте статус объектов в окне «Настройка поддержки» после таких манипуляций.
Если конфигурация поставщика уже обновлена до 110, а конфигурация БД все еще 109, и при этом нужно срочно исправить ошибку, не завершая общее обновление, — лучшим инструментом будет расширение конфигурации.
Вместо того чтобы мучительно откатывать основную конфигурацию, мы создаем новое расширение и переносим туда ошибочный метод или объект. Исправляем код в расширении и подключаем его. Пользователи продолжат работать на 109-м релизе с исправленной ошибкой, а вы сможете спокойно дотестировать 110-й релиз на копии базы.
Чтобы не попадать в ситуацию «кривого» обновления на живой базе, разберем правильный цикл разработки, который упоминали участники обсуждения:
ОбновлениеИнформационнойБазыБП.Никогда не используйте динамическое обновление (обновление «на лету» без выгона пользователей) при переходе между релизами. В сложных конфигурациях это часто приводит к рассинхронизации основной конфигурации и конфигурации БД. Если система предлагает «Обновить динамически», всегда выбирайте «Повторить позже» и делайте монопольное обновление. Если ошибка уже произошла, единственным надежным способом будет очистка кэша на сервере и клиентских машинах, а иногда и повторная загрузка CF.
Выясним причину, почему автор темы не мог нажать кнопку возврата к конфигурации БД: скорее всего, основная конфигурация и конфигурация базы данных уже были идентичны. В этом случае правки следует вносить обычным способом в текущую конфигурацию, а затем штатно обновлять базу данных.