Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   вызвать хранимую процедуру MS SQL из кода 1С 7.7 с параметрами. (http://forums.kuban.ru/f1040/vyzvat-_hranimuyu_proceduru_ms_sql_iz_koda_1s_7_7_s_parametrami-8718852.html)

specx 12.09.2018 16:59

вызвать хранимую процедуру MS SQL из кода 1С 7.7 с параметрами.
 
Добрый день !

подскажите, вызвать хранимую процедуру MS SQL из кода 1С 7.7 с параметрами.

спасибо.

user1C 12.09.2018 17:58

через ADODB.Connection и ADODB.Command
параметры, как вариант, можно передавать в Command.CommandText как ="exec sp_Name 'param1,param2,...'"
ЗЫ
поиск в гугле по сабжу выдает дополнения)

specx 13.09.2018 13:08

сделал.
Вот так работает из 1С 7.7 :



ServerName=СокрЛП(ИмяСервера);//имя или IP-адрес сервера
DSN=СокрЛП(ИмяБазыДанных);//имя базы данных
UID=СокрЛП(ИмяПользователя_);//логин пользователя
PWD=СокрЛП(Пароль);//пароль
ConnectString="Provider=SQLOLEDB;Data Source="+ServerName+";DatabaseName="+DSN+
";Initial Catalog="+DSN+";UID="+UID+";PWD="+PWD;
Соединение=CreateObject("ADODB.Connection");
Соединение.ConnectionTimeOut=600;
//****Составим строку параметров соединения

//**{Соединимся с базой данных
Попытка
Соединение.Open(ConnectString);
Исключение
Предупреждение("Не удалось соединиться с базой данных!");
Сообщить(ОписаниеОшибки());
Возврат ;
КонецПопытки;




Cmd=СоздатьОбъект("ADODB.Command");



Cmd.ActiveConnection=Соединение;
Cmd.CommandTimeOut=3600;
Cmd.CommandType=4;// хранимку ??


Cmd.CommandText = "[get_marks_by_doc]";
Cmd.Parameters("@nomerdoc").Value = номер_Док;
Cmd.Parameters("@datadoc").Value = док.датадок;
Cmd.Parameters("@typeofdoc").Value = "Spisanie";


Rs=Cmd.Execute();

если (Rs.EOF() >=0) и (Rs.BOF() >=0)тогда


Пока Rs.EOF() = 0 Цикл

марка=строка(Rs.Fields(0).Value);
сообщить(марка);

Rs.MoveNext();
конеццикла;
конецесли;



Соединение.Close();



вот хранимка на скуле :


ALTER PROCEDURE [dbo].[get_marks_by_doc]

@nomerdoc nvarchar(10),
@datadoc datetime,
@typeofdoc nvarchar(80)



AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;


SELECT mark from bd1 where nomerdoc=@nomerdoc and typeofdoc=@typeofdoc and datadoc=@datadoc


END

USSR 13.09.2018 18:22

а нельзя было просто этот запрос из одной строчки выполнить с помощью 1cpp.dll ?

specx 14.09.2018 08:45

[quote=USSR;45986104] а нельзя было просто этот запрос из одной строчки выполнить с помощью 1cpp.dll ? [/quote]

подскаж, а ? мне надо, чтобы именно на скуле выполнилось. в хранимке.


Текущее время: 20:56. Часовой пояс GMT +3.