В практике администрирования и разработки на платформе 1С:Предприятие часто встречается крайне неприятная ситуация: при попытке обновить измененную конфигурацию система сообщает, что «нет доступных обновлений», хотя в каталоге шаблонов установлены все необходимые релизы. При детальном анализе выясняется критическое рассогласование метаданных: в свойствах корневого узла основной конфигурации указан один релиз (например, 1.2.43.1), в окне настройки поддержки — другой (1.2.41.1), а в конфигурации базы данных (БД) — третий.
В этой статье мы подробно проанализируем причины возникновения этой проблемы, разберем архитектуру хранения конфигураций в 1С и рассмотрим три практических метода восстановления корректного состояния базы данных без потери доработок.
Давайте разберем внутреннее устройство информационной базы 1С. Внутри одной базы данных параллельно сосуществуют три конфигурации:
F7 (или синей бочки).Проблема «раздвоения» версий возникает тогда, когда предыдущие специалисты вместо штатного механизма обновления через меню Конфигурация — Поддержка — Обновить конфигурацию использовали обычное сравнение и объединение через меню Конфигурация — Сравнить, объединить с конфигурацией из файла, выбрав там файл .cf новой версии.
В результате такого действия:
Далее подробно рассмотрим по шагам, как исправить эту ситуацию на рабочей базе данных.
Этот метод подходит в случаях, когда разрыв между версией основной конфигурации и версией поставщика невелик (1–3 релиза). Мы заставим платформу перезаписать конфигурацию поставщика без изменения наших доработанных объектов.
Рассмотрим алгоритм действий по шагам:
.dt). Любые манипуляции с метаданными выполняются только на копии!.cf, а не файлы обновлений .cfu) промежуточных релизов. В нашем примере понадобятся чистые типовые файлы версий 1.2.42.2 и 1.2.43.1..cf версии 1.2.42.2..cf версии 1.2.43.1.После выполнения этих шагов конфигурация поставщика и основная конфигурация синхронизируются на релизе 1.2.43.1, и следующее штатное обновление до версии 1.2.44.2 пройдет в штатном режиме.
Если разрыв между фактической версией и версией поддержки составляет десятки релизов, последовательный накат по первому способу займет слишком много времени. Проанализируем более быстрый и чистый профессиональный способ «переподключения» конфигурации поставщика в один клик.
Разберем процесс поэтапно:
my_modified.cf. Это сохранит все уникальные доработки, сделанные франчами..cf той версии, которая сейчас должна быть финальной (в нашем примере — 1.2.43.1).В результате этой операции платформа свяжет вашу измененную конфигурацию с новой чистой конфигурацией поставщика версии 1.2.43.1. При этом ни один доработанный объект или модуль не пострадает, так как физического объединения не происходило. Теперь база готова к штатному обновлению через файлы .cfu.
Если в базе данных наблюдаются серьезные повреждения структуры метаданных или уникальных идентификаторов (UUID) объектов, безопаснее всего собрать конфигурацию заново в пустой базе-доноре.
Выясним алгоритм этой процедуры:
my_modified.cf. Перенесите только доработки, сохраняя структуру поддержки здоровой.healthy_config.cf.healthy_config.cf через меню Конфигурация — Загрузить конфигурацию из файла.... Все объекты заменятся корректно, встанут на правильную поддержку, а ссылочная целостность данных в СУБД полностью сохранится.При выполнении восстановительных работ необходимо учитывать несколько неочевидных факторов, которые могут помешать успешному завершению процесса.
Синхронизация конфигурации базы данных (БД)
Если при открытии конфигурации БД (меню Конфигурация — Конфигурация БД — Открыть конфигурацию БД) вы видите старую версию (1.2.41.1), это означает, что предыдущее изменение основной конфигурации не было окончательно применено к физическим таблицам СУБД. Любые операции по восстановлению поддержки можно начинать только тогда, когда основная конфигурация и конфигурация БД полностью согласованы. Нажмите F7 и убедитесь, что обновление базы данных проходит без критических ошибок SQL-структуры.
Очистка кэша платформы 1С
Платформа 1С агрессивно кэширует конфигурацию поставщика на локальном компьютере разработчика. Из-за этого даже после успешного восстановления поддержки система может продолжать утверждать, что обновлений нет. Чтобы решить эту проблему, обязательно очистите локальный кэш конфигуратора.
Для быстрой очистки кэша на компьютере администратора можно воспользоваться следующим скриптом автоматического удаления временных файлов:
rmdir /s /q "%LocalAppData%\1C\1Cv8"
rmdir /s /q "%AppData%\1C\1Cv8"
Также самым простым и надежным способом является удаление информационной базы из списка запуска 1С и добавление ее заново под тем же путем — при этом создается новый чистый каталог кэша с уникальным GUID.
Использование файлов .cf вместо .cfu
Помните, что для всех манипуляций по восстановлению связей поддержки («пустое объединение») необходимо использовать исключительно полные конфигурационные файлы .cf. Файлы обновлений .cfu содержат только дельту изменений между конкретными релизами и не могут быть применены для восстановления поврежденной конфигурации поставщика.