Как откатить изменения в конфигурации 1С и расширениях, а также сравнить версии?

Программист 1С v8.3 (Управляемые формы)
← На главную

При работе с платформой 1С:Предприятие разработчики и администраторы часто сталкиваются с ситуацией, когда основная конфигурация, редактируемая в режиме Конфигуратора, отличается от конфигурации, с которой реально работают пользователи в базе данных. Это может произойти, если изменения были внесены и сохранены в Конфигураторе, но не были применены к конфигурации базы данных. В результате мы видим характерный восклицательный знак в заголовке окна конфигурации и получаем сообщение о несоответствии при запуске 1С:Предприятия. Эта тема посвящена подробному разбору таких ситуаций и методам их разрешения.

Понимание различий между основной конфигурацией и конфигурацией базы данных

Для начала, давайте разберемся, что представляют собой эти две конфигурации. В 1С:Предприятии существуют два ключевых понятия:

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

Расхождение между этими двумя конфигурациями возникает в момент, когда мы вносим изменения в Основную конфигурацию и сохраняем их (например, нажатием кнопки "Сохранить" или сочетанием клавиш Ctrl+S), но при этом не выполняем процедуру "Обновить конфигурацию базы данных" (обычно через меню "Конфигурация" -> "Обновить конфигурацию базы данных" или нажатием F7). В такой ситуации 1С:Предприятие сигнализирует нам о несоответствии:

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

Как выявить и сравнить изменения в конфигурации 1С

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

Сравнение основной конфигурации с конфигурацией базы данных

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

  1. Перейдите в меню "Конфигурация".
  2. Выберите подменю "Конфигурация базы данных".
  3. Нажмите на пункт "Сравнить/объединить с конфигурацией базы данных".

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

Альтернативный способ сравнения конфигураций

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

  1. Перейдите в меню "Конфигурация".
  2. Выберите пункт "Сравнение конфигураций...".

В этом окне нам предложат выбрать две конфигурации для сравнения. Для нашей задачи мы выберем:

Этот подход также приведет нас к окну сравнения, где мы увидим все отличия.

Работа с окном сравнения и объединения

После выбора конфигураций для сравнения откроется диалоговое окно, в котором мы увидим древовидную структуру всех объектов метаданных. В этом окне мы можем:

Пример анализа: Предположим, мы видим, что в конфигурации был изменен справочник "Номенклатура". Мы разворачиваем его в дереве сравнения, видим изменения в реквизитах (например, добавлен новый реквизит "КодТНВЭД"). Далее мы можем посмотреть, был ли изменен модуль объекта или форма элемента, чтобы понять, как эти изменения повлияют на логику работы. Если был изменен программный код, мы можем сравнить две версии модуля, чтобы точно выяснить, что добавлено или удалено.

Как отменить изменения в основной конфигурации без обновления базы данных

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

Команда "Вернуться к конфигурации БД"

Для выполнения этой операции следуем простым шагам:

  1. В Конфигураторе перейдите в меню "Конфигурация".
  2. Выберите подменю "Конфигурация базы данных".
  3. Нажмите на пункт "Вернуться к конфигурации БД".

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

Важные моменты:

Проанализируем ситуацию: Представим, что вы добавили новый отчет, но решили, что он был избыточен или реализован некорректно. Вы сохранили его в основной конфигурации, но не обновили базу данных. Если вы выполните "Вернуться к конфигурации БД", этот новый отчет будет удален из основной конфигурации, и она вернется к своему прежнему состоянию, как будто этого отчета никогда и не существовало. Все остальные объекты, которые не были изменены или которые в базе данных уже имели актуальную версию, останутся без изменений.

Особенности отката изменений в расширениях конфигурации

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

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

Для отката таких изменений в расширении пункт "Вернуться к конфигурации БД" находится не в главном меню Конфигуратора, как для основной конфигурации, а в контексте самого расширения. Выполним следующие шаги:

  1. Откройте конфигурацию расширения. Для этого в дереве конфигурации найдите ветку "Расширения конфигурации", разверните ее и дважды щелкните по нужному расширению, чтобы открыть его в отдельном окне редактирования.
  2. В окне редактирования расширения найдите кнопку "Действия" (обычно находится в верхней части окна).
  3. В выпадающем меню "Действия" выберите подменю "Конфигурация".
  4. В подменю "Конфигурация" выберите "Конфигурация базы данных".
  5. Наконец, нажмите на пункт "Вернуться к конфигурации БД".

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

Вопросы сохранения данных при работе с конфигурацией

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

Сохранение данных при откате основной конфигурации

Когда мы используем команду "Вернуться к конфигурации БД" для основной конфигурации или расширения, мы отменяем изменения только в метаданных редактируемой конфигурации. Метаданные — это описание структуры базы данных (справочники, документы, регистры, их реквизиты). Сама информационная база (где хранятся конкретные записи справочников, движения документов и т.д.) при этом не изменяется.

Пользователи, как мы помним, до момента обновления работали с Конфигурацией базы данных. Следовательно, все их данные соответствуют этой версии метаданных. Откат основной конфигурации к версии БД лишь приводит "план" (основную конфигурацию) в соответствие с "фактом" (конфигурацией базы данных). Таким образом, никаких данных при этой операции потеряно не будет, поскольку структура базы данных не меняется.

Потенциальная потеря данных при обновлении конфигурации базы данных

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

Пример: Если мы удалили реквизит "ДополнительноеПоле" из справочника "Номенклатура" в основной конфигурации, а в базе данных в этом реквизите хранились важные сведения для тысяч позиций номенклатуры, то после обновления конфигурации базы данных все эти сведения будут удалены из соответствующих таблиц в БД. Система 1С, как правило, предупреждает о таких критических изменениях перед обновлением, выводя список удаляемых объектов и реквизитов. Критически важно внимательно читать эти предупреждения!

Чтобы избежать нежелательной потери данных, мы должны:

  1. Тщательно анализировать изменения: Перед обновлением конфигурации базы данных всегда используйте инструмент сравнения, чтобы точно понять, какие объекты или реквизиты удаляются.
  2. Проверять наличие данных: Если есть подозрение, что в удаляемых объектах или реквизитах могут быть данные, проверяйте их наличие. Это можно сделать, например, на копии базы данных или с помощью отчетов и обработок, которые выведут данные из этих объектов.
  3. Выполнять перенос данных: Если данные нужны, их необходимо предварительно перенести в другие, не удаляемые объекты или реквизиты.

Идентификаторы объектов (ИД) и их стабильность

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

Таким образом, беспокоиться о смене ИД при откате основной конфигурации к версии БД не стоит. Однако всегда будьте осторожны при "ручном" копировании объектов, так как это всегда порождает новые ИД и может привести к сложностям при дальнейшем сопоставлении или объединении данных.

Важность резервных копий

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

Мы рекомендуем создавать резервные копии перед каждым значимым изменением конфигурации или перед обновлением конфигурации базы данных.

Рекомендации по безопасной работе с конфигурациями

Для обеспечения стабильности, безопасности и эффективности разработки в 1С:Предприятии, особенно в условиях командной работы или при частых изменениях, мы настоятельно рекомендуем придерживаться следующих практик:

  1. Используйте хранилище конфигурации:

    Хранилище конфигурации (или репозиторий) — это централизованное место для хранения версий конфигурации. Мы должны рассмотреть его как стандартный инструмент для разработки. Оно предоставляет множество преимуществ:

    • Версионирование: Каждая зафиксированная версия конфигурации (или ее отдельных объектов) сохраняется, что позволяет нам откатиться к любой предыдущей рабочей версии.
    • Совместная разработка: Несколько разработчиков могут работать над одной конфигурацией, избегая конфликтов и обеспечивая синхронизацию изменений.
    • Управление изменениями: Хранилище помогает отслеживать, кто, когда и что изменил.
    • Безопасный откат: В отличие от команды "Вернуться к конфигурации БД", которая откатывает основную конфигурацию к версии из текущей БД, хранилище позволяет нам выбрать любую версию из истории и получить ее.

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

  2. Всегда сохраняйте новую версию в файл:

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

  3. Анализируйте изменения перед обновлением:

    Как уже было сказано, перед тем как нажимать "Обновить конфигурацию базы данных" (F7), мы должны очень внимательно проанализировать список изменений, который предлагает система. Особое внимание уделяйте сообщениям об удалении объектов или реквизитов, так как это прямая угроза для данных. Используйте инструмент сравнения, чтобы понять природу каждого изменения.

  4. Используйте динамическое обновление с осторожностью:

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

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

  5. Работайте с конфигурацией поставщика:

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

Применяя эти рекомендации, мы сможем значительно повысить надежность и безопасность наших процессов разработки и эксплуатации систем на базе 1С:Предприятие.

← На главную