На сервере есть база не 1С, где есть хранимая процедура
p_Insert_Juridical_Perosn:
CREATE Procedure [dbo].p_Insert_Juridical_Perosn
@asABBREVIATED_NAME varchar(20) ,
@asFIRM_NAME varchar(300),
@asINN varchar(12),
@asTelePhone varchar(20),
@asCountry varchar(30),
@asState varchar(30),
@asCity varchar(30),
@asStreet varchar(30),
@asHouse_Number varchar(10),
@asApartment_Number varchar(10),
@asRegion varchar(30),
@asZip varchar(10),
@asBuilding varchar(10),
@asNP varchar(40),
@asRet int output
AS
DECLARE @SUBJECT_ID as bigint
SELECT @SUBJECT_ID=SUBJECT_ID
from JURIDICAL_PERSON
WHERE ABBREVIATED_NAME=@asABBREVIATED_NAME
if @@ROWCOUNT=0
begin
set @asRet=1
insert into SUBJECT (SUBJECT_TYPE_ID) values ('JURIDICAL_PERSON')
set @SUBJECT_ID=@@IDENTITY
insert into JURIDICAL_PERSON (SUBJECT_ID) values(@SUBJECT_ID)
end
else
begin
set @asRet=0
end
UPDATE JURIDICAL_PERSON
set ABBREVIATED_NAME=@asABBREVIATED_NAME,
FIRM_NAME=@asFIRM_NAME,
INN=@asINN,
POST_ADDR_EQU_JUR_ADDR=1,
[ORG_FORM]=6
where SUBJECT_ID=@SUBJECT_ID
SELECT SUBJECT_ID FROM dbo.ADDRESS WHERE SUBJECT_ID=@SUBJECT_ID
if @@ROWCOUNT=0
begin
insert into ADDRESS (SUBJECT_ID,ADDRESS_TYPE) values (@SUBJECT_ID,3)
end
UPDATE ADDRESS set [COUNTRY]=@asCountry,
[STATE]=@asState,
[CITY]=@asCity,
[STREET]=@asStreet,
[HOUSE_NUMBER]=@asHouse_Number,
[APARTMENT_NUMBER]=@asApartment_Number,
[REGION]=@asRegion,
[ZIP]=@asZip,
[BUILDING]=@asBuilding,
[NP]=@asNP
where SUBJECT_ID=@SUBJECT_ID and ADDRESS_TYPE=3
SELECT SUBJECT_ID FROM dbo.CONNECT_COORD WHERE SUBJECT_ID=@SUBJECT_ID
if @@ROWCOUNT=0
begin
INSERT INTO CONNECT_COORD([SUBJECT_ID],
[HOME_PHONE])
VALUES(@SUBJECT_ID,
@asTelePhone)
end
else
begin
UPDATE CONNECT_COORD set HOME_PHONE=@asTelePhone
where SUBJECT_ID=@SUBJECT_ID
end
GO
Мне очень хочется выполнить её, но что-то никак не получается. Делаю так:
ОДБЦБаза.Соединение(ConnectionString);
РСЮрЛица = СоздатьОбъект("ODBCRecordSet");
РСЮрЛица.УстБД(ОДБЦБаза);
РСЮрЛица.Подготовить("{call p_Insert_Juridical_Perosn (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
РСЮрЛица.ДобПараметр(1,15,20,0,"@asABBREVIATED_NAME");//asABBREVIATED_NAME
РСЮрЛица.ДобПараметр(1,15,300,0,"@asFIRM_NAME");//asFIRM_NAME
РСЮрЛица.ДобПараметр(1,15,12,0,"@asINN");//asINN
РСЮрЛица.ДобПараметр(1,15,20,0,"@asTelePhone");//asTelePhone
РСЮрЛица.ДобПараметр(1,15,30,0,"@asCountry");//asCountry
РСЮрЛица.ДобПараметр(1,15,30,0,"@asState");//asState
РСЮрЛица.ДобПараметр(1,15,30,0,"@asCity");//asCity
РСЮрЛица.ДобПараметр(1,15,30,0,"@asStreet");//asStreet
РСЮрЛица.ДобПараметр(1,15,10,0,"@asHouse_Number");//asHouse_Number
РСЮрЛица.ДобПараметр(1,15,10,0,"@asApartment_Number");//asApartment_Number
РСЮрЛица.ДобПараметр(1,15,30,0,"@asRegion");//asRegion
РСЮрЛица.ДобПараметр(1,15,10,0,"@asZip");//asZip
РСЮрЛица.ДобПараметр(1,15,10,0,"@asBuilding");//asBuilding
РСЮрЛица.ДобПараметр(1,15,40,0,"@asNP");//asNP
//------
РСЮрЛица.УстПараметр(1,СокрЛП(ЛЕВ(Контрагент.Наименование,20)));
РСЮрЛица.УстПараметр(2,СокрЛП(ЛЕВ(Контрагент.ПолнНаименование,300)));
РСЮрЛица.УстПараметр(3,СокрЛП(ЛЕВ(Контрагент.ИНН,12)));
РСЮрЛица.УстПараметр(4,СокрЛП(ЛЕВ(Контрагент.Телефоны,20)));
РСЮрЛица.УстПараметр(5,Страна);
РСЮрЛица.УстПараметр(6,СокрЛП(ЛЕВ(Контрагент.Регион.Наименование,30)));
РСЮрЛица.УстПараметр(7,СокрЛП(ЛЕВ(Контрагент.Город.Наименование,30)));
РСЮрЛица.УстПараметр(8,СокрЛП(ЛЕВ(Контрагент.Улица.ПолноеНазвание,30)));
РСЮрЛица.УстПараметр(9,СокрЛП(ЛЕВ(Контрагент.Дом,10)));
РСЮрЛица.УстПараметр(10,СокрЛП(ЛЕВ(Контрагент.Кв_Оф,10)));
РСЮрЛица.УстПараметр(11,СокрЛП(ЛЕВ(Контрагент.Район.Наименование,30)));
РСЮрЛица.УстПараметр(12,СокрЛП(ЛЕВ(Контрагент.Индекс,10)));
РСЮрЛица.УстПараметр(13,СокрЛП(ЛЕВ(Контрагент.Корпус,10)));
РСЮрЛица.УстПараметр(14,СокрЛП(ЛЕВ(Контрагент.НасПункт.ПолноеНазвание,40)));
[b]Рез = РСЮрЛица.Выполнить();[/b]
Если Рез=0 Тогда
Сообщить(РСЮрЛица.ПолучитьОписаниеОшибки());
Иначе
ВозвращаемоеЗначение = Число(РСЮрЛица.ПолучПараметр(15)); //чтение параметра типа OUTPUT после выполнения.
Если ВозвращаемоеЗначение=0 Тогда
Сообщить("Уже юыл! ");
Иначе
Сообщить("Добавили!");
КонецЕсли;
КонецЕсли;
Почему-то
Рез всегда = 0 , а профайлер вообще ничего не отлавливает. Ошибки тоже никакой не сообщает.
Пробывал делать так:
РСЮрЛица.Подготовить("EXEC p_Insert_Juridical_Perosn ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?");
Тоже не катит...
Подскажите, где туплю... Как правильно?