Перейти к основному содержимому

Внешние источники данных 1С

Разработчику Архитектору

Зачем нужны внешние источники

Иногда данные живут вне информационной базы 1С — в PostgreSQL, MS SQL Server, MySQL, Oracle и других СУБД. Платформа 8.3 даёт объект метаданных ВнешнийИсточникДанных: таблицы и функции сторонней БД описываются в конфигурации и используются как обычные источники в запросах, СКД и формах.

Типичные сценарии:

  • аналитика и отчёты по «сырым» таблицам DWH;
  • разовая или регламентная загрузка справочников из legacy-системы;
  • чтение витрины, которую наполняет другой сервис.

Не для своей ИБ 1С
Механизм не предназначен для прямого доступа к таблицам собственной базы 1С в СУБД — физическая схема платформы не совпадает с объектной моделью. Запись во внешний источник не заменяет штатное хранение данных прикладного решения.


Алгоритм внедрения

  1. Изучить структуру внешней БД — какие таблицы, поля или функции нужны.
  2. Создать ВнешнийИсточникДанных в конфигураторе (Внешние источники данных), описать таблицы и поля — вручную или загрузить структуру из источника.
  3. Использовать объект в запросах, отчётах, коде.
  4. Настроить строку подключения в режиме 1С:Предприятие на том сервере, где выполняется код.

Конфигуратор и прод
Параметры подключения в конфигураторе (при импорте структуры) не используются в рабочем режиме. В проде задают отдельные параметры — часто через константы или администрирование.


Подключение — ODBC и DSN

Доступ идёт через ODBC. Строка соединения — пары Ключ=Значение, разделённые ;.

Полная строка (пример MySQL):

DRIVER=MySQL ODBC 8.0 Unicode Driver;User ID=user;Password=***;Server=host;Database=warehouse

Через DSN — заранее созданное имя источника:

DSN=MyDB

DSN создают в утилите ODBC (Windows: Источники данных (ODBC)). На 64-bit Windows важна разрядность: для 64-bit сервера 1С — System32\odbcad32.exe, для 32-bit — SysWOW64\odbcad32.exe. На Linux — ODBCConfig и драйвер под вашу СУБД.

Поддерживаемые типы СУБД в свойстве Тип СУБД (официально): MS SQL Server, IBM DB2, PostgreSQL, Oracle, MySQL. Для других СУБД возможности зависят от ODBC-драйвера.


Где используется в конфигурации

ВозможностьПрименение
Язык запросовВЫБРАТЬ ... ИЗ ВнешнийИсточник.Таблица
СКДИсточник данных отчёта
Динамический списокФорма со строками внешней таблицы
Общие реквизитыСвязь с объектами ИБ
Права доступаRLS на таблицы и поля ВИД
BSLЧтение и запись через объектную модель

Записи внешних таблиц можно показывать в управляемых формах; обычные формы для ВИД не поддерживаются.

Структура в конфигурации может описывать меньше таблиц и полей, чем в реальной БД, но не больше — нельзя добавить поле, которого нет в источнике.


Запрос к внешней таблице

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВнешниеДанные.Код,
| ВнешниеДанные.Наименование
|ИЗ
| ВнешнийИсточник.СправочникКонтрагентов КАК ВнешниеДанные
|ГДЕ
| ВнешниеДанные.ПометкаУдаления = ЛОЖЬ";

Выборка = Запрос.Выполнить().Выбрать();

Имена таблиц — как в метаданных ВнешнийИсточникДанных, не обязательно как в SQL исходной БД (маппинг задаётся при описании структуры).


Синхронизация и загрузка

Для регулярного переноса данных во свою ИБ 1С обычно комбинируют:

  • выборку из ВИД;
  • запись в справочники/документы с проверкой дубликатов;
  • регламентное задание на сервере.

Прямая запись во внешнюю СУБД уместна для узких задач (обновление статуса в staging-таблице), но учётные документы всё равно оформляют в 1С.


Типичные ошибки

ПроблемаПричина
«Нет соединения» в продеНе настроена строка в режиме 1С:Предприятие
32/64-bit ODBCНеверная утилита администрирования DSN
Неверный Тип СУБДНесоответствие драйверу
Медленные отчётыТяжёлые запросы без индексов на стороне СУБД
Путаница с ИБ 1СПопытка читать _Reference напрямую из SQL

Связанные материалы


Проверка себя

  • Чем внешний источник данных отличается от PostgreSQL, на котором крутится ваша ИБ?
  • Где задаётся строка подключения для пользователей в проде?
  • Когда выберете HTTP/API вместо ВИД?

См. также

Другие статьи этого же раздела в боковом меню (как на странице "О разделе").