Имя: Пароль:
1C
 
Определение типа реквизита Объекта передаваемого по OLE
0 Pashkaa
 
13.11.09
14:06
При обмене по OLE получаю Объект (документ) из Источника в Приемник.

Объект имеет Реквизит допустим Контрагент. Тип реквизита Контрагент составной.

Как в Приемнике определить тип значения Объект.Контрагент, так не прокатывает

ТипЗнч(Объект.Контрагент)
Источник.ТипЗнч(Объект.Контрагент)


Туплю не пойму какую функцию использовать.
1 Pashkaa
 
13.11.09
14:29
ап
2 asady
 
13.11.09
14:59
юзай ТипЗнчXML()
3 Pashkaa
 
13.11.09
15:49
Или XMLТипЗнч?

я пробовал писать и так

Источник.XMLТипЗнч(Объект.Реквизит)

Вернулось ComОбъект
4 H A D G E H O G s
 
13.11.09
15:52
(3) а тебе что надо?
5 Pashkaa
 
13.11.09
15:55
(4) В Источнике реквизит документа Контрагент имеет составной тип СправочникСсылка.Склад + СправочникСсылка.Контрагент + .... (пример ПКО)

Я в приемнике получит Объект типа документ. Далее мне надо проверить какой тип имеет его Реквизит Контрагент. Т.к. он составной то может принимать разные значения.
6 ProxyInspector
 
13.11.09
16:04
Создай в глобальном модуле функцию
Функция  глТипЗнч(Объект)
 Возврат ТипЗнч(Объект);
КонецФункции

а потом пиши:
Источник.глТипЗнч(Объект.Контрагент);
7 ProxyInspector
 
13.11.09
16:07
Так же можно создать функцию
глXMLТипЗнч(объект)   - и она будет работать как надо
8 Pashkaa
 
13.11.09
16:10
(6) (7) Попахивает 7.7-ой :) Там тоже так часть функций приходилось переделывать.

Неужели нет больше выхода?
9 ProxyInspector
 
13.11.09
16:14
А кто говорил, что будет легко? И если ты хочешь красиво работать на 8-ке, то должен переделать 90% функционала :)
 Все это тянется из 7-ки
10 hhhh
 
13.11.09
16:14
(6) неужели сработает? Вроде всё равно Com-object будет.
11 asady
 
13.11.09
16:23
тТипЗнчОЛЕ=БазаОЛЕ.XMLTypeOf(СсылкаНаОбъектОЛЕ);
       тИмяТипа = тТипЗнчОЛЕ.ИмяТипа;
   тПоз=Найти(тИмяТипа,".");
   тВид=Лев(тИмяТипа,тПоз-1);
   тИмя=Сред(тИмяТипа,тПоз+1);
       Сообщить("вид "+тВид+" имя "+тИмя);
12 exchang
 
13.11.09
16:24
Вроде бы в соединение ты объект никак не вернешь, поскольку контекст другой.
Только по имени попробовать..

Для каждого Эл Из Реквизит.Type.Types() Цикл
  Сообщить(ТипЗнч(Эл));
КонецЕсли;
13 Pashkaa
 
13.11.09
16:30
(11) Ща попробую. Спасибо.
14 H A D G E H O G s
 
13.11.09
16:31
(5) Если
Источник.xmlТипЗнч(Объект.Контрагент)=ТИсточник.xmlТипЗнч(Источник.Справочники.Контрагенты.ПустаяСсылка()) Тогда
Сообщить("Это контрагент!");
КонецЕсли;
15 Pashkaa
 
13.11.09
16:43
Прикольно получил в виде строки "CatalogRef.КассыККМ"
16 Pashkaa
 
13.11.09
16:44
Это типа СправочникСсылка.КассыККМ
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший