При администрировании и разработке в среде «1С:Предприятие» можно столкнуться с неприятной системной ошибкой движка базы данных SDBL. Ошибка заявляет, что в схеме базы данных отсутствует таблица с префиксом «EDBT» (например, EDBT5728 или EDBT25806). Наиболее часто этот сбой проявляет себя в момент создания начального образа подчиненного узла распределенной информационной базы (РИБ).
В этой статье мы подробно проанализируем природу этой ошибки, выясним, почему она возникает, и рассмотрим несколько эффективных способов её устранения: от быстрого «обходного маневра» до правильного архитектурного проектирования системы обмена данными.
Для начала разберем терминологию. Аббревиатура EDBT во внутренней структуре СУБД платформы 1С расшифровывается как External Data Base Table (Таблица внешнего источника данных).
Когда мы добавляем в дерево метаданных конфигурации объект типа ВнешнийИсточникДанных (например, для интеграции с внешними базами телефонии Asterisk, системами СКУД, сторонними Microsoft SQL или PostgreSQL базами), платформа сопоставляет таблицы сторонней базы данных с внутренними логическими именами 1С. В физической структуре базы данных самой 1С эти таблицы регистрируются под именами, начинающимися с префикса EDBT и содержащими уникальный идентификатор (например, EDBT11621).
При создании начального образа подчиненного узла РИБ происходит следующее:
EDBT в базе-источнике или воссоздать ее в базе-приемнике.Рассмотрим подробнее по шагам, как можно решить эту проблему.
Если вам нужно срочно создать начальный образ, а база данных не позволяет этого сделать, можно воспользоваться проверенным практическим методом. Разберем его по шагам:
ВнешнийИсточникДанных, на который ругается система (предварительно сохранив параметры его подключения и структуру настроек, чтобы потом быстро восстановить).ВнешнийИсточникДанных (например, загрузив его из сохраненного ранее файла конфигурации .cf) и обновляем базу данных.Важное примечание: Этот способ отлично работает как разовое решение «здесь и сейчас». Однако, если в вашей системе регулярно создаются новые узлы или часто обновляется конфигурация, данный метод доставит массу неудобств, так как выполнять эти действия вручную каждый раз крайне неэффективно.
Проанализируем ситуацию с точки зрения архитектуры базы данных. Часто разработчики совершают ошибку, складывая все механизмы обмена в одну корзину: и распределенную базу данных (РИБ), и оперативную интеграцию со сторонними СУБД.
Необходимо строго разделять эти задачи:
Разделение планов обмена гарантирует, что при создании начального образа РИБ платформа не будет пытаться инициализировать сторонние таблицы, которые физически не должны присутствовать на периферийных узлах. Это избавит вас от ошибок SDBL в будущем. Для организации независимого взаимодействия с внешними СУБД можно использовать подсистему выгрузки данных во внешнюю базу SQL.
Начиная с технологической платформы 8.3.24, компания «1С» добавила полноценную поддержку работы с объектами типа ВнешнийИсточникДанных внутри расширений конфигурации. Это открывает перед нами самый изящный способ решения проблемы:
В результате основная конфигурация остается абсолютно «чистой» от виртуальных таблиц EDBT. Процесс генерации начального образа РИБ проходит быстро и без ошибок. Расширение конфигурации при этом будет автоматически передано в дочерний узел в процессе последующих регулярных обменов данными, если в свойствах вашего плана обмена включена передача расширений.
Иногда ошибка «залипает» в кэше метаданных сервера 1С или СУБД даже после того, как внешние источники были изменены или отключены. В таком случае выполним техническое обслуживание базы данных:
srvinfo\reg_1541\snccntx...) и полностью удаляем кэш метаданных..dt, после чего загружаем этот файл в абсолютно новую, чистую базу данных СУБД. Этот процесс принудительно пересоздает физическую структуру таблиц с нуля, полностью очищая устаревшие системные записи СУБД.Применяя данные подходы, мы не только избавимся от ошибки с отсутствующей таблицей EDBT, но и сделаем архитектуру обмена данными в нашей системе более отказоустойчивой, производительной и простой в поддержке.