Добрый день!
Имеется 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 = Неопределено;
USE NAuser; EXEC dbo.Base1C_TO_SQL;
Проблема решена.
Решение:
В хранимой процедуре передавались параметры типа 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
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua