|
Определение типа реквизита Объекта передаваемого по 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
|
Это типа СправочникСсылка.КассыККМ
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший