Все вопросы связанные с программированием. Языки программирования. Средства разработки.
Ответить

Пригодилась вам статья?

Да, спасибо!
0
Голосов нет
dBaser rulezZz!!!! :)
5
100%
 
Всего голосов: 5

Аватара пользователя
dBaser
Не в сети
СуперМодератор
СуперМодератор
Сообщения: 1202
Зарегистрирован: Вт дек 09, 2003 11:50
Контактная информация:

1C 8.0 ::: Подключение к MS SQL из локальной базы

Сообщение dBaser »

1С Предприятие 8.0: Подключение к сторонней базе MS SQL (например инет магазин ASP+MSSQL) полностью программным способом.

Код: Выделить всё

//строка подключения - один из самых важных параметров при подключении к MSSQL. позже напишу как ее правильно составить.
стрПодключения = "Provider=SQLOLEDB.1;Password=qwert;Persist Security Info=True;User ID=sa;Initial Catalog=PromoBD41;Data Source=SDO-URGI";
                
                //в ХР точно проблем не должно быть и не нужен установленный офис... библиотеки есть в винде.
                //создание обьекта подключения к SQLServer
	Connection = Новый COMОбъект("ADODB.Connection");
	Connection.ConnectionString =  стрПодключения;
	
	попытка
		Connection.Open();
	исключение
		Сообщить ("Проблемы с подключением к SQLserver" );
		Возврат;
	КонецПопытки;

                //Создание обьекта набора записей
	RS = Новый COMОбъект("ADODB.Recordset");
	
	//Запрос к базе данных на языке SQL запросов

	попытка
		RS.Open("SELECT dbo.Groups.name as grname FROM dbo.Groups GROUP BY dbo.Groups.name ORDER BY dbo.Groups.name", Connection );
	исключение
		Сообщить ("Проблемы с выполнением запроса к SQL");
		Возврат;
	КонецПопытки;
	 
	// Пример обработки полученного recordset

	Пока RS.EOF() = 0 Цикл
		Группа = RS.Fields("grname").Value;
		//Описание = RS.Fields("Description").Value;
		Сообщить(Группа); 
		//Обработка других полей
		
		RS.MoveNext();

	КонецЦикла;
	
	RS.Close();
	Connection.Close();

з.ы.
это не плагиат, а изыски собственного опыта...
долго шарился по инету что бы найти что то подобное, но нашел только как из 1С7.7 подключится к *.dbf через ADO
Критиковать - это показывать автору, как бы делал я, если бы умел.
-------
Продаются мужские часики. Один часик - 50 долларов.

Аватара пользователя
dBaser
Не в сети
СуперМодератор
СуперМодератор
Сообщения: 1202
Зарегистрирован: Вт дек 09, 2003 11:50
Контактная информация:

Сообщение dBaser »

где взять строку подключения...

1. создаем новый текстовый документ (напримет connect.txt)
2. меняем ему разрешение на udl (получается connect.udl)
3. открываем получившийся документ и с первой слева вкладки задаем необходимые параметры (В данном случае на первой вкладке выбираем поставщика данных SQL server, на второй указуем имя банки в сети где установлен сиквел сервер, логин пароль, и выбираем базу с которой будем работать.) проверяем подключение. если подключение произошло удачно жмем ОК.
4. открываем теперь этот файл (connect.udl) с помощью простого блокнота. копируем все содержимое и используем его в качестве строки подключения в программном коде.

усе...
Критиковать - это показывать автору, как бы делал я, если бы умел.
-------
Продаются мужские часики. Один часик - 50 долларов.

Аватара пользователя
tAZAR
Не в сети
Модератор
Модератор
Сообщения: 567
Зарегистрирован: Ср июн 23, 2004 8:13
Откуда: г.Шахты

Сообщение tAZAR »

dBaser писал(а):
SELECT dbo.Groups.name as grname FROM dbo.Groups GROUP BY dbo.Groups.name ORDER BY dbo.Groups.name
А это - яркий пример, как нельзя писать на скуле? :D
20 полей тоже будешь писать dbo.table.Field ???
Без обид. Алиасы и юзинги для людей давно уже придуманы :-)

Для работы с MSSQL есть также ODBC провайдер SQL driver (MS Sql Driver), ставится вместе с XPSP1/SP2.
Интересно мне другое - а не пробовал ли ты использовать компоненты прямого доступа вместо OLEDB к MSSQL из 1с? [/code]

Аватара пользователя
dBaser
Не в сети
СуперМодератор
СуперМодератор
Сообщения: 1202
Зарегистрирован: Вт дек 09, 2003 11:50
Контактная информация:

Сообщение dBaser »

tAZAR писал(а):А это - яркий пример, как нельзя писать на скуле?
20 полей тоже будешь писать dbo.table.Field ???
мдя... ты видимо не заметил
dBaser писал(а):dbo.Groups.name as grname
в коде при обработке используется grname. не является ли это твоим алиасом?

при этом dbo..table.Field на сколько я понимаю имя пользователя... т.к. база привязана к AD.


хотя зачем что то обсуждать в таком контексте... твое мнение наверняка намного авторитетней чем код целого РКЦ Прометей с кучей сертификаций... :D
Критиковать - это показывать автору, как бы делал я, если бы умел.
-------
Продаются мужские часики. Один часик - 50 долларов.

Аватара пользователя
dBaser
Не в сети
СуперМодератор
СуперМодератор
Сообщения: 1202
Зарегистрирован: Вт дек 09, 2003 11:50
Контактная информация:

Сообщение dBaser »

tAZAR писал(а):Для работы с MSSQL есть также ODBC провайдер SQL driver (MS Sql Driver), ставится вместе с XPSP1/SP2.
Интересно мне другое - а не пробовал ли ты использовать компоненты прямого доступа вместо OLEDB к MSSQL из 1с?

есть. и активно используется. является довольно универсальным компонентом.
но ADO является более новым интерфейсом работы с базами... работа с этим компонентом для меня является признаком более профессиональной работы с БД и работает этот компонент пошустрей, как заявляет Скотт Ф.Баркер.
Критиковать - это показывать автору, как бы делал я, если бы умел.
-------
Продаются мужские часики. Один часик - 50 долларов.

Аватара пользователя
tAZAR
Не в сети
Модератор
Модератор
Сообщения: 567
Зарегистрирован: Ср июн 23, 2004 8:13
Откуда: г.Шахты

Сообщение tAZAR »

Сам в течение 2-х лет использую в основном ADO, сейчас ADO.NET. Просто было интересно, насколько актуально в 1С использование "родных" компонент прямого доступа от производителя СУБД, или сторонних компаний . А насчет запросика - дык ты еще обидься возьми - у всех бодун бывает :-) просто постоянное dbo.groups как - то странно выглядело... И нечего прометеем кидаться - не одни вы сертификацию проходите ;-)

Аватара пользователя
dBaser
Не в сети
СуперМодератор
СуперМодератор
Сообщения: 1202
Зарегистрирован: Вт дек 09, 2003 11:50
Контактная информация:

Сообщение dBaser »

tAZAR писал(а):И нечего прометеем кидаться - не одни вы сертификацию проходите
тут поправочка... я не являюсь сотрудником прометея) просто этот запрос их, из купленного у них лицензионного продукта...

да и вобще строка sql запроса не является сабжем и обсуждать ее тут нет смысла...
Критиковать - это показывать автору, как бы делал я, если бы умел.
-------
Продаются мужские часики. Один часик - 50 долларов.

Аватара пользователя
JokerR
Не в сети
Новичок
Новичок
Сообщения: 86
Зарегистрирован: Чт сен 15, 2005 1:03
Откуда: Шахты
Контактная информация:

Сообщение JokerR »

за хинт конечно спасибо(может когда и пригодится, бугого), но ето же просто пример на automation применительно к 1C. Можно было вместо "долго шарился по инету что бы найти что то подобное" погуглить чтонить вроде "ADO automation" или "ADO scripting"

Аватара пользователя
tAZAR
Не в сети
Модератор
Модератор
Сообщения: 567
Зарегистрирован: Ср июн 23, 2004 8:13
Откуда: г.Шахты

Сообщение tAZAR »

JokerR писал(а): погуглить чтонить вроде "ADO automation" или "ADO scripting"
+1
Очень интересно было бы, например, увидеть здесь не только стандартный automation, но и пример вывода данных в таблицу значений 1с-ки с использованием Lazy Fetch, постраничным выводом, высасывания только видимых записей и т.д. Недавно пришлось кое-что подобное написать под конфигурацию для 7.7 - под 1с редко пишу, но, ИМХО, мазохизм.
DBaser, если приходилось делать подобное и тебе не трудно - приведи здесь примерчик.

Ответить