При создании нового узла распределенной информационной базы (РИБ) в системе «1С:Предприятие 8» разработчики и системные администраторы часто сталкиваются с досадной ошибкой: «Начальный образ может быть выгружен только во вновь созданную или пустую ИБ той же версии, что и основная база». Эта проблема может возникнуть даже в тех случаях, когда целевой каталог абсолютно пуст, а права пользователя в операционной системе не ограничены.
В этой статье мы подробно разберем причины возникновения этой ошибки, проанализируем различные методы борьбы с ней — от простых манипуляций в пользовательском интерфейсе до обхода проблемы через создание РИБ из копии базы данных.
Система «1С:Предприятие» при создании начального образа выполняет жесткую проверку целевого каталога (в файловом варианте) или целевой базы данных на сервере СУБД (в клиент-серверном варианте). Блокировка процесса и вывод сообщения об ошибке происходят по следующим причинам:
8.3.10 и смежные) встроенные алгоритмы проверки каталогов работают некорректно, если запуск производится в обычном режиме или под учетной записью с ограниченными правами.1Cv8.cdn), из-за чего папка перестает считаться пустой.Перейдем к пошаговому рассмотрению методов решения этой проблемы.
---
Это наиболее простой и эффективный способ, который помогает в 90% случаев без изменения конфигурации или платформы. Выполним следующие действия по шагам:
---
Иногда платформа некорректно обрабатывает инициализацию фоновых процессов создания образа из-за настроек запуска клиента. Попробуем скорректировать их:
8.3 или конкретный релиз), очистим это поле и оставим его пустым.---
Если проблема вызвана несоответствием метаданных или внутренним сбоем механизма совместимости платформы, проделаем процедуру «встряски» конфигурации:
Версия 8.3.9).F7). Запускать режим «Предприятие» при этом не требуется.F7.---
Если выгрузка начального образа производится в клиент-серверном варианте, крайне важно соблюдать правильный порядок действий:
---
Для крупных информационных баз стандартный мастер создания начального образа часто оказывается неэффективным: процесс может прерываться из-за нехватки оперативной памяти, сетевых сбоев или блокировок ОС. В среде профессиональных разработчиков принято использовать альтернативный метод создания периферийного узла напрямую из резервной копии основной базы.
Рассмотрим этот алгоритм по шагам:
Шаг 1. Подготовка копии
Сделаем полную копию (бэкап) основной базы данных. Для файлового варианта достаточно скопировать файл 1Cv8.1CD в новый каталог. Для клиент-серверного варианта развернем бэкап средствами СУБД под новым именем.
Шаг 2. Отключение связи с главным узлом
Развернутая нами копия базы данных на данный момент считает себя полноценной «главной» базой. Чтобы превратить ее в подчиненный узел РИБ, нам нужно программно разорвать эту связь. Запустим созданную копию базы в режиме «Предприятие», откроем внешнюю обработку «Консоль кода» (или создадим временную обработку) и выполним следующий код:
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
После выполнения этой команды база данных перейдет в режим автономной работы и больше не будет считать себя главным узлом.
Шаг 3. Назначение нового главного узла
Теперь нам необходимо указать для этой базы, какой именно узел является для нее главным (то есть связать ее с нашей реальной центральной базой). Для этого выполним следующий программный код:
// Находим предопределенный узел, соответствующий нашей главной базе.
// Вместо "ЦБ" укажите код главного узла из вашего плана обмена.
УзелГлавнойБазы = ПланыОбмена.НайтиПоКоду("ЦБ");
Если ЗначениеЗаполнено(УзелГлавнойБазы) Тогда
ПланыОбмена.УстановитьГлавныйУзел(УзелГлавнойБазы);
Сообщить("Связь с главным узлом успешно установлена!");
Иначе
Сообщить("Узел с указанным кодом не найден. Проверьте правильность кода!");
КонецЕсли;
Шаг 4. Очистка таблиц регистрации изменений
Поскольку мы создали базу из полной копии, в ней могут остаться зарегистрированные изменения для обмена, которые теперь не нужны. Чтобы подчиненный узел не пытался отправить обратно в центральную базу гигабайты старых данных, запустим стандартную обработку «Регистрация изменений для обмена» и полностью очистим все зарегистрированные к обмену объекты для всех узлов в этой периферийной базе.
Этот метод позволяет полностью обойти любые ошибки создания начального образа, экономит время и позволяет запустить обмен в распределенной базе данных любого объема за считанные минуты.