Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выполнение хранимой процедуры
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Yoja
Добрый день!
Имеется 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
Цитата(Yoja @ 28.07.14, 15:51) необходимо зарегистрироваться для просмотра ссылки
Код выполняется, но нового сотрудника не добавляет

А где в коде добавление сотрудника?
Yoja
Цитата(logist @ 28.07.14, 16:56) необходимо зарегистрироваться для просмотра ссылки
А где в коде добавление сотрудника?


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

Выполняя код из БД, все срабатывает
USE NAuser; EXEC dbo.Base1C_TO_SQL;
Yoja
Проблема решена.
Решение:
В хранимой процедуре передавались параметры типа 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 - (значение по умолчанию) – сервер баз данных определяет тип команды самостоятельно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.