Имя: Пароль:
1C
1С v8
V82.Connection query parameters invalid
0 cfk
 
04.04.14
18:24
HIYA.
Посоны, памагите, ЧЯДНТ.
Есть коннекшн, в нем по его метаданным получаем значения перечисления и кладем в массив который тоже создан в том же коннекшене и указываем как параметр запроса в том же коннекшене. получаем неверные значения параметра для занчения данного параметра (ВидДоговора)

q2RemV82 = comV82Conn.NewObject("Query");
    q2RemV82.Text = "ВЫБРАТЬ ПЕРВЫЕ 1
                    |    КодыОрганизацииСрезПоследних.Организация
                    |ИЗ
                    |    РегистрСведений.КодыОрганизации.СрезПоследних КАК КодыОрганизацииСрезПоследних
                    |ГДЕ
                    |    КодыОрганизацииСрезПоследних.КодПоЕДРПОУ = &КодПоЕДРПОУОрганизации
                    |    И КодыОрганизацииСрезПоследних.Организация.ПометкаУдаления = ЛОЖЬ";
    q2RemV82.SetParameter("КодПоЕДРПОУОрганизации",sOrgVATCode);
    qrRemV82 = q2RemV82.Execute();
    
    If Not qrRemV82.IsEmpty() Then
        qRS = qrRemV82.Choose();
        While qRS.Next() Do
            q2RemV82.SetParameter("Организация",qRS.Организация);
        EndDo;    
    Else
        Message("Организация с КодПоЕДРПОУ <"+КодПоЕДРПОУ
            +"> в базе импорта не найдена.");
        Return Result;    
    EndIf;
    
    ttmRemV82 = comV82Conn.NewObject("TempTablesManager");    
    q2RemV82.TemptablesManager = ttmRemV82;
    
    aAccKindsAliases = steFilter["ВидДоговора"];    //это названия перечислений метаданных
    aRemV82AccKinds = comV82Conn.NewObject("Array");
    
    EnumValues = comV82Conn.Metadata.Enums.ВидыДоговоровКонтрагентов.EnumValues;
    For Each sAccKindAlias In aAccKindsAliases Do
        enFound = EnumValues.Find(sAccKindAlias);
        If enFound <> undefined Then
            aRemV82AccKinds.Add(enFound);
        Else
            Message("<"+sAccKindAlias+"> NF @ rem base");
          EndIf;
    EndDo;
    
    aParNames = New Array();
    aParNames.Add("Дата");
    aParNames.Add("Номер");
    aParNames.Add("ИНН");
    aParNames.Add("КодПоЕДРПОУ");
    
    vtAccsDetails = steFilter["РеквизитыДоговоров"];
    
    For Each sParName In aParNames Do        
        aCurrParValues = vtAccsDetails.UnloadColumn(sParName);
        If aCurrParValues.Count() > 0 Then
            q2RemV82.SetParameter(sParName,aCurrParValues);        
        EndIf;
    EndDo;
    //q2RemV82.SetParameter("ВидДоговора",aRemV82AccKinds);
    q2RemV82.SetParameter("ПустаяДата",Date("00000000000000"));
       //q2RemV82.SetParameter("Дата",vtAccsDetails.UnloadColumn("Дата"));
    //q2RemV82.SetParameter("Номер",vtAccsDetails.UnloadColumn("Номер"));    
    //q2RemV82.SetParameter("ИНН",vtAccsDetails.UnloadColumn("ИНН"));
    //q2RemV82.SetParameter("КодПоЕДРПОУ",vtAccsDetails.UnloadColumn("КодПоЕДРПОУ"));
    //q2RemV82.SetParameter("ВидДоговора",aRemV82AccKinds);    
    q2RemV82Pars = q2RemV82.FindParameters();
    q2RemV82.Text = "
    |ВЫБРАТЬ
    |    ДоговорыКонтрагентов.Владелец.Код КАК КодКонтрагента,
    |    ДоговорыКонтрагентов.Код КАК КодДоговора,
    |    ДоговорыКонтрагентов.ВидДоговора КАК ВидДоговора,
    |    ДоговорыКонтрагентов.Номер КАК Номер,
    |    ДоговорыКонтрагентов.Дата КАК Дата,
    |    ДоговорыКонтрагентов.Владелец.КодПоЕДРПОУ КАК КодПоЕДРПОУ,
    |    ДоговорыКонтрагентов.Владелец.ИНН КАК ИНН
    |ПОМЕСТИТЬ ПодходящиеРеквизитыДоговоров
    |ИЗ
    |    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
    |ГДЕ
    //|    НЕ ДоговорыКонтрагентов.Владелец.ИНН В (&ИНН)
    //|    И НЕ ДоговорыКонтрагентов.Владелец.КодПоЕДРПОУ В (&КодПоЕДРПОУ)
    //|    И
    |    ДоговорыКонтрагентов.Владелец.ПометкаУдаления = ЛОЖЬ
    |    И ДоговорыКонтрагентов.Владелец.ЭтоГруппа = ЛОЖЬ
    |    И ДоговорыКонтрагентов.ЭтоГруппа = ЛОЖЬ
    |    И ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ"
    +?(aRemV82AccKinds.Count()>0, ,"")+"
    //|    И ДоговорыКонтрагентов.ВидДоговора В(&ВидДоговора)
    |    И ДоговорыКонтрагентов.Дата <> &ПустаяДата
    |    И ДоговорыКонтрагентов.Организация = &Организация
1 cfk
 
04.04.14
18:27
(1)   +?(aRemV82AccKinds.Count()>0, ,"")+" - это лишнее тут

//|    И ДоговорыКонтрагентов.ВидДоговора В(&ВидДоговора) - это то, что было и на что ругается.

Просто вставил уже код, который будет подставлять ЗНАЧЕНИЕ(ЗанчениеПеречисления)
2 zladenuw
 
04.04.14
18:28
так опиши в запросе через значение. а не задавай в параметрах
3 cfk
 
04.04.14
18:31
спасибо кеп
4 cfk
 
04.04.14
19:36
По существу, кто-то что-то скажет?
Независимо от того, куда вы едете — это в гору и против ветра!