Имя: Пароль:
1C
 
1С проблема с запросом к написанной функции SQL с параметрами
,
0 olo_lo1
 
21.01.19
11:09
если запрос пишу вот так

Command.CommandText = ("Select [dbo].[ProductID](?,?)") а далее передаю параметры то запрос отрабатывает но на рекордсете нет нужных полей ..

если пишу так
Command.CommandText = ("Select * from [dbo].[ProductID](?,?)") то пишет ошибку [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'dbo.ProductID'.


Уже 3 часа бьюсь (((
1 youalex
 
21.01.19
11:11
Если не принципиально, вставляй значения параметров литералами прямо в текст запроса.
2 olo_lo1
 
21.01.19
11:13
(1) а как это поможет и как вставить ?
3 youalex
 
21.01.19
11:15
(2) какие у тебя параметры? и текст запроса (можно фрагмент) с ними
4 olo_lo1
 
21.01.19
11:22
Соединение = SQLServer.Подключиться();
        
    Command = Новый COMОбъект("ADODB.Command");
    RS      = Новый COMОбъект("ADODB.RecordSet");
        
    Command.ActiveConnection = Соединение;
    Command.CommandType = 8;
    Command.NamedParameters = True;
    //Command.CommandText = ("Select [dbo].[ProductID](?,?)");
    Command.CommandText = ("Select * from [dbo].[ProductID](?,?)");
    
    Парам = Новый COMОбъект("ADODB.Parameter");
    Парам.Name = "@Barcode";
    Парам.Direction = 1; //1 - adParamInput
    Парам.Type = 201; //
    Парам.Size = 40;                  
    Парам.Value = "22663484730011"; //пример штрихкода
    Command.Parameters.Append(Парам);
    
    Парам = Новый COMОбъект("ADODB.Parameter");
    Парам.Name = "@DepositorID";
    Парам.Direction = 1; //1 - adParamInput
    Парам.Type = 3; //
    Парам.Size = 99999;                  
    Парам.Value = 32;// пример
    Command.Parameters.Append(Парам);

    Состояние ("Выполнение запроса SQL...");
    RS = Command.Execute();
    
    Пока НЕ RS.EOF() Цикл
    
        prd_ID =  RS.Fields("prd_ID").Value;    
        RS.MoveNext();    
        
    КонецЦикла;
5 ДенисЧ
 
21.01.19
11:25
(4) А в RS.Fields какие колонки присутствуют по результату?
6 olo_lo1
 
21.01.19
11:29
(5) если выполнять по первому варианту без полей то вот

https://dropmefiles.com/N6FET
7 ДенисЧ
 
21.01.19
11:47
(6) это Select * ?
Видишь, там нет prd_Id...
8 youalex
 
21.01.19
11:50
(4)
Не понял сразу, что у тебя функция.

"Select [dbo].[ProductID]('22663484730011',1)"  - это чтобы не заворачиваться с параметрами ADO.

Если функция скалярная (возвращает одно значение), то можно задать псевдоним этого поля в резалте,  например как
"Select [dbo].[ProductID]('22663484730011',1) id"
9 olo_lo1
 
21.01.19
12:03
(8) БРАВО!!! Спасибо!!!!
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.