Версия для печати темы (https://pro1c.org.ua/index.php?s=b9f1f4031e9c1fdf314644f48bae6961&showtopic=19024)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Выполнение хранимой процедуры

Автор: Yoja 28.07.14, 15:51

Добрый день!
Имеется 1С 8.2 ЗУП
Написал внешнюю обработку, которая должна выгружать новых сотрудников в таблицу SQL Server 2000
На сервере, создал хранимую процедуру, ее проверил - работает
Base1C_TO_SQL - название хранимой процедуры.
В процедуру должны передаваться параметры, но если их нет, то есть значение по умолчанию.

Код выполняется, но нового сотрудника не добавляет, ошибок не выдает.

помогите, уже целый день на это угробил

Вот код подключения:

    
       mServerAddress = "192.168.1.1";
       mDataBase = "NAuser";
       mUsername = "root";
       mPassword = "root";
       mPort       = "3603";
  
    СтрокаПодключения =
    "Provider=SQLOLEDB.1;
    |User ID="+mUsername+";
    |Pwd="+mPassword+";
    |Data Source="+mServerAddress+";
    |Initial Catalog ="+ mDataBase+"";
    
    Connection  = Новый COMОбъект("ADODB.Connection");
    Command  = Новый COMОбъект("ADODB.Command");
    RecordSet  = Новый COMОбъект("ADODB.RecordSet");
    
     Попытка
     Connection.Open(СокрЛП(СтрокаПодключения));
     Command.ActiveConnection   = Connection;
     Command.CommandText = "USE NAuser; EXEC dbo.Base1C_TO_SQL;";
     RecordSet = Command.Execute();
    Исключение
     Сообщить(ОписаниеОшибки());
    КонецПопытки;
    
    Command = Неопределено;
    Connection = Неопределено;
    RecordSet = Неопределено;




Спасибо за конструктивные ответы

Автор: logist 28.07.14, 15:56

Цитата(Yoja @ 28.07.14, 15:51) *
Код выполняется, но нового сотрудника не добавляет

А где в коде добавление сотрудника?

Автор: Yoja 28.07.14, 16:02

Цитата(logist @ 28.07.14, 16:56) *
А где в коде добавление сотрудника?


В данном случае, сама хранимая процедура выполняется, и при этом в ней забиты параметры по умолчанию (для тестов), если я щас не передаю никаких параметров, то она просто добавляет мне одного и того же тестового сотрудника.
----

Выполняя код из БД, все срабатывает
USE NAuser; EXEC dbo.Base1C_TO_SQL;

Автор: Yoja 05.08.14, 12:53

Проблема решена.
Решение:
В хранимой процедуре передавались параметры типа DATETIME
Microsoft SQL Server Management Studio 2010
пропустил переменную со значение типа '01.01.1980'
а Microsoft SQL Server Management Studio 2012 сообщил что нужно сделать CONVERT(datetime, '01.01.1980')
и + в 1С при передачи параметра типа дата преобразовал в формат в соответствии с форматом в БД SQL yyyy.MM.dd

вот и все

и вот еще, код, с передаваемыми параметрами в хранимую процедуру изменился так

Command.CommandText = "USE [NAuser]; EXEC [dbo].[Base1C_TO_SQL] @cN='"+cN+"',@cD ='"+cD+"';";   
         Command.CommandType = 8;


Command.CommandType

4 - означает хранимую процедуру.
8 - (значение по умолчанию) – сервер баз данных определяет тип команды самостоятельно.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua