пятница, 6 мая 2011 г.

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

И наконец настал тот час когда "они" появились
Платформа 8.2.14
Реализована возможность получать данные из внешних источников данных. Для доступа используется интерфейс ODBC. Для доступа к данным внешних источников можно использовать объектную модель, язык запросов и систему компоновки данных. Реализована стандартная функция "Управление внешними источниками данных". Реализован объект метаданных "ВнешнийИсточникДанных".
В конфигурации появился новый объект Внешние источники данных.

Каждый источник представляет из себя:
  1. Перечень доступных таблиц;
  2. Перечень доступных полей в таблице
  3. Дополнительные колонки валяющие на представление 
Важно:
Строка соединения указываемая при импорте таблиц не сохраняется в конфигурации


Есть конструктор строк соединений позволяющий выбрать исчерпывающий список драйверов: 
  • SQL Server 
  • Microsoft ODBC for Oracle 
  • Microsoft Access Driver (*.mdb), Microsoft Access-Treiber (*.mdb), Driver do Microsoft Access (*.mdb) 
  • Microsoft dBase Driver (*.dbf), Microsoft dBase-Treiber (*.dbf), Driver do Microsoft dBase (*.dbf) 
  • Microsoft Excel Driver (*.xls), Microsoft Excel-Treiber (*.xls), Driver do Microsoft Excel(*.xls) 
  • Microsoft Paradox Driver (*.db ), Microsoft Paradox-Treiber (*.db ), Driver do Microsoft Paradox (*.db ) 
  • Microsoft Text Driver (*.txt; *.csv), Microsoft Text-Treiber (*.txt; *.csv), Driver da Microsoft para arquivos texto (*.txt; *.csv) 
  • Microsoft Visual FoxPro Driver, Microsoft FoxPro VFP Driver (*.dbf), Microsoft dBase VFP Driver (*.dbf),Microsoft Visual FoxPro-Treiber, Driver para o Microsoft Visual FoxPro 
  • SQL Server Native Client 10.0
После того как вы сохраните конфигурацию исходную структуру таблиц внешнего источника вы увидите в конструкторе запросов, и сможете работать с ней так же как с обычной таблицей, использовать в запросе или читать с помощью встроенного языка.

пСоед = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;
пСоед.СтрокаСоединения= "DRIVER={SQL Server};SERVER=serv;UID=sa;PWD=fkujhbnv;APP=upp;DATABASE=upp";
ВнешниеИсточникиДанных.upp.УстановитьОбщиеПараметрыСоединения(пСоед);
ВнешниеИсточникиДанных.upp.УстановитьСоединение();
Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 5
| dbo_Config.FileName,
| dbo_Config.Creation,
| dbo_Config.BinaryData
|ИЗ
|ВнешнийИсточникДанных.upp.Таблица.dbo_Config КАК dbo_Config");
Таблица = Запрос.Выполнить().Выгрузить();


Важно: Перед началом работы с внешними источники необходимо установить соединение с ними (пример выше).
В запросе помимо стандартный типов будут присутствовать и двоичные данные


Вообще поведение двоичных данные радует, их не просто можно получить они еще и работают в запросах на соединение.
Но есть вещи которые огорчают:
  1. Нельзя получать данные из нескольких источников одновременно, то есть в запросе не могут присутствовать таблицы конфигурации и таблицы внешних источников; 
  2. Нельзя использовать временные таблицы в запросах с внешними источниками данных 
Резюме:
Заметным и нужным был релиз платформы 8.1.11 именно в нем появились временные таблицы, я думаю что 8.2.14 станет таким же