В процессе обновления конфигурации, особенно нетиповой, можно столкнуться с критическими ошибками на этапе реструктуризации базы данных. Одна из таких ошибок — «Ошибка SDBL: Таблица или поле ... не содержится в разделе FROM». Она сигнализирует о рассинхронизации между метаданными конфигурации 1С и фактической структурой таблиц в базе данных SQL.
Давайте подробно разберем ситуацию на примере, когда такая ошибка возникает при реструктуризации справочника «Контрагенты», и рассмотрим как стандартные, так и нетривиальные пути решения.
Представим, что при обновлении информационной базы вы получаете следующее сообщение:
В процессе обновления информационной базы произошла критическая ошибка по причине: Ошибка SDBL: Таблица или поле Fld20016 не содержится в разделе FROM.
Если заглянуть в технологический журнал (ТЖ), можно увидеть SQL-запрос, который пытается выполнить платформа:
SELECT PDInitialized, Fld20016
FROM RefSInf16234
GROUP BY Fld20016, PDInitialized
Проанализируем этот запрос:
RefSInf16234 — это служебная таблица, которую платформа 1С создает для объектов с разделением данных. В данном случае, она относится к справочнику «Контрагенты» и хранит информацию об инициализации областей данных. Чтобы точно сопоставить физические имена таблиц и полей с объектами метаданных, удобно использовать инструмент Структура хранения базы данных.Fld20016 — это поле, соответствующее общему реквизиту с включенным разделением данных (например, ОбластьДанныхОсновныеДанные).Суть ошибки в том, что платформа 1С пытается выполнить запрос к полю Fld20016 в таблице RefSInf16234, но на момент выполнения этого запроса данное поле в таблице еще физически не создано. Это внутренний сбой в последовательности операций реструктуризации. В некоторых случаях для выявления причин блокировок или некорректных запросов полезно провести анализ SQL сервера глазами 1С-ника.
Прежде чем переходить к сложным манипуляциям, всегда стоит выполнить базовые шаги, которые могут решить проблему.
*.dt и загрузите ее в новую, чистую базу данных. Этот процесс может исправить некоторые внутренние несоответствия.В рассматриваемом случае эти методы не помогли, что указывает на более глубокую и специфическую проблему.
Когда стандартные подходы исчерпаны, приходится искать нестандартные решения. В данном случае проблема была решена путем удаления предопределенного элемента из справочника «Контрагенты».
Почему это могло сработать?
Предопределенные элементы тесно связаны с метаданными конфигурации. Возможно, один из них имел некорректное состояние или ссылался на несуществующие данные. Для предварительной проверки объектов полезно выполнить поиск битых ссылок или использовать средства для поиска и замены битых ссылок документов. Платформа при реструктуризации пыталась обработать этот "проблемный" элемент особым образом, что и приводило к сбою. Удаление элемента исключило его из процесса обновления и позволило реструктуризации успешно завершиться.
Рассмотрим по шагам, как это сделать:
Справочники -> Контрагенты.Этот метод, хоть и кажется нелогичным на первый взгляд, может оказаться единственным рабочим решением в ситуациях с глубокими внутренними ошибками платформы.
В поисках решения можно попробовать переключить режим обновления конфигурации на v2 (Новый механизм реструктуризации). Однако это может привести к другой ошибке:
Критическая ошибка работы Java-процесса. ... Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
Выясним причину этой ошибки. Она не связана с логикой 1С, а указывает на проблемы с Java-окружением на сервере.
javax.xml.bind (JAXB API) были стандартной частью Java (JDK) до 8-й версии включительно. Начиная с JDK 9 они были объявлены устаревшими, а в JDK 11 и новее — полностью удалены из стандартной поставки. Новый механизм обновления 1С использует Java и обращается к этим удаленным классам.В заключение, ошибка SDBL при обновлении — это серьезный сигнал о несоответствии структуры данных. Начинать решение всегда стоит с базовых процедур, но если они не помогают, нужно быть готовым к более глубокому анализу и нетривиальным действиям, всегда помня о необходимости резервного копирования.