Имя: Пароль:
1C
1С v8
Есть уид объекта, как проще всего получить по нему ссылку?
0 izekia
 
24.10.11
21:34
Я так понял надо знать конкретного менеджера типа?
1 Лефмихалыч
 
24.10.11
21:35
если тип не известен, то ни как, акромя перебора всех типов с получитьСсылку()
2 izekia
 
24.10.11
21:44
(1) тип есть на другой стороне кома, но получается в любом случае строку парсить?
3 Лефмихалыч
 
24.10.11
21:50
(2) на другой стороне кого?..
я телепатические способности в других штанах забыл, представь, что я в душе ниипу, что у тебя там происходит и попробуй сформулировать так, чтобы вопрос понятен был
4 Fragster
 
гуру
24.10.11
21:51
есть что-то типа Метаданные.НайтиПоПолномуИмени, куда можно передать полное имя метаданных из кома, а у метаданных уже получить тип
5 izekia
 
24.10.11
21:51
(3) да по сути ответ на вопрос получил, спасибо ...
6 Живой Ископаемый
 
24.10.11
22:28
а еще есть СТрокаXML и ТипXML и еще несколько полезных функций
7 Лефмихалыч
 
24.10.11
22:30
(6) если кроме гуида ни чорта нет, то не поможет, хоть коленку прстрели
8 Живой Ископаемый
 
24.10.11
22:32
Это мой телепат в незабытых штанах навоображал мне что раз он в том коме имеет объект, то аргументом в эти функции может передать... но почва для этих спекуляций конечна зыбкая...
9 izekia
 
24.10.11
22:43
парни, уже все сделал через метаданные ... в смысле получил то что мне было нужно ...
суть была в том, что у меня ком соединение, и нужно получить соответствующий объект на другой стороне ...
спасибо за участие
10 Живой Ископаемый
 
24.10.11
22:44
но объект хоть того же типа?
11 izekia
 
24.10.11
22:57
(10) да, базы одинаковые, просто задача была в запросе нужный параметр указать, чтобы результаты выборки теми же были
12 izekia
 
24.10.11
22:57
(11) + в смысле вторая база - это копия первой
13 Лефмихалыч
 
24.10.11
23:06
(12) тогда тебе тип заранее известен
14 izekia
 
25.10.11
10:35
(12) ну да, просто стояла задача получить соответствующего менеджера ...
на самом деле еще интересно было понять ... интересно почему нет общего метода для уида, ведь фактически это уникальное значение для всех объектов
15 Рэйв
 
25.10.11
10:40
Если откуда то получил гуид, что мешает получить ссылку?
16 Рэйв
 
25.10.11
10:40
не сам же ты гуид из головы взял?
17 Fragster
 
гуру
25.10.11
10:41
(14)
УИД = Новый УникальныйИдентификатор();
Спр = Справочники.Контрагенты.СоздатьЭлемент(); // или что там
Спр.УстановитьСсылкуНового(Справочники.Контрагенты.ПолучитьСсылку(УИД));

Спр = Справочники.Склады.СоздатьЭлемент(); // или что там
Спр.УстановитьСсылкуНового(Справочники.Склады.ПолучитьСсылку(УИД));
18 Defender aka LINN
 
25.10.11
10:45
Если с обоих сторон одна и та же конфигурация (ну, например, копия или другой узел РБД), то можно через ЗначениеВстрокуВнутр/ЗначениеИзСтрокиВнутр передать ссылку. Дешево и сердито.
19 Defender aka LINN
 
25.10.11
10:46
(14) "Фактически" и "Теоретически" путать не надо.
20 Sammo
 
25.10.11
10:50
(14) Теоретически. Практически руками возможно создать объекты разных метаданных с одинаковым уидом. (например справочник и документ)
21 izekia
 
25.10.11
10:54
(19) не понял к чему это
(20) это не тот случай
(18) точно, спасибо .. надо попробовать сравнить быстродействие
22 izekia
 
25.10.11
10:58
+(21) хотя в принципе в том месте быстродействие не критично:
у меня так получилось:
       строкаТип = значение.Метаданные().ПолноеИмя();
       поз = Найти(строкаТип, ".");
       типСтрокой = _СоответствияЕдЧМнЧ[Лев(строкаТип, поз - 1)];
       соединение[типСтрокой][Сред(строкаТип, поз +1)].ПолучитьСсылку(соединение.NewObject("УникальныйИдентификатор", Строка(значение.УникальныйИдентификатор())));

думаю из строки в строку быстрее будет в любом случае
23 Fragster
 
гуру
25.10.11
11:16
(18) это если один и тот же .cf использовался прокатит. не всегда может прокатить...
24 izekia
 
25.10.11
11:18
(23) в теме речь о копии базы, соответственно cf либо идентичен либо потомок
25 Sammo
 
25.10.11
11:20
(23) Я бы даже уточнил - идентификаторы метаданных будут совпадать только в случае использования загрузки/выгрузки (поставки) конфигурации.
Если через сравнение/объединение уже без гарантий...
26 izekia
 
25.10.11
11:22
(25) в случае сравнения-объединения ид существующих объектов очень редко меняются, гипотетически такая ситуация может возникнуть, но в реальности не так часто с этим сталкивался
27 Живой Ископаемый
 
25.10.11
11:38
2(22)это не православно. Православно использовать это:

http://screencast.com/t/U82iile3LODB


Пока мы в своей базе:
XMLСтрока(Перечисления.СтавкиНДС.БезНДС)    БезНДС;   //получили представление значение
XMLТипЗнч(Перечисления.СтавкиНДС.БезНДС).ИмяТипа    EnumRef.СтавкиНДС //получили представление типа
XMLТипЗнч(Перечисления.СтавкиНДС.БезНДС).URIПространстваИмен    //получили пространство имен

Теперь когда мы КОМом в другой базе:
ИзXMLТипа("EnumRef.СтавкиНДС","")    Ставки НДС//получили тип на той стороне по представлению и пространству имен
XMLЗначение(ИзXMLТипа("EnumRef.СтавкиНДС",""),"БезНДС")    Без НДС//получили значение по уже собранному типу и ХМЛ-представлению объекта


в твоем случае вместо ставки ндса будет типа
XMLСтрока(ПланыСчетов.Хозрасчетный.Вспомогательный)    a3fe5c24-1e8b-45af-84af-060de4d64254 - то есть УИД
28 Живой Ископаемый
 
25.10.11
11:40
Почему метаданные неправильно... Потому что все мы помним что случилось при переходе с 8.1 на 8.2 все кто завязывался на представление типа в метаданных обломались и судорожно искали как переписать свой копрокод.
29 Fragster
 
гуру
25.10.11
11:41
(27) спасибо!
30 izekia
 
25.10.11
11:41
(27) (28) понял, спасибо ... действительно надо в эту сторону смотреть
31 Живой Ископаемый
 
25.10.11
11:43
дядьки, я аж зарделся... :)
32 Fragster
 
гуру
25.10.11
11:44
(31) мне на 8.2 только предстоит перевод моего гомункула в первом квартале - соответственно все грабли стараюсь учесть потихоньку
33 Живой Ископаемый
 
25.10.11
11:46
а!