Добрый день! Часто у разработчиков, особенно при работе с доработанными или поврежденными базами, возникает вопрос о внутреннем устройстве хранения конфигураций в 1С. Официально их три, но поведение системы при некоторых операциях, например, при откате к конфигурации базы данных, наводит на мысль о существовании некой "четвертой" конфигурации. Давайте вместе разберемся, так ли это, и проанализируем, как на самом деле связаны разные виды конфигураций.
Основная загадка, которую мы сегодня решим, звучит так: почему при выполнении команды "Вернуться к конфигурации БД" изменяется не только основная конфигурация, но и конфигурация поставщика?
Для начала давайте вспомним, с какими тремя основными видами конфигураций мы работаем. Понимание их ролей — ключ к разгадке.
Теперь вернемся к нашему главному вопросу. Разработчик провел эксперимент: в базе с измененной конфигурацией и поврежденной конфигурацией поставщика он загрузил типовой cf-файл, отказавшись от немедленного обновления базы данных. В результате он получил:
Затем, после очистки кэша, он выполнил команду Конфигурация -> Конфигурация базы данных -> Вернуться к конфигурации БД. Он ожидал, что основная конфигурация вернется к состоянию КБД, а конфигурация поставщика останется новой, восстановленной. Но на практике конфигурация поставщика тоже "откатилась" к своему исходному, поврежденному состоянию. Это и породило гипотезу о наличии четвертой конфигурации, которая хранит "старую" КП.
На самом деле, никакой четвертой конфигурации нет. Секрет кроется в неразрывной связи между конфигурацией базы данных и конфигурацией поставщика.
Когда вы обновляете конфигурацию базы данных (нажимаете F7), платформа сохраняет не просто структуру метаданных для пользователей. Она создает целостный "слепок" состояния системы на этот момент. Этот слепок включает в себя:
Таким образом, команда Вернуться к конфигурации БД — это не просто "скопировать КБД в основную конфигурацию". Это команда "откатить рабочую область конфигуратора к последнему сохраненному целостному состоянию". А это состояние включает в себя и КБД, и ту версию КП, которая была актуальна на момент сохранения этого состояния.
Такое поведение платформы — не ошибка, а продуманный механизм для обеспечения консистентности (целостности) данных и метаданных. Если бы КБД и КП откатывались независимо, это привело бы к хаосу и сделало бы невозможным корректное обновление. Рассмотрим пару ситуаций.
Представим, что у вас есть Бухгалтерия версии 3.0.100. Вы запускаете обновление до версии 3.0.101.
cfu.Вернуться к конфигурации БД.Что произошло бы, если бы КП не откатилась? Ваша основная конфигурация вернулась бы к версии 3.0.100 (состояние КБД), а конфигурация поставщика осталась бы 3.0.101. Система оказалась бы в рассинхронизированном состоянии. Как ей понять, что нужно обновиться, если основная конфигурация и так "старая"? Как корректно сравнить ее с новой КП? Это нарушило бы всю логику механизма поддержки.
Правильное поведение: Платформа откатывает и основную конфигурацию, и конфигурацию поставщика к состоянию на момент последнего обновления КБД, то есть к версии 3.0.100. Система возвращается в стабильное, целостное состояние, из которого можно снова корректно запустить процесс обновления.
Представим, у вас база с типовой "Управление торговлей" (УТ). Вы решили поэкспериментировать и загружаете в нее cf-файл от типовой "Бухгалтерии предприятия" (БП), но на вопрос "Обновить конфигурацию базы данных?" отвечаете "Нет".
Теперь вы нажимаете Вернуться к конфигурации БД. Что должно произойти по логике? Конечно же, все должно вернуться к УТ. Благодаря связке КБД и КП, платформа корректно восстанавливает в основной конфигурации не только структуру УТ, но и конфигурацию поставщика от УТ. Если бы КП осталась от БП, вы бы получили неработоспособный "гибрид", который невозможно ни обслуживать, ни обновлять.
Стоит также упомянуть, что в одной информационной базе может существовать несколько конфигураций поставщика. Это характерно для сложных систем, где на типовое решение (например, 1С:ERP) установлено одно или несколько отраслевых решений от других вендоров. Каждое такое решение ставится на собственную поддержку и имеет свою конфигурацию поставщика.
Платформа 1С умеет управлять этим "деревом" поставщиков, позволяя корректно обновлять каждую часть системы от своего вендора. Однако основной принцип остается тем же: при обновлении КБД сохраняется слепок состояния всех конфигураций поставщика, обеспечивая возможность целостного отката.
В заключение: формально мы работаем с тремя конфигурациями. Но для глубокого понимания процессов разработки, обновления и отладки важно помнить, что конфигурация базы данных и конфигурация(и) поставщика — это единое целое, которое сохраняется и восстанавливается совместно. Никакой магии и "четвертой конфигурации" здесь нет — только логика и обеспечение целостности данных.