Как исправить ошибку «Начальный образ может быть выгружен только во вновь созданную или пустую ИБ той же версии...» в 1С?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

При создании нового узла распределенной информационной базы (РИБ) в системе «1С:Предприятие 8» разработчики и системные администраторы часто сталкиваются с досадной ошибкой: «Начальный образ может быть выгружен только во вновь созданную или пустую ИБ той же версии, что и основная база». Эта проблема может возникнуть даже в тех случаях, когда целевой каталог абсолютно пуст, а права пользователя в операционной системе не ограничены.

В этой статье мы подробно разберем причины возникновения этой ошибки, проанализируем различные методы борьбы с ней — от простых манипуляций в пользовательском интерфейсе до обхода проблемы через создание РИБ из копии базы данных.

Почему возникает эта ошибка?

Система «1С:Предприятие» при создании начального образа выполняет жесткую проверку целевого каталога (в файловом варианте) или целевой базы данных на сервере СУБД (в клиент-серверном варианте). Блокировка процесса и вывод сообщения об ошибке происходят по следующим причинам:

  1. Ошибки кэширования и платформенные баги. В некоторых версиях платформы (особенно часто упоминаются релизы ветки 8.3.10 и смежные) встроенные алгоритмы проверки каталогов работают некорректно, если запуск производится в обычном режиме или под учетной записью с ограниченными правами.
  2. Невидимые файлы блокировок и кэш ОС. Windows или сама платформа могут создавать в выбранной директории скрытые временные файлы (например, 1Cv8.cdn), из-за чего папка перестает считаться пустой.
  3. Предварительное создание базы на сервере СУБД. Если при создании серверного образа администратор заранее регистрирует пустую базу в консоли кластера 1С и MS SQL/PostgreSQL, то СУБД сразу инициализирует системные таблицы. Для платформы 1С такая база уже не является «абсолютно пустой».
  4. Влияние активных расширений конфигурации. Если в основной базе используются расширения, меняющие структуру данных, и они не адаптированы для корректной передачи в подчиненные узлы, это может вызвать сбой при генерации конфигурации начального образа.

Перейдем к пошаговому рассмотрению методов решения этой проблемы.

---

Решение 1. Запуск от имени Администратора и создание образа из списка

Это наиболее простой и эффективный способ, который помогает в 90% случаев без изменения конфигурации или платформы. Выполним следующие действия по шагам:

  1. Полностью закроем все активные сеансы работы с базой данных.
  2. Найдем ярлык запуска 1С на рабочем столе, нажмем по нему правой кнопкой мыши и выберем пункт «Запуск от имени администратора».
  3. Запустим нашу рабочую (главную) базу в режиме «Предприятие».
  4. Перейдем к списку планов обмена. Для этого воспользуемся меню «Все функции» (или «Функции для технического специалиста») и найдем нужный план обмена.
  5. Важный нюанс: не нужно открывать карточку (форму) конкретного узла, для которого мы хотим создать образ. Вместо этого выделим узел прямо в списке, нажмем правую кнопку мыши (или кнопку «Еще») и выберем команду «Создать начальный образ».
  6. В открывшемся окне укажем путь к абсолютно новому, только что созданному на диске пустому каталогу и запустим процесс генерации.

---

Решение 2. Корректировка параметров запуска информационной базы

Иногда платформа некорректно обрабатывает инициализацию фоновых процессов создания образа из-за настроек запуска клиента. Попробуем скорректировать их:

  1. Откроем окно со списком информационных баз 1С.
  2. Выделим нашу основную базу и нажмем кнопку «Изменить».
  3. В открывшемся окне перейдем на последнюю страницу настроек.
  4. Обратим внимание на поле «Версия 1С:Предприятия». Если там жестко прописано значение (например, 8.3 или конкретный релиз), очистим это поле и оставим его пустым.
  5. Найдем параметр «Основной режим запуска». Изменим значение с «Выбирать автоматически» на «Толстый клиент».
  6. Нажмем «Готово», запустим базу и повторим попытку создания начального образа РИБ.

---

Решение 3. Сброс режима совместимости в конфигураторе

Если проблема вызвана несоответствием метаданных или внутренним сбоем механизма совместимости платформы, проделаем процедуру «встряски» конфигурации:

  1. Запустим основную базу в режиме Конфигуратор.
  2. Откроем свойства корневого элемента конфигурации (нажмем правой кнопкой мыши по верхней строке дерева метаданных и выберем «Свойства»).
  3. Найдем свойство «Режим совместимости».
  4. Временно изменим его на любую более старую версию платформы (например, если стояло «Не использовать», установим значение Версия 8.3.9).
  5. Применим изменения конфигурации базы данных (нажмем клавишу F7). Запускать режим «Предприятие» при этом не требуется.
  6. Вернем режим совместимости в исходное состояние (например, снова установим «Не использовать»).
  7. Повторно применим изменения конфигурации по кнопке F7.
  8. Запустим режим «Предприятие» и выполним стандартную процедуру создания образа.

---

Решение 4. Правильное создание серверной (SQL) базы данных

Если выгрузка начального образа производится в клиент-серверном варианте, крайне важно соблюдать правильный порядок действий:

  1. Ни в коем случае не создавайте базу данных в консоли администрирования кластера 1С или на сервере СУБД (MS SQL Server, PostgreSQL) вручную перед выгрузкой.
  2. В окне создания начального образа выберите тип расположения — «На сервере 1С:Предприятия».
  3. В полях настроек укажите имя сервера 1С, имя новой (еще не существующей на сервере СУБД) базы данных, тип СУБД и параметры авторизации администратора СУБД.
  4. Платформа 1С должна самостоятельно, используя учетные данные администратора СУБД, создать базу данных с нуля в процессе генерации начального образа. Только в этом случае проверка на «пустую базу» пройдет успешно.

---

Профессиональный альтернативный метод: «РИБ из копии»

Для крупных информационных баз стандартный мастер создания начального образа часто оказывается неэффективным: процесс может прерываться из-за нехватки оперативной памяти, сетевых сбоев или блокировок ОС. В среде профессиональных разработчиков принято использовать альтернативный метод создания периферийного узла напрямую из резервной копии основной базы.

Рассмотрим этот алгоритм по шагам:

Шаг 1. Подготовка копии
Сделаем полную копию (бэкап) основной базы данных. Для файлового варианта достаточно скопировать файл 1Cv8.1CD в новый каталог. Для клиент-серверного варианта развернем бэкап средствами СУБД под новым именем.

Шаг 2. Отключение связи с главным узлом
Развернутая нами копия базы данных на данный момент считает себя полноценной «главной» базой. Чтобы превратить ее в подчиненный узел РИБ, нам нужно программно разорвать эту связь. Запустим созданную копию базы в режиме «Предприятие», откроем внешнюю обработку «Консоль кода» (или создадим временную обработку) и выполним следующий код:

ПланыОбмена.УстановитьГлавныйУзел(Неопределено);

После выполнения этой команды база данных перейдет в режим автономной работы и больше не будет считать себя главным узлом.

Шаг 3. Назначение нового главного узла
Теперь нам необходимо указать для этой базы, какой именно узел является для нее главным (то есть связать ее с нашей реальной центральной базой). Для этого выполним следующий программный код:


// Находим предопределенный узел, соответствующий нашей главной базе.
// Вместо "ЦБ" укажите код главного узла из вашего плана обмена.
УзелГлавнойБазы = ПланыОбмена.НайтиПоКоду("ЦБ"); 

Если ЗначениеЗаполнено(УзелГлавнойБазы) Тогда
    ПланыОбмена.УстановитьГлавныйУзел(УзелГлавнойБазы);
    Сообщить("Связь с главным узлом успешно установлена!");
Иначе
    Сообщить("Узел с указанным кодом не найден. Проверьте правильность кода!");
КонецЕсли;

Шаг 4. Очистка таблиц регистрации изменений
Поскольку мы создали базу из полной копии, в ней могут остаться зарегистрированные изменения для обмена, которые теперь не нужны. Чтобы подчиненный узел не пытался отправить обратно в центральную базу гигабайты старых данных, запустим стандартную обработку «Регистрация изменений для обмена» и полностью очистим все зарегистрированные к обмену объекты для всех узлов в этой периферийной базе.

Этот метод позволяет полностью обойти любые ошибки создания начального образа, экономит время и позволяет запустить обмен в распределенной базе данных любого объема за считанные минуты.

← На главную