Ошибка SDBL — одна из самых неприятных ситуаций, с которой может столкнуться администратор или разработчик 1С. Сообщение «Таблица или поле ... не содержится в разделе FROM» буквально означает, что платформа 1С пытается обратиться к объекту (таблице или колонке), который существует в описании метаданных конфигурации, но отсутствует в физической структуре базы данных (SQL или файловой).
Данная ошибка сигнализирует о «разрыве» синхронизации. Чаще всего это происходит по следующим причинам:
Принять изменения в Конфигураторе.1С (например, _ConfigChngR).Прежде чем приступать к радикальным методам, выполним последовательную проверку, чтобы исключить влияние внешних факторов.
Иногда ошибка вызвана устаревшими данными в локальном кэше пользователя или поврежденными пользовательскими настройками формы. Выполним следующие действия:
AppData\Local\1C\1Cv8 и AppData\Roaming\1C\1Cv8 на стороне клиента.V8Users и UserSettings, если есть доступ к SQL).Для серверных баз (PostgreSQL) необходимо убедиться, что проблема не в физическом повреждении страниц базы данных. Выполним тестирование:
Тестирование и исправление (ТиИ) в Конфигураторе. Обязательно установим галочки «Реструктуризация таблиц информационной базы» и «Проверка логической целостности».chdbfl.exe. Хотя в описанных случаях она может не обнаружить физических повреждений файла 1CD, это обязательный этап при диагностике SDBL.Рассмотрим ситуацию, когда ошибка вызвана кодом в расширении:
Попробуем временно отключить все расширения конфигурации через меню «Конфигурация» -> «Расширения конфигурации». Если после перезапуска проблема исчезнет, значит, причина кроется в одном из них. Последовательно включая расширения, мы сможем вычислить «виновника» — объект, который конфликтует с основной конфигурацией.
Чтобы понять, что именно за таблица или поле TBalED2 скрывается за ошибкой, проанализируем ТЖ. Нам нужно отловить событие SDBL:
<log>
<event>
<name>SDBL</name>
<level>ERROR</level>
<eventcontext>...</eventcontext>
</event>
</log>
В тексте лога будет виден SQL-запрос. Если мы видим упоминание таблицы, начинающейся на _Reference или _Document, мы поймем, какой именно справочник или документ «битый». Это позволит нам найти соответствующий объект в Конфигураторе и попробовать «пересохранить» его (например, добавив и тут же удалив любой реквизит, чтобы запустить принудительную реструктуризацию конкретной таблицы).
Если мы выяснили, что ошибка существует в базе данных уже несколько месяцев, восстановление из бэкапа не поможет. В такой ситуации единственный путь — это перенос данных в «чистую» информационную базу текущего релиза:
Правила обмена (через КД 2.0 или 3.0) или стандартные механизмы выгрузки данных, чтобы «вытянуть» документы и справочники.DT-файл, так как он перенесет поврежденную структуру метаданных.Помните: Работа с поврежденной структурой требует осторожности. Все действия проводите только на копии базы. Если ошибка возникает при формировании Оборотов счета с отбором по Кор.Субконто, возможно, проблема связана с некорректным планом счетов или настройкой аналитики, что решается обновлением конфигурации до актуального релиза.