Сбой при обновлении конфигурации или платформы — одна из самых неприятных ситуаций, с которой может столкнуться администратор или программист 1С. Одной из наиболее известных системных ошибок является «Ошибка SDBL: Ожидается имя таблицы (pos=19)». При ее возникновении база данных перестает запускаться в пользовательском режиме, утилита chdbfl.exe не находит повреждений, а стандартное «Тестирование и исправление» может аварийно завершать работу программы.
В этой статье мы подробно разберем природу возникновения данной ошибки, проанализируем, почему она происходит, и рассмотрим пошаговые методы восстановления работоспособности базы данных как для ПРОФ, так и для базовых версий конфигураций.
Аббревиатура SDBL (Simple Data Base Language) обозначает внутренний язык запросов платформы 1С. Он служит транслятором между объектными запросами системы и физическими таблицами СУБД (будь то файловая база данных .1CD или клиент-серверный вариант под управлением MS SQL, PostgreSQL и др.). Ошибка означает, что транслятор SDBL пытается обратиться к таблице или полю метаданных, которые задекларированы в конфигурации, но фактически отсутствуют в физической структуре таблиц базы данных.
Проанализируем классическую ситуацию возникновения сбоя. Вы работаете на старой версии платформы (например, 8.2.13) и решаете обновить конфигурацию до нового релиза (например, БП 2.0.43). В метаданных обновленной конфигурации автоматически повышается режим совместимости (до 8.2.16). Однако старая платформа 8.2.13 физически не умеет создавать новые системные таблицы (такие как ScheduledJobs — регламентные задания) или новые служебные поля (например, PredefinedID). После этого вы устанавливаете новую платформу (например, 8.2.17 или 8.3). Новая платформа видит в метаданных режим совместимости 8.2.16 и полагает, что структура таблиц уже приведена в соответствие. Происходит рассинхронизация: конфигурация требует наличия таблиц, которых физически нет в базе данных. При обращении к ним транслятор SDBL выдает ошибку «Ожидается имя таблицы».
---
Этот способ подходит, если у вас есть доступ к платформе, на которой выполнялось обновление конфигурации (в нашем примере — 8.2.13), и база позволяет открыть себя в Конфигураторе.
Разберем по шагам алгоритм действий для конфигураций версии ПРОФ:
8.2.13)..cf.8.2.17 или 8.3). Система предложит выполнить конвертацию базы данных — соглашаемся..cf (меню Конфигурация — Загрузка конфигурации из файла...), чтобы вернуть конфигурацию к исходному типовому состоянию. Обновим конфигурацию базы данных (клавиша F7) и согласимся с реструктуризацией.Для автоматизации запуска Конфигуратора с целью реструктуризации при пакетной обработке можно использовать параметры командной строки. Посмотрим на пример пакетного файла запуска:
"C:\Program Files (x86)\1cv82\8.2.13.219\bin\1cv8.exe" CONFIG /F"D:\1C_Bases\Accounting" /N"Администратор" /P"Пароль" /IBCheckAndRepair -RebuildTable
---
Если у вас установлена базовая версия 1С:Бухгалтерии, вы не сможете просто так снять конфигурацию с поддержки и изменить режим совместимости, так как базовые лицензии жестко ограничивают возможность редактирования конфигурации. Однако выход есть.
Рассмотрим, как решить проблему, если у вас базовая версия:
.cf..1CD клиенту для работы на базовой лицензии.---
Если вы столкнулись с этой ошибкой, проанализируем возможность обновления самой технологической платформы. Фирма 1С признала данное поведение системы ошибкой платформы (код ошибки 10125390). Начиная с релизов платформы 8.2.18.82 / 8.2.18.96 и во всех последующих версиях ветки 8.3, разработчики добавили автоматический механизм исправления этой коллизии.
Выполним следующие действия:
8.3).Новая платформа обнаружит несоответствие структуры таблиц заданному режиму совместимости, выведет служебное сообщение о запуске принудительной реструктуризации и автоматически пересоздаст недостающие служебные поля (такие как PredefinedID) и индексы. После успешного завершения процесса база данных запустится в пользовательском режиме без каких-либо ошибок.
---
Бывают запущенные случаи, когда база повреждена настолько, что Конфигуратор новой платформы аварийно завершает работу при попытке выполнить конвертацию или тестирование целостности, а старая платформа не может реструктурировать таблицы из-за внутренних конфликтов СУБД. В этом случае мы можем прибегнуть к переносу данных на уровне XML.
Выясним пошагово, как реализовать этот метод:
8.2.13), на которой она еще способна открываться в режиме «Предприятие».ВыгрузкаЗагрузкаДанныхXML82.epf (ее можно найти на дисках ИТС или в каталоге установки конфигурации «Конвертация данных»)..xml.8.3).БП 2.0.43.13). При этом структура таблиц новой базы будет создана корректно в соответствии с требованиями новой платформы.ВыгрузкаЗагрузкаДанныхXML и перейдем на вкладку Загрузка.Для иллюстрации процесса импорта данных рассмотрим пример кода, который используется внутри подобных обработок для программного чтения объектов XML:
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ПутьКФайлуДанных);
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "Object" Тогда
ОбъектДесериализации = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
ОбъектДесериализации.Записать();
КонецЕсли;
КонецЦикла;
ЧтениеXML.Закрыть();
---
Если ваша база данных работает на сервере под управлением MS SQL Server или PostgreSQL, то простая очистка локального кэша пользователя на компьютере не решит проблему, так как SDBL-запросы формируются на стороне сервера приложений 1С.
Проанализируем порядок действий на сервере:
services.msc).C:\Program Files\1cv8\srvinfo\reg_1541\ (или C:\Program Files (x86)\1cv82\srvinfo\).snccntry) и удалим их содержимое. Это позволит полностью сбросить кэш метаданных сервера.
ALTER DATABASE [Имя_Вашей_Базы] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DBCC CHECKDB ('Имя_Вашей_Базы', REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS;
GO
ALTER DATABASE [Имя_Вашей_Базы] SET MULTI_USER;
GO
После проверки СУБД исправит возможные логические несоответствия в таблицах индексов, что позволит Конфигуратору 1С провести корректную реструктуризацию без вылета рабочих процессов сервера rphost.
---
Для того чтобы избежать подобных критических сбоев при обслуживании информационных баз 1С, рекомендуем придерживаться простых правил:
.dt или копию файла .1CD) непосредственно перед проведением любых обновлений конфигурации или платформы.Применяя описанные методики, мы можем гарантированно восстановить работоспособность поврежденной информационной базы и вернуть стабильность ведения учета на предприятии.