Имя: Пароль:
1C
1С v8
как передать перечисления в параметр запроса в среде com 1c 8
0 iva77ru
 
14.02.18
16:32
1С:Предприятие 8.3 (8.3.10.2667)
Зарплата и управление персоналом, редакция 3.1 (3.1.4.171)
Доброго дня!
Нужна помощь. Не могу передать значение перечисление в запрос в базе, подключенной по COM

    Запрос = COMОбъект.NewObject("Запрос");
    Запрос.Текст = "
    |ВЫБРАТЬ
    |    ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо.Код как КодФизЛица,
    |    ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Банк.ИНН как ИНН
    |ИЗ
    |    Документ.ЗарплатаКВыплатеОрганизаций.Зарплата КАК ЗарплатаКВыплатеОрганизацийЗарплата
    |ГДЕ
    |    ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Организация = &Организация
    |    И ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.ПериодРегистрации = &ПериодРегистрации
    |    И ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.СпособВыплаты.Ссылка = &СпособВыплаты
    |
    |СГРУППИРОВАТЬ ПО
    |    ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо,
    |    ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Банк";
    
    Запрос.УстановитьПараметр("Организация",    ОргКом);     //Организации
    Запрос.УстановитьПараметр("ПериодРегистрации",    ДтРегВыплат);     //Дата

    КоличествоЗначенийПеречисления=COMОбъект.Метаданные.Перечисления["СпособыВыплатыЗарплаты"].ЗначенияПеречисления.Количество();
    КолекцияЗначенийПеречисления = COMОбъект.Метаданные.Перечисления["СпособыВыплатыЗарплаты"].ЗначенияПеречисления;
    СсылкаНаПеречислениеCOM = "";
    //Перебор коллекции значений перечисления
    Для каждого Эл из КолекцияЗначенийПеречисления Цикл
        Если Эл.Name = "ЧерезБанк" Тогда
        
            СсылкаНаПеречислениеCOM = Эл;     
        
        КонецЕсли;
        //Сообщить(знач.Имя);
    КонецЦикла;
    Запрос.УстановитьПараметр("СпособВыплаты",    СсылкаНаПеречислениеCOM);     //Способы выплаты зарплаты
    
    РезультатЗапроса = Запрос.Выполнить();

Вылетает ошибка:
{ВнешнийОтчет.ВнешнийОтчет1.Форма.ФормаОтчета.Форма(383)}: Ошибка при вызове метода контекста (Выполнить)
    РезультатЗапроса = Запрос.Выполнить();
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.3.10.2667): {(10, 68)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
И ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.СпособВыплаты.Ссылка <<?>>= &СпособВыплаты
1 Alex87r
 
14.02.18
16:38
СпособВыплаты = COMОбъект.Перечисления.СпособыВыплатыЗарплаты.ЧерезБанк


А так нельзя?
2 Tateossian
 
14.02.18
16:43
(1) Можно.
3 iva77ru
 
14.02.18
16:51
Спасибо, я все усложнил...
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.