Имя: Пароль:
1C
1С v8
Как проверить, является ли переменная COM-соединения структурой?
0 grigoriy-1c
 
26.10.15
15:34
Добрый день. Проблема такая. Есть переменная типа ComОбъект. Надо проверить, является ли структурой. Известно, что ТипЗнч не работает в com-соединении, а метод XMLТипЗнч не работает для типа Структура. Идеи?
1 grigoriy-1c
 
26.10.15
15:41
Пока что в попытке проверяю вызов метода количество(), если вызывается исключение возвращаю ложь, иначе истина.
2 Cyberhawk
 
26.10.15
15:42
Количество() так-то не только у структуры есть...
3 H A D G E H O G s
 
26.10.15
15:47
XDTOSerializer.XMLТипЗнч(Новый СТруктура).TypeName
4 Ненавижу 1С
 
гуру
26.10.15
15:51
Соединение.String(Переменная)
5 Serginio1
 
26.10.15
15:54
Поизвращаться
структ=новый Структура("Дата","Клиент");
записьXml=Новый ЗаписьXML;
записьXml.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXML(записьXml,структ);
стр=записьXml.Закрыть();

ЧтениеXML = новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(стр);
ЧтениеXML.ПерейтиКСодержимому();

ПространствоИмен=ЧтениеXML.URIПространстваИмен;
Тип=ЧтениеXML.Имя;
6 Serginio1
 
26.10.15
16:08
Моржно еще сделать внешний Отчет В котором сделать экспортные функции которые могут использовать и Вычислить и Тип и прочие. Например v8: 8.2, COM-соединение, C#, dynamic строки
7 grigoriy-1c
 
26.10.15
16:58
(2) это да, но у меня либо строка, либо структура
(3) верно ответил, можно xdtoсериализатор использовать..ЧТо-то я не подумал..
Итого код такой
xmlтип = Соединение.СериализаторXDTO.XMLТипЗнч(com_Расшифровка);
    Если СериализаторXDTO.ИзXMLТипа(xmlтип.ИмяТипа, xmlтип.URIПространстваИмен) <> Тип("Структура") Тогда
        Возврат Неопределено;
    КонецЕсли;
8 Serginio1
 
26.10.15
17:06
7 Странно
XMLТипЗнч(структ) Выдает неопределено

а
СериализаторXDTO.XMLТипЗнч(структ)
выдает ТипДанныхXML
9 grigoriy-1c
 
26.10.15
20:07
(8) Верно :)
В этом и был вопрос.
10 RomanYS
 
26.10.15
20:13
А разве так не будет работать?
ЭтоСтруктура = (Соединение.ТипЗнч(Переменная) = Соединение.Тип("Структура"))
11 grigoriy-1c
 
26.10.15
20:23
(10) Не будет. Com-соединение с типзнч не работает и с тип возможно тоже
12 RomanYS
 
26.10.15
20:50
Тогда самое лаконичное в (4), точнее
ЭтоСтруктура = (Соединение.String(Переменная) = "Структура" и Переменная <> "Структура");
13 hhhh
 
27.10.15
01:28
(11) сам придумал?
AdBlock убивает бесплатный контент. 1Сергей