Имя: Пароль:
1C
1C 7.7
v7: Подключение к MS SQL
,
0 ВежливаяТварь
 
20.09.12
10:33
Добрый день. Возникла необходимость подключиться к MSSQL 2005 EXPRESS из 1с 7.7 и с помощью запроса вытянуть информацию. В 8.2 я это делал. В 7.7 столкнулся с некоторыми трудностями. Не могли бы вы скинуть пример подключения или указать место где копать?
1 Ёпрст
 
20.09.12
10:38
простой запрос на ado и привет.
2 Ёпрст
 
20.09.12
10:38
что имеено за данные нужно получить ?
3 ВежливаяТварь
 
20.09.12
10:39
Информацию о расходных документах. Буду получать с помощью SQL запроса, он уже готов, теперь нужно понять как его передать.
4 ВежливаяТварь
 
20.09.12
10:40
Попытался портировать код из 8.2
   
ТаблицаЗагрузки=СоздатьОбъект(" ТаблицаЗначений");
   ServerName=СокрЛП("192.168.2.57");    //имя или IP-адрес сервера
   DSN=СокрЛП("SWE_Monblan");        //имя базы данных
   UID=СокрЛП("sa");    //логин пользователя
   PWD=СокрЛП("sasasa");                //пароль
   
   ConnectString="Provider=SQLOLEDB;Data Source="+ServerName+";DatabaseName="+DSN+";Initial Catalog="+DSN+";UID="+UID+";PWD="+PWD;
   Соединение=СоздатьОбъект COMОбъект("ADODB.Connection");
   Соединение.ConnectionTimeOut=600;
   Попытка              
       Соединение.Open(ConnectString);
   Исключение
       Предупреждение("Не удалось соединиться с базой данных!");
       Сообщить(ОписаниеОшибки());
   КонецПопытки;
   
   Cmd=СоздатьОбъект COMОбъект("ADODB.Command");
   Rs=СоздатьОбъект COMОбъект("ADODB.RecordSet");
   Cmd.ActiveConnection=Соединение;
   Cmd.CommandTimeOut=600;
   Cmd.CommandType=1;    //запрос на языке SQL
                                                               
   ТекстЗапроса="SET NOCOUNT ON exec dbo.swra_Sales_Desktop @Date_From="+"'"+Формат(ДатаНачалаПроверки,"ДФ=ггггММдд")+"', @Date_To="+"'"+Формат(ДатаКонцаПроверки,"ДФ=ггггММдд")+"'";
   
   Cmd.Commandtext=СокрЛП(ТекстЗапроса);
   Попытка
       Rs.ActiveConnection=Соединение;
       Rs=Cmd.Execute();
   Исключение
       Сообщить(ОписаниеОшибки());  
       
   КонецПопытки;
   
   КоличествоПолей=Rs.Fields.Count();
   Попытка
       for i = 0 to RS.Fields.Count - 1 do //Создание и добавление колонок
           ColumnName = RS.Fields.Item(i).Name;
           ColumnName=СтрЗаменить(ColumnName,",","");
           ColumnName=СтрЗаменить(ColumnName," ","");
           ColumnName=СтрЗаменить(ColumnName,".","");
           ColumnName=СтрЗаменить(ColumnName,"-","");
           ТаблицаЗагрузки.Колонки.Добавить(ColumnName);
       enddo;
       
       while RS.EOF = 0 do // Заполнение созданной таблицы
           ТаблицаЗагрузки.Добавить();
           for НомерСтолбца = 0 По RS.Fields.Count - 1 do
               ТаблицаЗагрузки.Установить(НомерСтолбца,RS.Fields(НомерСтолбца).Value);
           enddo;
           RS.MoveNext();
       enddo;  
   Исключение
       Сообщить(ОписаниеОшибки());
   КонецПопытки;
   
   Rs.Close();
   Соединение.Close();
5 VladZ
 
20.09.12
10:43
(4) И что не получается?
6 Ёпрст
 
20.09.12
10:43
СоздатьОбъект COMОбъект  
готично.. что за адская помесь снеговика с клюшками ?
7 VladZ
 
20.09.12
10:45
ТаблицаЗагрузки.Колонки.Добавить(ColumnName);

гы-гы-гы... Позови специалиста!
8 ВежливаяТварь
 
20.09.12
10:46
Писал в основном на 8. 7 знаю поверхностно. Если укажите на ошибки буду очень признателен.
9 ВежливаяТварь
 
20.09.12
10:47
(7) Я к специалистам здесь и обратился.
10 VladZ
 
20.09.12
10:49
СоздатьОбъект COMОбъект("ADODB.Connection"); -> СоздатьОбъект ("ADODB.Connection");

ТаблицаЗагрузки.Колонки.Добавить(ColumnName); - в семерке это не работает. Нужно через ТаблицаЗагрузки.НоваяКолонка();

Формат(ДатаКонцаПроверки,"ДФ=ггггММдд") - нет в семерки ДФ
11 VladZ
 
20.09.12
10:50
Открывай СП и читай.
12 ВежливаяТварь
 
20.09.12
10:50
(10,11) Огромнейшее спасибо. Сейчас попробую.
13 VladZ
 
20.09.12
10:51
ТаблицаЗагрузки.Добавить(); -> ТаблицаЗагрузки.НоваяСтрока()
14 VladZ
 
20.09.12
10:53
Может еще что просмотрел... Перевести 60 строчек на 7.7 - вообще ни о чем разговор...

Было дело с делфей портировал, вот это было дело! Вот где мозг трещал по швам. :)