В некоторых случаях удобно выгрузить из 1С какие либо данные в Access для дальнейшей работы. Работа осуществляется через ADODB.Connection, причем возможно использование языка запросов Transact SQL. Пример ниже:
adOpenForwardOnly = 0; // код состояния
adLockPessimistic = 2; // режим блокировок
adOpenStatic = 3; // режим открытия соединения
adStateOpen = 1; // код открытия соединения
ИмяФайла = «C:\MyFile.accdb»; // имя файла
// строка подключения к файлу БД Access
conn_str = «Provider=Microsoft.ACE.OLEDB.12.0; Data Source=» + ИмяФайла + «;»»»;
cn = Новый COMОбъект(«ADODB.Connection»); // объект для соединения
cn.Open(conn_str); // соединяемся с БД Access
Если (cn.State <> adStateOpen ) тогда // проверка открытия соединения
Сообщить(«Не удалось открыть ADODB.Connection»);
Возврат;
КонецЕсли;
rs = Новый COMОбъект(«ADODB.Recordset»); // объект для обхода строк
rs_select = Новый COMОбъект(«ADODB.Recordset»);
strSQL = «customers»; // таблица Access, с которой имеем дело
rs.Open(strSQL, cn, adOpenStatic, adLockPessimistic); // открываем таблицу
strSQL = «select name from customers where id=100»; // sql запрос к таблице
rs_select.Open(strSQL, cn, adOpenStatic, adLockPessimistic); // делаем выборку
Если rs_select.EOF = Ложь тогда // проверка наличия записей в выборке
Сообщить(«Нет строки с таким идентификатором: «);
rs_select.Close(); // закрываем выборку
rs_select = Неопределено; // уничтожаем лишние данные
КонецЕсли;
Попытка
rs.AddNew(); // добавить новую строку в табл customers
rs.Fields(0) .Value = 250; // имя нового контрагента
rs.Fields(1) .Value = «Новый контрагент»; // имя нового контрагента
rs.Update(); // записать новую строку в таблицу
// вывод на печать строки по колонкам
Для Каждого col Из rs.Fields Цикл
Сообщить(«Колонка « + col.Name + » = « + Строка(col.Value));
КонецЦикла;
Исключение
// исключение может быть вызвано наличием сроки с таким же
// идентификатором
Если rs.ActiveConnection.Errors(0).Number = -2147217887 тогда
Сообщить(«Такая запись уже есть в таблице»);
Иначе
Сообщить(ОписаниеОшибки());// другая ошибка
КонецЕсли;
КонецПопытки;
// закрываем выборку, если она открыта
Если (rs.state = adStateOpen) тогда
rs.Close();
КонецЕсли;
// закрываем соединение с БД, если оно открыто
Если cn.state = adStateOpen тогда
cn.Close();
КонецЕсли;
// уничтожаем лишние данные
rs = Неопределено;
cn = Неопределено;