При работе с платформой 1С:Предприятие разработчики и администраторы часто сталкиваются с ситуацией, когда основная конфигурация, редактируемая в режиме Конфигуратора, отличается от конфигурации, с которой реально работают пользователи в базе данных. Это может произойти, если изменения были внесены и сохранены в Конфигураторе, но не были применены к конфигурации базы данных. В результате мы видим характерный восклицательный знак в заголовке окна конфигурации и получаем сообщение о несоответствии при запуске 1С:Предприятия. Эта тема посвящена подробному разбору таких ситуаций и методам их разрешения.
Для начала, давайте разберемся, что представляют собой эти две конфигурации. В 1С:Предприятии существуют два ключевых понятия:
Расхождение между этими двумя конфигурациями возникает в момент, когда мы вносим изменения в Основную конфигурацию и сохраняем их (например, нажатием кнопки "Сохранить" или сочетанием клавиш Ctrl+S), но при этом не выполняем процедуру "Обновить конфигурацию базы данных" (обычно через меню "Конфигурация" -> "Обновить конфигурацию базы данных" или нажатием F7). В такой ситуации 1С:Предприятие сигнализирует нам о несоответствии:
В большинстве случаев пользователи продолжают работать со старой конфигурацией, и это не вызывает проблем до тех пор, пока изменения в основной конфигурации не затрагивают критически важные аспекты или не влияют на бизнес-логику, ожидаемую от новой версии. Однако такой статус сигнализирует о незавершенности процесса обновления и может привести к путанице или проблемам в будущем, если не отслеживать изменения.
Перед тем как принимать решение об откате или обновлении, нам необходимо понять, какие именно изменения были внесены в основную конфигурацию и чем она отличается от конфигурации базы данных. Платформа 1С:Предприятие предоставляет мощные инструменты для сравнения конфигураций и анализа зависимостей, которые помогут нам в этом.
Мы можем использовать следующий пункт меню для детального анализа различий:
Этот инструмент позволяет нам увидеть все отличия между текущей редактируемой основной конфигурацией и версией, которая хранится в информационной базе. Перед нами откроется окно сравнения и объединения, где мы сможем пошагово проанализировать изменения.
Также мы можем воспользоваться более общим инструментом сравнения, который дает больше гибкости в выборе источников для сравнения:
В этом окне нам предложат выбрать две конфигурации для сравнения. Для нашей задачи мы выберем:
Этот подход также приведет нас к окну сравнения, где мы увидим все отличия.
После выбора конфигураций для сравнения откроется диалоговое окно, в котором мы увидим древовидную структуру всех объектов метаданных. В этом окне мы можем:
Пример анализа: Предположим, мы видим, что в конфигурации был изменен справочник "Номенклатура". Мы разворачиваем его в дереве сравнения, видим изменения в реквизитах (например, добавлен новый реквизит "КодТНВЭД"). Далее мы можем посмотреть, был ли изменен модуль объекта или форма элемента, чтобы понять, как эти изменения повлияют на логику работы. Если был изменен программный код, мы можем сравнить две версии модуля, чтобы точно выяснить, что добавлено или удалено.
Если после анализа мы приходим к выводу, что внесенные в основную конфигурацию изменения не нужны, были ошибочными или просто хотим отменить их, чтобы убрать восклицательный знак и привести конфигурацию в Конфигураторе в соответствие с конфигурацией базы данных, мы можем использовать специальную команду. Эта операция откатывает только основную конфигурацию, возвращая ее к тому состоянию, которое было зафиксировано в конфигурации базы данных при последнем успешном обновлении. Данные в информационной базе при этом не затрагиваются!
Для выполнения этой операции следуем простым шагам:
После выполнения этой команды система проанализирует изменения в основной конфигурации и заменит все измененные, добавленные или удаленные объекты метаданных на их версии из конфигурации базы данных. Иными словами, все несохраненные в базу данных изменения в основной конфигурации будут безвозвратно утеряны. Поэтому крайне важно убедиться, что мы действительно хотим отменить эти изменения.
Важные моменты:
Проанализируем ситуацию: Представим, что вы добавили новый отчет, но решили, что он был избыточен или реализован некорректно. Вы сохранили его в основной конфигурации, но не обновили базу данных. Если вы выполните "Вернуться к конфигурации БД", этот новый отчет будет удален из основной конфигурации, и она вернется к своему прежнему состоянию, как будто этого отчета никогда и не существовало. Все остальные объекты, которые не были изменены или которые в базе данных уже имели актуальную версию, останутся без изменений.
Помимо основной конфигурации, в 1С:Предприятии активно используются расширения конфигурации. Они позволяют дорабатывать функциональность типовых решений без изменения самой основной конфигурации, что значительно упрощает поддержку и обновление. Однако механизм отката изменений в расширениях имеет свои особенности.
Если мы внесли изменения в расширение конфигурации, нажали "Сохранить" (дискетка), но не нажали "Обновить конфигурацию базы данных" (синяя банка), то аналогично основной конфигурации, в расширении будут сохранены изменения, не примененные к базе данных. Восклицательный знак появится и для расширения.
Для отката таких изменений в расширении пункт "Вернуться к конфигурации БД" находится не в главном меню Конфигуратора, как для основной конфигурации, а в контексте самого расширения. Выполним следующие шаги:
Система предупредит нас, что все несохраненные изменения, внесенные в расширение, будут потеряны. После подтверждения расширение вернется к своему состоянию, которое соответствует конфигурации базы данных. Этот подход гарантирует, что мы можем изолированно управлять версиями как основной конфигурации, так и каждого отдельного расширения.
Один из самых критически важных аспектов при работе с конфигурацией 1С — это понимание того, как наши действия влияют на данные, хранящиеся в информационной базе. Разберем этот вопрос подробнее.
Когда мы используем команду "Вернуться к конфигурации БД" для основной конфигурации или расширения, мы отменяем изменения только в метаданных редактируемой конфигурации. Метаданные — это описание структуры базы данных (справочники, документы, регистры, их реквизиты). Сама информационная база (где хранятся конкретные записи справочников, движения документов и т.д.) при этом не изменяется.
Пользователи, как мы помним, до момента обновления работали с Конфигурацией базы данных. Следовательно, все их данные соответствуют этой версии метаданных. Откат основной конфигурации к версии БД лишь приводит "план" (основную конфигурацию) в соответствие с "фактом" (конфигурацией базы данных). Таким образом, никаких данных при этой операции потеряно не будет, поскольку структура базы данных не меняется.
Ситуация кардинально меняется, если мы решили не откатывать основную конфигурацию, а, наоборот, обновить конфигурацию базы данных (т.е. применить все изменения из основной конфигурации к реальной базе данных). В этом случае, если в основной конфигурации были удалены объекты метаданных (например, справочник, документ, регистр) или реквизиты этих объектов, которые содержали данные в базе данных, то при обновлении эти данные будут потеряны безвозвратно.
Пример: Если мы удалили реквизит "ДополнительноеПоле" из справочника "Номенклатура" в основной конфигурации, а в базе данных в этом реквизите хранились важные сведения для тысяч позиций номенклатуры, то после обновления конфигурации базы данных все эти сведения будут удалены из соответствующих таблиц в БД. Система 1С, как правило, предупреждает о таких критических изменениях перед обновлением, выводя список удаляемых объектов и реквизитов. Критически важно внимательно читать эти предупреждения!
Чтобы избежать нежелательной потери данных, мы должны:
Внутренние идентификаторы (УИД) объектов метаданных играют важную роль в 1С:Предприятии. Они связывают описание объекта в конфигурации с соответствующими данными в таблицах базы данных. Вопрос о том, меняются ли ИД при сравнении и объединении, является частым.
.cf или .dt файлы): ИД объектов, как правило, сохраняются, если мы работаем с одной и той же конфигурацией.Таким образом, беспокоиться о смене ИД при откате основной конфигурации к версии БД не стоит. Однако всегда будьте осторожны при "ручном" копировании объектов, так как это всегда порождает новые ИД и может привести к сложностям при дальнейшем сопоставлении или объединении данных.
Независимо от того, какую операцию мы планируем выполнять с конфигурацией (сравнение, откат, обновление), создание резервных копий информационной базы является обязательной и критически важной процедурой. Резервная копия позволяет нам:
Мы рекомендуем создавать резервные копии перед каждым значимым изменением конфигурации или перед обновлением конфигурации базы данных.
Для обеспечения стабильности, безопасности и эффективности разработки в 1С:Предприятии, особенно в условиях командной работы или при частых изменениях, мы настоятельно рекомендуем придерживаться следующих практик:
Хранилище конфигурации (или репозиторий) — это централизованное место для хранения версий конфигурации. Мы должны рассмотреть его как стандартный инструмент для разработки. Оно предоставляет множество преимуществ:
Если хранилище уже подключено, то вместо "Вернуться к конфигурации БД" мы можем использовать механизм получения версии конфигурации из хранилища. Это гораздо более мощный и гибкий способ управления изменениями.
Даже если вы не используете хранилище, мы рекомендуем регулярно сохранять текущую основную конфигурацию в отдельный файл (.cf-файл) перед внесением крупных изменений или перед обновлением базы данных. Это создаст дополнительную точку восстановления, к которой вы сможете вернуться в случае необходимости, импортировав конфигурацию из файла.
Как уже было сказано, перед тем как нажимать "Обновить конфигурацию базы данных" (F7), мы должны очень внимательно проанализировать список изменений, который предлагает система. Особое внимание уделяйте сообщениям об удалении объектов или реквизитов, так как это прямая угроза для данных. Используйте инструмент сравнения, чтобы понять природу каждого изменения.
Платформа 1С позволяет выполнять динамическое обновление конфигурации, то есть применять изменения без завершения работы пользователей. Однако это возможно только в тех случаях, когда изменения не затрагивают структуру базы данных (например, изменен только программный код в модуле). Если изменения включают добавление/удаление объектов или реквизитов, динамическое обновление будет невозможно, и потребуется перезапуск сеансов пользователей.
Мы должны помнить, что даже при динамическом обновлении пользователи увидят изменения только после перезапуска своих клиентских приложений 1С:Предприятия.
Для типовых конфигураций, которые находятся на поддержке, разработчики должны также регулярно сравнивать свою модифицированную основную конфигурацию с конфигурацией поставщика. Это позволяет понять, какие изменения были внесены фирмой "1С" и как их правильно объединить со своими доработками. Такой подход помогает поддерживать конфигурацию в актуальном состоянии и упрощает процесс будущих обновлений.
Применяя эти рекомендации, мы сможем значительно повысить надежность и безопасность наших процессов разработки и эксплуатации систем на базе 1С:Предприятие.