К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

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

0 - 12.09.2018 - 16:59
Добрый день !

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

спасибо.



1 - 12.09.2018 - 17:58
через ADODB.Connection и ADODB.Command
параметры, как вариант, можно передавать в Command.CommandText как ="exec sp_Name 'param1,param2,...'"
ЗЫ
поиск в гугле по сабжу выдает дополнения)
2 - 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
Гость
3 - 13.09.2018 - 18:22
а нельзя было просто этот запрос из одной строчки выполнить с помощью 1cpp.dll ?
4 - 14.09.2018 - 08:45
Цитата:
Сообщение от USSR Посмотреть сообщение
а нельзя было просто этот запрос из одной строчки выполнить с помощью 1cpp.dll ?
подскаж, а ? мне надо, чтобы именно на скуле выполнилось. в хранимке.

Отредактировано specx; 14.09.2018 в 08:47. Причина: 1


К списку вопросов
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск




Copyright ©, Все права защищены