Имя: Пароль:
1C
 
типы в com соединении
0 semiluki
 
09.10.21
18:20
Коллеги подскажите пожалуйста как через com соединение передать в запрос на стороне приемника типы документов. Делаю так

            Для Каждого ЭлементМассива Из ТипыДокументов Цикл
        
        Если ЭлементМассива = Тип("ДокументСсылка.ВозвратТоваровОтКлиента") Тогда
            Тип = ОбъектИБ.NewObject("ОписаниеТипов","ДокументСсылка.ВозвратТоваровОтПокупателя").Типы().Получить(0);
         ИначеЕсли ЭлементМассива = Тип("ДокументСсылка.ВозвратТоваровПоставщику") Тогда
            Тип = ОбъектИБ.NewObject("ОписаниеТипов","ДокументСсылка.ВозвратТоваровПоставщику").Типы().Получить(0);
        КонецЕсли;
        
        ТипыДокументовПриемник.Добавить(Тип);
    
          КонецЦикла;

Запрос = ОбъектИБ.NewObject("Запрос");
Запрос.УстановитьПараметр("ТипыДокументов",ТипыДокументовПриемник);

Запрос.Текст = " Выбрать * из МойРегистр
        |ГДЕ
    |
    |   ТИПЗНАЧЕНИЯ(МойРегистр.Регистратор) В (&ТипыДокументов)

Вываливается с ошибкой нельзя сравнивать поля неограниченной длины и не совместимых типов. Что я делю не так?
1 TormozIT
 
гуру
09.10.21
18:48
Все не примитивные типы в 1С за COM прослойкой всегда видны как COMОбъект, т.е. являются чужими и непонятными другой стороне от COM прослойки. Чтобы на другой стороне построить значения таких типов из своих, нужно разобрать их до примитивных (сериализовать) и на другой стороне собрать из заново (десериализовать). Во многих случаях хватит штатных методов сериализации.
2 ДенисЧ
 
09.10.21
18:48
Проще собрать в динамике запрос с ГДЕ Регистратор Ссылка %Тип1%" ИЛИ...
3 Chai Nic
 
09.10.21
19:00
(1) Даже с примитивными типами бывает засада. Например, в случае нецелых чисел они в COM преобразуются в плавающую точку, что может привести (и приводит) к потерям точности. Так что сериализация - лучший костыль для этой кривой технологии.
4 RomanYS
 
09.10.21
19:01
(0) ТипыДокументовПриемник где инициализировано? Скорее всего ошибка там
5 RomanYS
 
09.10.21
19:03
а так проще
ГДЕ ТИПЗНАЧЕНИЯ(МойРегистр.Регистратор) В (ТИП(Документ.ВозвратТоваровОтПокупателя), ТИП(Документ.ВозвратТоваровПоставщику))
Закон Брукера: Даже маленькая практика стоит большой теории.