При разработке и сопровождении систем на платформе 1С программисты часто сталкиваются с необходимостью создания тестовых сред. Типичный сценарий: создание копии основной (продуктивной) базы для отладки нового функционала. Однако, если основная база подключена к хранилищу конфигурации, при попытке зайти в конфигуратор копии возникают специфические вопросы и ошибки. Разберем детально, как правильно организовать работу с хранилищем в таких условиях, чтобы не повредить данные и сохранить стабильность разработки.
Когда мы подключаем информационную базу к хранилищу, платформа 1С регистрирует эту связь. Важно понимать, что связь двусторонняя. На стороне информационной базы (ИБ) сохраняется путь к хранилищу и имя пользователя. Но и на стороне самого хранилища (в его служебных файлах) фиксируется информация о конкретной базе, которая работает под данным пользователем.
Проанализируем ситуацию: вы сделали копию базы А и назвали её Б. При попытке войти в конфигуратор базы Б и обратиться к хранилищу под тем же User1, система выдаст предупреждение: «Возможно, поменялось расположение базы. Продолжить?». Это происходит потому, что 1С обнаруживает несоответствие пути к текущей базе (база Б) тому пути, который был зафиксирован в хранилище для User1 (путь к базе А).
Если мы нажмем «Да», база Б перезапишет привязку в хранилище на себя. Это приведет к тому, что при следующем запуске оригинала (базы А), уже она выдаст аналогичное предупреждение. Постоянные «перехваты» привязки одним пользователем из разных баз — это плохая практика.
Рассмотрим подробнее, почему не рекомендуется использовать одного и того же пользователя хранилища для разных экземпляров баз. Основная причина кроется в локальном кэше хранилища. На компьютере разработчика в профиле пользователя Windows существует каталог snccntx, где платформа хранит кэшированные состояния объектов хранилища для ускорения работы.
Если работать параллельно в двух базах под одним логином, возникают следующие риски:
А вы захватили объект, а в базе Б пытаетесь его обновить, локальный кэш может выдать непредсказуемый результат, вплоть до невозможности совершить помещение (commit) изменений.Выясним причину ошибки, описанной в Сообщении 6: «Пользователь существующей связи отличается от текущего. Ошибка подключения к хранилищу». Эта ошибка возникает, если вы пытаетесь просто ввести имя User2 в базе, которая все еще «помнит» свою связь с User1. Платформа блокирует такую попытку в целях безопасности.
Разберем по шагам правильный алгоритм переподключения копии базы к другому пользователю хранилища (например, специально созданному Test_User):
User1 будет полностью разорвана.Test_User.Важный совет: Для работы с тестовыми контурами всегда создавайте в хранилище отдельных пользователей. Это позволит вам прозрачно видеть в истории хранилища, какие изменения или обновления были инициированы именно из тестовой среды.
Если вы часто обновляете тестовые базы из продуктовых, ручное переподключение может быть утомительным. Рассмотрим возможность автоматизации этого процесса с помощью параметров запуска конфигуратора 1С. Мы можем использовать скрипты для автоматического обновления связи с хранилищем.
Для этого применяется следующий набор параметров:
"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /F "ПутьКВашейКопииБазы" /ConfigurationRepositoryF "ПутьКХранилищу" /ConfigurationRepositoryN "ИмяПользователя" /ConfigurationRepositoryP "Пароль" /ConfigurationRepositoryUpdateCfg
Проанализируем параметры этого вызова:
/ConfigurationRepositoryF — указывает путь к каталогу хранилища./ConfigurationRepositoryN — имя пользователя в хранилище./ConfigurationRepositoryP — пароль пользователя./ConfigurationRepositoryUpdateCfg — команда, которая заставляет 1С принудительно обновить локальную конфигурацию из хранилища и актуализировать связь.Иногда даже после корректного переподключения возникают странные ошибки при попытке захвата объектов. В этом случае нам поможет полная очистка локального кэша хранилища.
Рассмотрим, где искать эти файлы. Кэш располагается в папке профиля пользователя Windows по адресу:
%AppData%\Roaming\1C\1Cv8\...\snccntx
Здесь ... — это уникальный идентификатор вашей информационной базы. Если вы удалите содержимое папки snccntx, при следующем подключении к хранилищу 1С заново пересчитает контрольные суммы всех объектов. Это гарантированно решает проблемы, связанные с некорректным отображением статусов «Захвачено / Не захвачено».
Подведем итог. Работать из копии базы с хранилищем можно и нужно, но соблюдая правила гигиены разработки. Никогда не используйте одного пользователя хранилища в двух разных базах одновременно. Всегда используйте механизм «Отключиться — Подключиться» для смены привязки или автоматизируйте этот процесс через параметры запуска /ConfigurationRepositoryUpdateCfg. Это сэкономит ваше время и убережет конфигурацию от трудноотлаживаемых ошибок кэширования.