Как правильно выполнять тестирование и исправление информационной базы 1С и исправить ошибку SDBL?

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

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

Проанализируем параметры ссылочной целостности: очищать ссылки или создавать объекты

При обнаружении ссылок на несуществующие элементы (так называемых «битых» ссылок) диалоговое окно ТиИ предлагает выбрать одно из действий: «Очищать ссылки», «Создавать объекты» или «Не изменять». Выясним, что происходит на уровне таблиц базы данных при выборе каждого из вариантов:

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

Разберем опцию «При частичной потере данных»: удалять или создавать

Данная настройка определяет поведение системы, когда у объекта метаданных повреждены составные части (например, утеряна строка табличной части, но сохранилась шапка документа):

  1. «Удалять данные»: объект полностью стирается из базы данных вместе со всеми связанными движениями. Это допустимо только в ситуациях, когда база подлежит технической «зачистке», а сохранность первичных данных и проводок не имеет значения.
  2. «Создавать объекты»: система сохраняет уцелевшие данные объекта, восстанавливая отсутствующие служебные структуры значениями по умолчанию. Это позволяет не потерять важные документы и затем вручную восстановить недостающие реквизиты.

Выясним причины появления ошибки SDBL: Выход за пределы размерности результата

Механизм SDBL (Simple Data Base Language) представляет собой внутренний транслятор запросов технологической платформы «1С:Предприятие» в диалект конкретной СУБД. Ошибка переполнения размерности чаще всего возникает по следующим причинам:

  1. Арифметическое переполнение итогов: в регистрах накопления или бухгалтерии накопленные суммы или остатки превысили предельную разрядность числовых полей, заложенную разработчиками в метаданных конфигурации.
  2. Разрастание таблиц регистрации изменений: при сбоях синхронизации в планах обмена служебные таблицы регистрации изменений (например, таблицы регистрации объектов или изменений конфигурации _ConfigChngR) накапливают миллионы строк, что вызывает сбой агрегатных функций SDBL.
  3. Ограничения формата файловой базы (.1CD): при стандартном размере страницы 4 КБ размер любой внутренней таблицы ограничен 4 ГБ. В процессе реструктуризации создаются временные дубликаты таблиц, что приводит к превышению лимита и аварийному завершению операции.
  4. Ошибки конкретного релиза технологической платформы: в некоторых версиях платформы присутствуют ошибки транслятора запросов при вычислении срезов последних или построении агрегатов.

Пошаговый алгоритм безопасного проведения ТиИ и устранения ошибок

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

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

Шаг 2. Физическая проверка файловой базы (chdbfl.exe). Если база файловая, перед запуском конфигуратора необходимо проверить целостность файла утилитой chdbfl.exe (находится в каталоге bin установленной платформы), установив флаг «Исправлять обнаруженные ошибки». Это устранит повреждения заголовков страниц и физических блоков таблицы.

Шаг 3. Поэтапное тестирование в конфигураторе. Никогда не запускайте все проверки одновременно. Выполняем их по очереди, нажимая «Выполнить» после выбора каждого пункта:

  1. Реиндексация таблиц информационной базы: восстанавливает целостность поврежденных индексов без изменения самих данных.
  2. Проверка логической целостности: находит системные несоответствия в структуре объектов.
  3. Проверка ссылочной целостности: выставляем переключатели «При наличии ссылок на несуществующие объекты — Создавать объекты» и «При частичной потере данных — Создавать объекты». Это исключит появление дубликатов измерений в регистрах.
  4. Пересчет итогов: выполняет перерасчет агрегатов и итоговых таблиц регистров. Если ошибка SDBL была вызвана некорректно рассчитанными остатками, на этом шаге она будет устранена.
  5. Реструктуризация таблиц информационной базы: финальный шаг, приводящий физическую структуру таблиц в полное соответствие с описанием метаданных конфигурации.

Шаг 4. Очистка платформенного кэша. Закрываем все сеансы «1С:Предприятия» и удаляем каталоги временных файлов пользователя (папки с буквенно-цифровыми идентификаторами в путях %LocalAppData%\1C\1cv8 и %AppData%\1C\1cv8). В клиент-серверном варианте также рекомендуется перезапустить службу агента сервера «1С:Предприятия».

Шаг 5. Выгрузка и загрузка базы данных. Если после выполнения ТиИ ошибка сохраняется, выполняем выгрузку базы в файл .dt через меню «Администрирование» — «Выгрузить информационную базу», создаем новую пустую базу и загружаем файл обратно. Данная процедура полностью пересобирает внутренние страницы формата .1CD и устраняет фрагментацию системных таблиц.

← На главную