И так:
Для подключения 1с 7.7 или 8+ можно использовать как минимум два способа:
1)Через ODBC (Open DataBase Connectivity)
Строка подключения:
Код:
«DRIVER={Microsoft ODBC for Oracle};UID=scott; PWD=Tiger; SERVER=ИмяБазы»
или
«Provider=MSDAORA;Password=tiger;User ID=scott;Data Source=ИмяБазы;Persist Security Info=True»
Плюсы: простота работы, входит в ОС Windows.
Минусы: не поддерживает многие расширения Оракл.
Не стоит гонять через это соединение обработки, которые сверяют сотни ID и других значений.(читаем Library Cache Oracle).
Если отсылать пару запросов за день в Оракл, ничего страшного не произойдет. Например: отчет в котором из переменных только дата.
2)Через OO4O (Oracle Objects for OLE) требует установки из Oracle client компоненту
Код:
Oracle Objects for OLE
Строка соединения (1с 7.7):
Код:
«Соединение=СоздатьОбъект("OracleInProcServer.XOraSession");
Ora=Соединение.OpenDatabase("ИмяБазы","scott/tiger",0);»
Рекомендуемое соединение к Оракл для написания приложений, которые постоянно обращаются к базе данных.
Пример 7.7:
задаем переменную, в которую будет передаваться состояние нашего подключения.
Код:
перем ora; // лучше прописать в глобальном модуле и экспортировать, а тут закомментировать.
подключаемся к Базе Данных.
Код:
функция открытьБД()
Попытка
Соединение=СоздатьОбъект("OracleInProcServer.XOraSession");
Ora=Соединение.OpenDatabase("ИмяБазы","Scott/triger",0); // (ИмяБазы должно присутствовать в TNSname.ora)
исключение
сообщить("не удалось подключиться");
конецпопытки;
конецфункции
создаем функцию, которая будет принимать текст запроса и параметры в запрос.
Код:
Функция Подключение(текстзапроса, параметр)
если пустоезначение(Ora)=1 тогда //если = 1 тогда создать подключение(создать сессию к ораклу), если уже подключено - использовать старое подключение!
открытьБД();
конецесли;
параметр.ВыбратьСтроки();
Пока параметр.ПолучитьСтроку()=1 Цикл
Ora.Parameters.Remove(параметр.name);
Ora.Parameters.Add(параметр.name,параметр.bar,1);
КонецЦикла;
НаборЗаписей=Ora.CreateDynaset(ТекстЗапроса,0);
возврат НаборЗаписей;
Ora.close();
КонецФункции
Код:
процедура Сформировать()
параметр = создатьобъект("таблицазначений");
параметр.очистить();
параметр.новаяколонка("bar","Строка");
параметр.новаяколонка("name","Строка");
текстзапроса = "Select ID from goods where barcode = :barcode";
параметр.новаястрока();
параметр.bar = "1234567896541";
параметр.name = "barcode";
запрос = подключение(текстзапроса, параметр); // передаем в функцию текст запроса и таблицу значений.
параметр.удалитьстроки();
запрос.movefist();
Пока запрос.EOF()=0 цикл
сообщить(запрос.Fields("ID").Value);
запрос.movenext();
конеццикла;
конецпроцедуры
все.