Перейти на старую версию сайта
За все время работы с системой 1С мне очень часто может понадобиться работать с внешними источниками данных в режиме online. Информации в интернете, которая могла бы мне помочь было крайне мало, поэтому хочу привести примеры работы с ADODB из 1С в этой статье. Я не буду вдаваться в подробности технологии
Работа с ADODB производится через несколько объектов. Перед тем как начать работать с данными из внешнего источника необходимо установить с ним связь, для этого вызывается функция Open объекта Connection, в единственный параметр этой функции передается строка ConnectionString с описанием параметров подключения. В этой статье используется источник данных Microsoft SQL server. Приведенные параметры ConnectionString используются для подключения к драйверу SQLOLEDB.1. Параметры для других источников данных соответственно другие. Подключение к серверу по технологии ADO Открытие набора данных для всей таблицы Для удобства работы с полученными данными я перегружаю данные в таблицы значений и затем помещаю их в менеджер виртуальных таблиц. В данном примере я особо не заморачивался с типом данных в колонках. все колонки имеют тип строка, длинной 100 символов. Строго типизированные колонки нужны для работы с таблицей значений в запросах. Продолжение следует..
(Информация с ресурса http://www.nastroy-ka.ru)
Provider - Имя драйвера источника данных (к примеру SQLOLEDB.1 для MS SQL server)
Persist Security Info - необходимость использования шифрованого канала
User ID - Имя пользователя внешнего источника
Password - Пароль пользователя
Initial Catalog - Имя базы внешного источника
Data Source - Имя сервера
ADOСоединение = Новый COMОбъект("ADODB.Connection");
ADOСоединение.Open("Provider=SQLOLEDB.1;
|Persist Security Info=False;
|User ID="+Пользователь+";
|Password="+ Пароль+";
|Initial Catalog="+ База+";
|Data Source="+ Сервер);
Возврат ADOСоединение;
Исключение
КонецПопытки;
ADOНаборДанныхТовары.Open("IMPORT_PRODUCTS", мADOСоединение, 0, 2, 2);
| FROM [IMPORT_PRODUCTS]
| where[orders_id] in (SELECT [orders_id] FROM [IMPORT_ORDERS] where (([orders_UUID] = '')
|or ([orders_UUID] = 'NULL') or([modified] = '1')))";
ADOНаборДанныхТовары = Новый COMОбъект("ADODB.RecordSet");
ADOНаборДанныхТовары .Open(ТекстЗапросаТоваров, мADOСоединение);
Массив = Новый Массив;
Массив.Добавить(Тип("Строка"));
ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);
//Циклом пробегаем по всем полям в наборе данных
//и создаем поля в таблице значений
КоличествоПолейТовары = ADOНаборДанныхТовары.Fields.Count - 1;
Для ПолеСч = 0 по КоличествоПолейТовары Цикл
ТаблицаТоваров.Колонки.Добавить(ADOНаборДанныхТовары.Fields.item(ПолеСч).name, ОписаниеТиповС);
КонецЦикла;
//Заполнение полей "Товары"
Пока ADOНаборДанныхТовары.EOF = false Цикл
НоваяСтрока = ТаблицаТоваров.Добавить();
Для ПолеСч = 0 по КоличествоПолейТовары Цикл
Поле = ADOНаборДанныхТовары.Fields.item(ПолеСч);
НоваяСтрока[Поле.name] = Поле.Value;
КонецЦикла;
//Переходим дальше
ADOНаборДанныхТовары.MoveNext();
КонецЦикла;
Read more...