Как исправить ошибку SDBL dataseparationUse при создании начального образа РИБ?

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

При создании начального образа распределенной информационной базы (РИБ) в конфигурациях на базе БСП (например, 1С:Управление торговлей 11, ERP или Комплексная автоматизация) разработчики могут столкнуться с критическим сбоем платформы. Ошибка выглядит следующим образом: «Не удалось создать начальный образ по причине: Ошибка SDBL. Таблица или поле dataseparationUse... не содержится в разделе From». Разберем причины возникновения этой неполадки и подробно рассмотрим практические способы ее решения.

Причины возникновения ошибки SDBL

Проанализируем природу данной ошибки. Служебные поля вида DataSeparationUse<Идентификатор> генерируются платформой для обслуживания механизма разделения данных (общих реквизитов-разделителей, таких как ОбластьДанныхОсновныеДанные или ОбластьДанныхВспомогательныеДанные).

Сбой происходит при сочетании следующих факторов:

  1. В информационной базе подключены расширения конфигурации, содержащие собственные объекты или добавленные реквизиты.
  2. Используется версия технологической платформы, в которой работа транслятора внутренних запросов SDBL с расширениями и разделителями содержит ошибки. При генерации начального образа платформа пытается построить запрос к таблицам с учетом разделителей, но некорректно связывает метаданные расширений, пропуская объявление таблицы в секции FROM.

Способ 1. Обновление или подбор стабильного релиза платформы

Выясним наиболее правильный и системный вариант устранения проблемы. Если ошибка вызвана недоработкой транслятора SDBL в конкретном релизе платформы (например, в ранних сборках ветки 8.3.11), оптимальным решением является переход на проверенную стабильную версию платформы 1С:Предприятие, рекомендованную для используемого релиза конфигурации.

Разберем последовательность действий:

  1. Ознакомимся с требованиями к релизу конфигурации в файле ReadMe.txt из дистрибутива обновления.
  2. Установим обновленный стабильный релиз платформы 1С на сервер или рабочий компьютер.
  3. Запустим информационную базу и повторим процедуру создания начального образа РИБ штатным способом через режим Конфигуратор или пользовательский интерфейс.

Способ 2. Временное отключение расширения при создании узла

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

Пошаговый порядок действий:

  1. Создадим резервную копию центральной информационной базы.
  2. В режиме Конфигуратор перейдем в меню Конфигурация — Расширения конфигурации и сохраним расширение в файл на диск.
  3. Удалим или отключим расширение из центральной базы.
  4. Создадим начальный образ подчиненного узла РИБ в штатном режиме (без расширения выгрузка пройдет успешно).
  5. Развернем полученную периферийную базу на рабочем месте.
  6. Подключим сохраненное расширение обратно в центральный узел, а затем загрузим его в созданный периферийный узел.

Способ 3. Создание подчиненного узла РИБ из копии базы данных

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

Разберем по шагам создание узла через копию базы:

  1. Создадим полную копию файла информационной базы 1Cv8.1CD (для файлового варианта) или копию базы на SQL-сервере.
  2. Запустим созданную копию базы данных в режиме 1С:Предприятие.
  3. Создадим внешнюю обработку или выполним фрагмент программного кода для переопределения главного узла РИБ.

Посмотрим на пример программного кода для настройки узлов:


// 1. Снимаем признак подчиненности текущей базы
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);

// 2. Находим узел центральной базы в плане обмена
УзелЦентральнойБазы = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоКоду("ЦБ");

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

После выполнения данного кода база переходит в режим подчиненного узла РИБ. Останется только очистить избыточную регистрацию изменений в периферийной базе, чтобы избежать дублирования данных при первой синхронизации.

Способ 4. Нормализация структуры через выгрузку и загрузку файла DT

Иногда ошибка SDBL вызывается рассинхронизацией внутренних идентификаторов метаданных и служебных таблиц базы после многократных реструктуризаций.

Проанализируем процесс нормализации структуры:

  1. В режиме Конфигуратор выполним команду Администрирование — Выгрузить информационную базу и сохраним файл с расширением .dt.
  2. Создадим новую пустую информационную базу.
  3. В конфигураторе новой базы выполним команду Администрирование — Загрузить информационную базу, выбрав созданный ранее файл .dt.
  4. Запустим процесс создания начального образа в новой базе. При выгрузке в файл .dt внутренняя структура таблиц и разделителей оптимизируется, что часто позволяет транслятору SDBL корректно отработать запрос.
← На главную