|  | v8.2 Как определить тип ХранилищеЗначение  COM объекта | ☑ | 
    
        | 0
    
        ЭЦ   08.08.12✎ 11:23 | 
        ГОСПОДА !
 Имеется ComСоединение
 Требуется прочитать значения реквизитов справочника все за исключенем
 тех которые имеют тип ХранилищеЗначения.
 Код типа :
 Если ComСоединение.ТипЗНЧ(РекСправ) = ComСоединение.Тип("ХранилищеЗначения") Тогда
 ...
 КонецЕсли;
 - не работает
 Прошу подсказать как это правильно записать.
 |  | 
    
        | 1
    
        бомболюк   08.08.12✎ 11:28 | 
        можно сделать так: использовать функцию ЗначениеВСтрокуВнутр, а потом анализировать подстроку между 1-й и 2-й запятой (там ГУИД какой то), она для каждого типа своя и постоянная.     |  | 
    
        | 2
    
        ЭЦ   08.08.12✎ 11:43 | 
        (1) Получил : "{"#",2319dcf1-f4ee-438d-b16f-6a145d6b9422}"     |  | 
    
        | 3
    
        Kashemir   08.08.12✎ 11:46 | 
        Можно конечно сериализировать через хтдо и вытянуть на вызывающую сторону - но это конечно кривое решение.     |  | 
    
        | 4
    
        Лоботряс   08.08.12✎ 12:14 | 
        А по Метаданным отфильтровать реквизиты с нужным типом нельзя?     |  | 
    
        | 5
    
        ЭЦ   08.08.12✎ 12:19 | 
        (4)
 Попытка
 Мтд = РекСпр.Метаданные();
 Исключение
 КонецПопытки;
 Вызывает исключение
 |  | 
    
        | 6
    
        Ksandr   08.08.12✎ 12:21 | 
        ComСоединение.String(ComСоединение.ТипЗНЧ(РекСправ)) говорит что нить?     |  | 
    
        | 7
    
        Kashemir   08.08.12✎ 12:28 | 
        (6) Проверял ?     |  | 
    
        | 8
    
        Kashemir   08.08.12✎ 12:29 | 
        +(3) Вобщем если не лень перетягивать значение на вызывающую сторону - то 
 
 Функция ПолучитьПроизвольноеЗнчСОМ(Соединение, ЗначениеСОМ)
 ХранилищеВнешнее = Соединение.NewObject("ХранилищеЗначения", ЗначениеСОМ, Соединение.NewObject("СжатиеДанных",9));
 ЗаписьXML = Соединение.NewObject("ЗаписьXML");
 ЗаписьXML.УстановитьСтроку();
 Соединение.СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ХранилищеВнешнее);
 ХранилищеВСтроке = ЗаписьXML.Закрыть();
 
 ЧтениеXML = Новый ЧтениеXML;
 ЧтениеXML.УстановитьСтроку(ХранилищеВСтроке);
 Возврат СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
 КонецФункции
 |  | 
    
        | 9
    
        Лоботряс   08.08.12✎ 12:31 | 
        (5)А "V82.COMConnector" или "V82.Application"?;     |  | 
    
        | 10
    
        ЭЦ   08.08.12✎ 12:42 | 
        (6) Говорит : Метод объекта не обнаружен (ТипЗНЧ)
 а вот
 ComСоединение.String(РекСправ)
 говорит - "ХранилищеЗначения"
 так что Ksandrу спасибо
 |  | 
    
        | 11
    
        ЭЦ   08.08.12✎ 12:49 | 
        (9) COMConnector     |  | 
    
        | 12
    
        olegves   08.08.12✎ 13:07 | 
        Описание типов пробовал?     |  | 
    
        | 13
    
        olegves   08.08.12✎ 13:43 | 
        (12) или 
 ComСоединение.XMLТип(РекСправ)
 |  | 
    
        | 14
    
        ЭЦ   08.08.12✎ 13:44 | 
        (12,13) Меня устраивает (10)     |  | 
        Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший