v8: Запуск хранимых процедур с 1с 8.1 #444958


#0 by Renat11111
Добрый день. Возник такой вопрос. Надо программно из 1с подключиться к базе данных СКЛ2005, запустить хранимую процедуру, которая добавит что-то в таблицу. Допустим есть база "Test", в ней есть таблица Table_1 с одной колонкой Col1. Есть хранимая процедура, например InsertData, которая добавляет строку в таблицу. Есть следующий код:     Проблема состоит в следующем: процедура запускается, но добавляет пустую строчку в таблицу. Я так понимаю неправильно заполняю или передаю параметр. Подскажите плиз что не так делаю. П.С. Сама процедура рабочая, так как если запускать ее в менеджмент студио, нормально добавляет значение в таблицу
#1 by mselling_ru
строказапроса как в студии
#2 by Renat11111
InsertData это хранимая процедура, в которой прописан след. код:  INSERT INTO Table_2(Col1) VALUES (@param1) Пример дан упрощенный. Но почему-то в таком варианте записывает пустые строки в таблицу. Хотя при вызове из студио нормально добавляет значения
#3 by mselling_ru
#4 by Renat11111
Да нету никаких ошибок. Коннект с базой идет, процедура вызывается, но вместо переданного значения добавляет 0!
#5 by shuhard
[par = Command.CreateParameter("@param1",3,1,4,0);] типы данных соответствуют 777 ?
#6 by Renat11111
Все соответствует. Тип параметра (Type) 3 - это integer Взято из MSDN: adEmpty - значение не задано. adSmallInt - двухбайтное целое со знаком. adInteger - четырёхбайтное целое со знаком. adSingle - число с плавающей запятой с одинарной точностью. adDouble - число с плавающей запятой с двойной точностью. adCurrency - денежная сумма с фиксированной точкой с четырьмя цифрами справа от десятичной точки (восьмибайтное целое число со знаком). ... ...
#7 by mselling_ru
не мешай человеку через ж..опу делать.
#8 by shuhard
+ может в лоб сделать, а'ля MSDN Set objParm1 = objCmd.CreateParameter("CustId", adChar, _
#9 by shuhard
поставь для проверки par = Command.CreateParameter("@param1",3,1,4,777)
#10 by Renat11111
mselling_ru не мешай человеку через ж..опу делать. объясни плиз что тут через ж..опу???? поставь для проверки Не помогает...
#11 by mselling_ru
у кого ж..опа у тебя или у меня? что за вопросы?
#12 by shuhard
т.е. код стал ?
#13 by Renat11111
у кого ж..опа у тебя или у меня? что за вопросы? вполне нормальные вопросы.. Обычным текстом запроса параметры в хранимую процедуру ты не передашь!!! ты или давай нормальные ответы или вообще ничего не пиши!
#14 by Renat11111
т.е. код стал ? пробовал и так... тоже не помогает! Все-равно пишется 0 в таблицу
#15 by shuhard
[Обычным текстом запроса параметры в хранимую процедуру ты не передашь] давно было, вроде катит: select InsertData должен работать, проверь в QA
#16 by AHgpuXa
#17 by Renat11111
Проблема решена. Всем отозвавшимся спасибо. Если кому интересно, проблема была в следующем: при создании хранимой процедуры в параметры были записаны значения по умолчанию. тоесть: Create Procedure InsertData(@id numeric = 0 out, @param1 varchar = '', @param2 numeric = 0) и почему-то они не заменялись передаваемыми параметрами. Убрал значения по умолчанию, все заработало. Правда пока не понял почему. Теперь еще один вопрос. Первый параметр выходной. Как мне получить его значение после выполнения процедуры. В самой процедуре он записывается. Что-то типа след. кода:    INSERT INTO Table_1(Col1, Col2) VALUES (@param1, @param2) Когда пытаюсь получить его в выборке: выдает след. ошибку: Ошибка при вызове метода контекста (EOF): Произошла исключительная ситуация (ADODB.Recordset): Операция не допускается, если объект закрыт.
#18 by mselling_ru
"Обычным текстом запроса параметры в хранимую процедуру ты не передашь!!! " - c какого перепугу? у меня на этом весь обмен построен, а я не знал :)
#19 by Renat11111
Ну напиши как мне в моем конкретном случае вызвать мою процедуру с передачей параметров. Дай текст запроса!
#20 by mselling_ru
с сайта скачай, там целых две обработки и для 77 и для 81.
#21 by Renat11111
ссылку дай. буду благодарен. только думаю что в моем конкретном случае это не подойдет
#22 by mselling_ru
упал под стол
#23 by Renat11111
падай дальше
#24 by Renat11111
Нормальные люди нормально отвечают на вопросы! В отличие от некоторых!
#25 by mselling_ru
с чего ты взял что ты нормальный? в Эстонии все такие сообразительные?
#26 by Renat11111
Ты знаешь, я вот тут сижу и думаю, зачем это тупые разработчики придумали передачу параметров, их типов, размера и т.д. Нефиг было им чем заняться?? Тут нашелся умный   mselling_ru и сказал: "Ребята, так вы ж все через ж..пу сделали. Так неправильно. У меня есть другой метод. Надо прямо в тексте запроса на скл параметры в процедуры передавать!!!". Может ты им предложишь свою рационализаторскую идею???? Они ж фигню сделали, а ты у нас умный очень, решил что так через ж..пу!!!
#27 by lxs
отмечусь
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С