|
Определить Тип объекта через сом соединение | ☑ | ||
---|---|---|---|---|
0
SlavCO
21.04.13
✎
15:59
|
Всем привет.
Стоит задача перезалить в базу 1 из базы 2 некоторые документы. Если в реализации товаров в базе2 поле сделка имеет тип "Счет на оплату покупателю", то предварительно залить этот счет, а уже потом эту реализацию Столкнулся с тем, что не получается определить тип поля "Сделка" и узнать что там стоит - счетнаоплату или заказ Может кто-нибудь стыкался с такой проблемой? |
|||
1
craxx
21.04.13
✎
15:59
|
Волшебное слово Метаданные
|
|||
2
SlavCO
21.04.13
✎
16:01
|
Я так и думал, но чуть поподробнее, плз
|
|||
3
craxx
21.04.13
✎
16:02
|
конкретно Метаданные.Имя
|
|||
4
SlavCO
21.04.13
✎
16:04
|
У меня есть переменная док, которая имеет тип com объект. док.метаданные.имя - выдает ошибку :(
|
|||
5
craxx
21.04.13
✎
16:05
|
кусок кода полностью сюда запости
|
|||
6
SlavCO
21.04.13
✎
16:08
|
док = ком.Документы.РеализацияТоваровУслуг.НайтиПоНомеру(ном,ДатаЗ);
Теперь мне нужно определить тип поля док.сделка |
|||
7
SlavCO
21.04.13
✎
16:09
|
док.сделка.метаданные.имя - ошибка
|
|||
8
SlavCO
21.04.13
✎
16:10
|
Сорри, я Лошара. () не поставил после метаданные. Извини.
Спасибо и большой Респект |
|||
9
Wobland
21.04.13
✎
16:10
|
(7) в которой русским языком всё написано, да?
|
|||
10
craxx
21.04.13
✎
16:10
|
Если Док.Сделка<>Неопределено Тогда
Если Док.Сделка.Метаданные.Имя="ЗаказПокупателя" Тогда //............................................ КонецЕсли; КонецЕсли; |
|||
11
GANR
21.04.13
✎
16:12
|
// пример 1
СсылкаCOM = COM.ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(Ссылка)); СсылкаЭтаБаза = ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(СсылкаCOM)); Если ТипЗнч(СсылкаЭтаБаза) = тип("ДокументСсылка.Документ1") Тогда // ... ИначеЕсли ТипЗнч(СсылкаЭтаБаза) = тип("ДокументСсылка.Документ2") Тогда // ... Иначе ВызватьИсключение "Непригодный тип документа"; КонецЕсли; // пример 2 ПолноеИмя =СсылкаCOM.Метаданные().ПолноеИмя(); Имя = СсылкаCOM.Метаданные().Имя; |
|||
12
SlavCO
21.04.13
✎
16:12
|
Все уже работает, я кавычки забыл поставить. Всем спасибо и хорошего настроения
|
|||
13
craxx
21.04.13
✎
16:14
|
(11)не прокатит... у тебя ком, там все типы имеют "СОМобъект"
|
|||
14
craxx
21.04.13
✎
16:14
|
и внутреннее значение тоже тупо другое будет
|
|||
15
GANR
21.04.13
✎
16:15
|
(13) это лишь примеры - не рабочий код
|
|||
16
GANR
21.04.13
✎
16:18
|
(13) ЗначениеВСтрокуВнутр / ЗначениеИзСтрокиВнутр спасали нас не раз уже.
|
|||
17
GANR
21.04.13
✎
16:25
|
Да, +(11)(13), исправим
СсылкаCOM = COM.ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(Ссылка)); СсылкаЭтаБаза = ЗначениеИзСтрокиВнутр(COM.ЗначениеВСтрокуВнутр(СсылкаCOM)); |
|||
18
craxx
21.04.13
✎
16:29
|
(17) да не прокатит такой вариант...
не факт что одинаковые айдишники обоих документов для перечислений вероятность такого больше, если конфы идентичные |
|||
19
GANR
21.04.13
✎
16:39
|
(18) Если одна конфа копия другой - ссылки будут одинаковые и GUIDы (или UUID) м е т а д а н н ы х тоже. Вот имена таблиц в MS SQL будут разными - это да. И ЗначениеВстрокуВнутр в разных базах из-за этого вернет неодинаковое значение - были споры по этому поводу
v8: ЗначениеИзСтрокиВнутр разные строки, ссылка одна. http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=605639#605639 |
|||
20
GANR
21.04.13
✎
16:43
|
+(19) За конфу cf-cfu не ручаюсь, но если dt выгрузить/загрузить - точно
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |