Vinaora Nivo SliderVinaora Nivo SliderVinaora Nivo SliderVinaora Nivo SliderVinaora Nivo SliderVinaora Nivo SliderVinaora Nivo SliderVinaora Nivo SliderVinaora Nivo SliderVinaora Nivo SliderVinaora Nivo SliderVinaora Nivo SliderVinaora Nivo Slider
Автор: Administrator Категория: Разработка
Дата публикации Просмотров: 1573
Печать

За все время работы с системой 1С мне очень часто может понадобиться работать с внешними источниками данных в режиме online. Информации в интернете, которая могла бы мне помочь было крайне мало, поэтому хочу привести примеры работы с ADODB из 1С в этой статье. Я не буду вдаваться в подробности технологии

Работа с ADODB производится через несколько объектов.

  • ADODB.Connection - объект производит подключение к источнику данных, а так же трансляцию команд и наборов данных
  • ADODB.RecordSet - Объект предоставляющий механизмы работы с набором данных, такие как получение, модификация, удаление или добавление данных.
  • ADODB.Command - Объект, так же предоставляющий механизмы работы с наборами данных, но, в отличие от RecordSet, не возвращает данные на клиента.

Перед тем как начать работать с данными из внешнего источника необходимо установить с ним связь, для этого вызывается функция Open объекта Connection, в единственный параметр этой функции передается строка ConnectionString с описанием параметров подключения. В этой статье используется источник данных Microsoft SQL server. Приведенные параметры ConnectionString используются для подключения к драйверу SQLOLEDB.1. Параметры для других источников данных  соответственно другие. 
Provider - Имя драйвера источника данных (к примеру SQLOLEDB.1 для MS SQL server)
Persist Security Info - необходимость использования шифрованого канала
User ID - Имя пользователя внешнего источника
Password - Пароль пользователя
Initial Catalog - Имя базы внешного источника
Data Source - Имя сервера

Подключение к серверу по технологии ADO

Попытка

ADOСоединение = Новый COMОбъект("ADODB.Connection");
ADOСоединение.Open("Provider=SQLOLEDB.1;
|Persist Security Info=False;
|User ID="
+Пользователь+";
|Password="
+ Пароль+";
|Initial Catalog="
+ База+";
|Data Source="
+ Сервер);

Возврат
ADOСоединение;

Исключение

КонецПопытки;

Открытие набора данных для всей таблицы

ADOНаборДанныхТовары = Новый COMОбъект("ADODB.RecordSet");
ADOНаборДанныхТовары.Open("IMPORT_PRODUCTS", мADOСоединение, 0, 2, 2);

 

Открытие набора данных по запросу
ТекстЗапросаТоваров = "SELECT *
| 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Соединение);

Для удобства работы с полученными данными я перегружаю данные в таблицы значений и затем помещаю их в менеджер виртуальных таблиц. В данном примере я особо не заморачивался с типом данных в колонках. все колонки имеют тип строка, длинной 100 символов. Строго типизированные колонки нужны для работы с таблицей значений в запросах.

КС = Новый КвалификаторыСтроки(100);
Массив = Новый Массив;
Массив.Добавить(Тип("Строка"));
ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);

//Циклом пробегаем по всем полям в наборе данных 
//и создаем поля в таблице значений
КоличествоПолейТовары = ADOНаборДанныхТовары.Fields.Count - 1;
Для
ПолеСч = 0 по КоличествоПолейТовары Цикл
ТаблицаТоваров.Колонки.Добавить(ADOНаборДанныхТовары.Fields.item(ПолеСч).name, ОписаниеТиповС);
КонецЦикла;


//Заполнение полей "Товары" 
Пока ADOНаборДанныхТовары.EOF = false Цикл
НоваяСтрока = ТаблицаТоваров.Добавить();
Для
ПолеСч = 0 по КоличествоПолейТовары Цикл
Поле = ADOНаборДанныхТовары.Fields.item(ПолеСч);
НоваяСтрока[Поле.name] = Поле.Value;
КонецЦикла;

//Переходим дальше
ADOНаборДанныхТовары.MoveNext();
КонецЦикла;

Продолжение следует..

 

(Информация с ресурса http://www.nastroy-ka.ru)

Add comment


Security code
Refresh

Последние новости

Written on 16/05/2012, 10:29 by admin
ob-otvetstvennosti-i-bezotvetstvennosti-ili-kak-opredelit-doljnostnye-obyazannosti-rabotnikovПоговорим о должностных обязанностях. Казалось бы, что тут может быть интересного?! Обязанности – они, как говорится, и в Африке обязанности. Нет ничего...
Written on 06/05/2012, 01:19 by admin
upravlenie-znaniyami-sozdanie-bazy-znanii-a-chto-na-praktikeПродолжая тему двух предыдущих постов (первый и второй), в которых проводилось исследование на тему управления знаниями и были рассказаны основные...
Written on 05/05/2012, 22:26 by admin
kak-pobedit-vorovstvo-sobstvennyh-sotrudnikovТы скажи нам, Карамзин,Как там Тверь, Калуга, Клин?И ответил Карамзин: «Да везде воруют, БЛИН!»Как вы полагаете, кто способен нанести бизнесу больший...
Written on 05/05/2012, 22:14 by admin
kak-naiti-chujoe-myloРуководство содержит описание поиска личных и корпоративных email различными методами с использованием специальных сервисов и поисковых систем....
Written on 05/05/2012, 22:10 by admin
prognozirovanie-prodaj-i-motivaciya-truda«…Конечно, можно платить и от продаж. Но лучше платить людям за то, что они делают на самом деле».   Территориальный менеджер крупной табачной...

Последние сообщения

  • linx 12.05.2012 13:49
    а как тоже самое сделать через политики в домене?

    Read more...

     
  • Super User 27.04.2012 09:03
    Вот пример как можно обработать перетаскивание из Excel: Отключаем стандартную обработку у табличного ...

    Read more...

     
  • Super User 27.04.2012 09:03
    1) Нужно установить свойство "РазрешитьНачал оПеретаскивания " у табличного поля из которого будем ...

    Read more...

     
  • Unknown181538 06.04.2012 14:36
    Я имею ввиду текст, который пишется для обработки в режиме пользователя. По умолчанию обработка ...

    Read more...

     
  • Administrator 06.04.2012 14:29
    Уважаемый, Unknown181538. По первому пункту согласен, спасибо. Видимо оператор "выполнить" "остался" ...

    Read more...

Login Form