Имя: Пароль:
1C
1C 7.7
v7: Ругается "Недопустимое значение индекса параметра"
0 zenon46
 
28.09.21
16:27
Доброго дня!
Почему ругается при выполнении скалярного : сам запрос
|@Товар = ?
|SELECT
|    Рег.КоличествоОстаток AS Резервы
|FROM
|    $РегистрОстатки.РезервыТМЦ(:ВыбДата~,,Фирма = :ВбрФирма AND Номенклатура = @Товар,(Номенклатура),(Количество)) AS Рег
|";    
RS_1.УстановитьТекстовыйПараметр("ВбрФирма",глКонстанта("ФирмаОсновногоСклада"));    
RS_1.УстановитьТекстовыйПараметр("ДатаТА",ПолучитьДатуТА());    
RS_1.Подготовить(ТекстЗапроса);
RS_1.ПостроитьПараметры();

Далее в функции вызываю :
Товар - ссылка на элемент справочника "Номенклатура"

RS_1.УстПараметр(1,Товар);    
КолРез = RS_1.ВыполнитьСкалярный();
1 ДенисЧ
 
28.09.21
16:36
2 zenon46
 
28.09.21
16:43
(1)     так тоже не стартует
        |SET NoCount ON
    |DECLARE @Товар Char(9)
    |Set @Товар = ?
    |SELECT
    |    Рег.КоличествоОстаток AS Резервы
    |FROM
    |    $РегистрОстатки.РезервыТМЦ(:ВыбДата~,,Фирма = :ВбрФирма AND Номенклатура = @Товар,(Номенклатура),(Количество)) AS Рег
    |";    
    RS_1.Подготовить(ТекстЗапроса);    
    RS_1.ПостроитьПараметры();
    RS_1.УстановитьТекстовыйПараметр("ВбрФирма",глКонстанта("ФирмаОсновногоСклада"));    
    RS_1.УстановитьТекстовыйПараметр("ВыбДата",ПолучитьДатуТА());
3 Chai Nic
 
28.09.21
16:46
Не выеживайся и делай через текстовый параметр.
4 zenon46
 
28.09.21
16:46
Раньше был такой, он работал, а вот с ВТ что-то не получается запустить

|SELECT
|    SUM($Рег.Количество) as Количество
|FROM
|   $РегистрИтоги.РезервыТМЦ as Рег
|WHERE
|  Рег.PERIOD = cast($НачалоПериода.Месяц(:ДатаТА,Строка) as datetime) AND
|  $Рег.Номенклатура = ? AND
|  $Рег.Фирма = :ВбрФирма
|";
5 trad
 
28.09.21
18:02
вместо ПостроитьПараметры() попробуй явно ДобПараметр(1, 14, 9, 0)
6 zenon46
 
28.09.21
18:10
(5) как понимать эту запись ? "ДобПараметр(1, 14, 9, 0)"
7 Mikeware
 
28.09.21
18:21
(6) ДобПараметр / AddParam
Синтаксис: ДобПараметр(IOType, DBType, Len, Prec)

Параметры:
IOType - тип: Число. Направления параметра:

1 - DBPARAMIO_INPUT;
2 - DBPARAMIO_OUTPUT;
3 - DBPARAMIO_INPUT | DBPARAMIO_OUTPUT.
DBType - тип: Число. DBTYPE-тип параметра.

Len - тип: Число. Длина параметра.

Prec - тип: Число. Точность параметра.

Описание: добавляет описание параметра для параметризированного запроса.
8 trad
 
28.09.21
18:33
миста - внештатная справка
9 Ёпрст
 
28.09.21
18:51
нахрена только ТС параметизированный запрос - загадка..
Или он это чудо в цикле выполнять собрался ?
)))
10 zenon46
 
28.09.21
18:53
(9) да отображение резерва в ТЧ документа
11 Ёпрст
 
28.09.21
19:00
(10) получай для всех строк тч один раз останки и потом ищи их в итз
12 Ёпрст
 
28.09.21
19:01
+ или по кнопке или по таймеру обновление итз
13 zenon46
 
28.09.21
19:17
Запрос запустился, вот только на выходе 0, что не правильно ?


    |Set NOCOUNT ON
        |Declare @Товар VarChar(9)    
    |Set @Товар = ?
    |SELECT
    |    Рег.КоличествоОстаток AS Резервы
    |FROM
    |    $РегистрОстатки.РезервыТМЦ(:ВыбДата~,,Фирма = :ВбрФирма AND Номенклатура = @Товар,(Номенклатура),(Количество)) AS Рег
    |";
    RS_1.УстановитьТекстовыйПараметр("ВыбДата",ПолучитьДатуТА());
    RS_1.УстановитьТекстовыйПараметр("ВбрФирма",глКонстанта("ФирмаОсновногоСклада"));    
    RS_1.ДобПараметр(1,10,17,0);
        RS_1.ДобПараметр(1,14,9,0);
    RS_1.ДобПараметр(1,14,9,0);
    RS_1.Подготовить(ТекстЗапроса);    
       RS_1.УстПараметр(1,ПолучитьДатуТА());
       RS_1.УстПараметр(2,глКонстанта("ФирмаОсновногоСклада"));
        RS_1.УстПараметр(3,Товар);    
        КолРез = RS_1.ВыполнитьСкалярный();
14 zenon46
 
28.09.21
19:26
Последние 2 строки, вызываются через функцию, я для удобства чтения объединил.
15 zenon46
 
28.09.21
19:46
Все ребзо, разобрался, спасибо за наводку!