пятница, 1 февраля 2013 г.

1С 8.2 и...работа с COM объектами

Часто требуется подключиться к другой базе и вытянуть оттуда какие нибудь данные.
Что бы это сделать нам понадобиться написать следующий код:

       //создаем объект COM соединение
База = Новый COMObject("V82.COMConnector");
//Коннектим базу и задаем пользователя и пароль
Результат = База.Connect("File=""C:\Users\НазваниеБазы"";Usr=""ИмяПользователя"";");
//новый Объект запрос на стороне подсоединенной базы
Запрос = Результат.NewObject("Запрос");
Запрос.Текст = "Выбрать * из Справочник.Номенклатура";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование);
КонецЦикла;

Хочу обратить внимание, что этот вызов можно делать на клиенте и на сервере, Запрос мы создали не в нашей базе на клиенте или сервере, а в присоединенной базе на Внешнем соединении. Это надо иметь ввиду.
Таким образом мы обратимся запросом прямо к справочнику Номенклатура в присоединенной базе. Очень просто, и удобно.

Так же хочется обратить внимание на работу с Excel. Это тоже требуется достаточно часто, и вот достаточно удобный способ чтения данных. Вот такой код:
        //Работа с экселем. Создаем вначале объект Ексель приложения
Таблица = Новый COMObject("Excel.Application");

//Создаем книгу, открывая файл
Книга = Таблица.Workbooks.open("C:\11.xlsx");

//Выбираем рабочий лист, по индексу или наименованию
Лист = Книга.WorkSheets(1);

//Доступ к значениям ячеек по cells(x,y).value
Сообщить(Лист.cells(1,1).value);
Сообщить(Лист.cells(1,2).value);
Сообщить(Лист.cells(2,1).value);
Сообщить(Лист.cells(2,2).value);
//Закрываем эксель обязательно, иначе процесс будет висеть                                                        
Таблица.quit();

Тоже всё достаточно просто, надо только обратить внимание на тот факт, что надо закрывать Эксель. Тут надо знать объектную модель самого Экселя, тогда всё станет понятно.
Выглядит иерархия объектов так: APPLICATION -> WORKBOOKS -> WORKSHEETS -> CELLS -> VALUE.  То есть вначале создаем APPLICATION , потом WORKBOOKS, обращаемся отсюда к нужному листу по WORKSHEETS , а потом к нужной ячейке на листе по cells(x,y).value.

Вопросы можно писать в комментарии,


Комментариев нет:

Отправить комментарий