При интеграции сторонних баз данных в экосистему 1С разработчики часто используют механизм внешних источников данных. В попытке сохранить типовую конфигурацию на полной поддержке добавление новых таблиц нередко выполняют через расширение конфигурации. Однако на практике возникает неприятная ситуация: таблица заимствована или создана в расширении, строка подключения проверена, соединение успешно установлено и отмечено флажком в пользовательском режиме, но сама таблица в списке объектов внешнего источника отсутствует.
Разберем причины такого поведения платформы и выясним, как гарантированно сделать добавленную таблицу доступной для работы.
Для того чтобы понять природу ошибки, рассмотрим технические особенности взаимодействия механизма расширений и внешних источников данных:
1С:Предприятие их игнорирует. Кроме того, если платформа обновлена до 8.3.24+, но для конфигурации или расширения включен режим совместимости с более ранними версиями, функционал остается заблокированным.БезопасныйРежим = Истина. В этом состоянии платформа принудительно блокирует доступ к внешним ресурсам операционной системы, включая сетевые соединения по ODBC и прямые вызовы СУБД.Чтение и Просмотр на добавленную таблицу, она не отобразится в интерфейсе внешнего источника данных.Проанализируем наиболее стабильный и проверенный на практике способ. Если используемая версия платформы ниже 8.3.24 или в конфигурации установлен старый режим совместимости, таблицы внешнего источника данных необходимо добавлять непосредственно в корень основной конфигурации.
ВнешниеИсточникиДанных в основной конфигурации.Таблицы добавим требуемую таблицу с указанием ее физического имени в СУБД.F7).После добавления таблицы в основную конфигурацию она сразу становится полноценным объектом метаданных и гарантированно отображается в пользовательском режиме при подключении внешнего источника.
Если обновление платформы доступно и требуется сохранить конфигурацию без снятия с поддержки, выполним следующие шаги:
РежимСовместимости. Значение должно быть установлено в НеИспользовать или иметь версию не ниже Версия 8.3.24.1С:Предприятие откроем меню Администрирование — Печатные формы, отчеты и обработки — Расширения.Если метаданные настроены корректно, но таблица по-прежнему не видна, сбросим текущее соединение с СУБД. Для этого в пользовательском режиме воспользуемся стандартной обработкой управления внешними источниками данных либо выполним сброс соединения программно:
ВнешнийИсточник = ВнешниеИсточникиДанных.ВнешнийИсточникДанных1;
ВнешнийИсточник.РазорватьСоединение();
ВнешнийИсточник.УстановитьСоединение();
После этого перезапустим клиентский сеанс (а в случае клиент-серверной базы — перезапустим рабочие процессы сервера 1С), чтобы сбросить кэш метаданных.
Если ограничения платформы или корпоративные регламенты не позволяют снимать конфигурацию с поддержки, а расширение не обеспечивает стабильной работы с внешними источниками, рассмотрим альтернативные механизмы:
Соединение = Новый COMОбъект("ADODB.Connection");
Соединение.ConnectionString = "Driver={PostgreSQL Unicode};Server=192.168.1.100;Port=5432;Database=external_db;Uid=user;Pwd=password;";
Соединение.Open();
НаборЗаписей = Соединение.Execute("SELECT * FROM custom_table");
HTTPСоединение, что исключает зависимость от ODBC-драйверов и архитектурных ограничений внешних источников данных.