COM-объект ADODB.Command
В 1С Предприятие для целей выполнения различных команд, а также SQL-запросов лучше всего использовать COM-объект ADODB.Command.
1 |
ЗапросАДО = Новый COMОбъект("ADODB.Command"); |
С помощью этого объекта выполняются SQL-запросы. А с помощью COM-объекта ADODB.Recordset возвращается результат выполнения команды.
1 |
RS = Новый COMОбъект("ADODB.Recordset"); |
У объекта ADODB.Command есть несколько полей. Наиболее важные из них два:
— ActiveConnection – Активное соединение с БД
— CommandText – Текст команды или SQL-запроса.
Для выполнения команд можно воспользоваться следующей универсальной функцией 1С:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Функция ВыполнитьКоманду(Соединение, ТекстЗапроса, RS = Неопределено) Экспорт ЗапросАДО = Новый COMОбъект("ADODB.Command"); RS = Новый COMОбъект("ADODB.Recordset"); ЗапросАДО.ActiveConnection = Соединение; ЗапросАДО.CommandText = ТекстЗапроса; Попытка Успех = Истина; RS = ЗапросАДО.Execute(); Исключение //нет записей в рекордсете Успех = Ложь; Сообщить(ОписаниеОшибки(), СтатусСообщения.ОченьВажное); КонецПопытки; ЗапросАДО = Неопределено; Возврат Успех; КонецФункции; |
Подключение к БД, выполнение SQL запроса и обход результата, делаются следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
RS = Неопределено; ОбъектФормы = РеквизитФормыВЗначение("Объект"); Соединение = ОбъектФормы.ОткрытьПодключение(ОбъектФормы.СтрокаСоединения, 30); Если Соединение <> Неопределено Тогда Сообщить("Соединение с БД установлено успешно!"); Результат = ОбъектФормы.ВыполнитьКоманду(Соединение, ОбъектФормы.ЗапросSQL, RS); Сообщить("Запрос выполнен успешно: " + Результат); RS.MoveFirst(); ИндексЗаписи = 1; Пока RS.EOF = 0 Цикл Для НомерСтолбца = 0 По RS.Fields.Count-1 Цикл ИмяСтолбца = RS.Fields.Item(НомерСтолбца).Name; Сообщить(Строка(ИндексЗаписи) + ": " + ИмяСтолбца + "=" + RS.Fields(ИмяСтолбца).Value); КонецЦикла; RS.MoveNext(); ИндексЗаписи = ИндексЗаписи + 1; КонецЦикла; ОбъектФормы.ЗакрытьПодключение(Соединение); КонецЕсли; |
Работать с SQL — сервером напрямую, целесообразно в следующих случаях:
- Для более быстрого добавления новых записей в SQL-таблицу ИБ 1С (конструкции UPDATE и INSERT)
- Для операций чтения/записи при обмене со сторонней системой (не 1С Предприятие)
- Для выполнения команд СУБД прямо из 1С, которые невозможно выполнить другими способами.