Имя: Пароль:
1C
1С v8
Как узнать ссылку по GUID в бд
0 Tata001
 
14.09.12
17:43
сейчас в коде написано конкретно в каком справочнике искать,а как мне написать код,чтоб гуид искался по всем справочникам конфигурации ?
   
//----------------------------------------------
УИ_номГр = Новый УникальныйИдентификатор(СокрЛП(ПолеВвода1));
   
   НоменклатурнаяГруппа=Справочники.ПодразделенияОрганизаций.ПолучитьСсылку(УИ_номГр);
1 DrShad
 
14.09.12
17:44
По метаданным, пока не найдет
2 Aleksey
 
14.09.12
17:44
Перебором, иначе никак
3 Aleksey
 
14.09.12
17:45
Только зачем? Вдруг дубли по ГУИД в разных справочниках?
4 DrShad
 
14.09.12
17:46
а вообще код из (0) доставляет - переменная НоменклатурнаяГруппа с типом СправочникСсылка.ПодразделенияОрганизаций :))))
5 mikecool
 
14.09.12
17:47
(4) +1 бгг
6 Maxus43
 
14.09.12
17:49
Новый УникальныйИдентификатор(СокрЛП(ПолеВвода1));

оо, да ещё и ручками гуид забивают
7 Tata001
 
14.09.12
17:49
(4) раньше ном.группа использовалась, теперь возникла потребность найти сотрудника...переменную неохота переписывать
8 Tata001
 
14.09.12
17:50
(6) нет..его достают обработкой и копируют в строку ввода, просто проверяю гуид в разных базах
т.е. в одной смотрю гуид,в друной по гуид ищу сылку

Процедура ОсновныеДействияФормыУзнатьГУИД(Кнопка)
   сообщить(СсылкаП.УникальныйИдентификатор());
КонецПроцедуры
9 DrShad
 
14.09.12
17:50
(7) в подразделениях вы его все равно не найдете
10 mikecool
 
14.09.12
17:51
(7) пойдем лучше в кабак, только каждый платит за себя ))
сорри за офф
11 Tata001
 
14.09.12
17:51
(9) и подразделения искали =))) просто универсальность хочется,а обработки универсальной я не видела
12 DrShad
 
14.09.12
17:51
(8) так указывай сразу и тип
13 Tata001
 
14.09.12
17:52
(8) тип зачем, у меня реквизит СсылкаП - составной тип
14 Tata001
 
14.09.12
17:52
Процедура ОсновныеДействияФормыУзнатьГУИД(Кнопка)
   сообщить(СсылкаП.УникальныйИдентификатор());
КонецПроцедуры
=========
это работает универсально
15 Tata001
 
14.09.12
17:53
мне нужно универсальность этого кода


==============
УИ_номГр = Новый УникальныйИдентификатор(СокрЛП(ПолеВвода1));
   
   НоменклатурнаяГруппа=Справочники.ПодразделенияОрганизаций.ПолучитьСсылку(УИ_номГр);
16 DrShad
 
14.09.12
17:54
НайденнаяСсылка = Справочники[ИмяМоегоСправочника].ПолучитьСсылку(Новый УникальныйИдентификатор(СокрЛП(ПолеВвода1)));
17 Tata001
 
14.09.12
17:56
(16) хм....ИмяМоегоСправочника... а в эту переменную что я должна подставить...я ведь так понимаю мне надо делать обход по метаданным
18 DrShad
 
14.09.12
17:58
(17) в твоем конкретном случае "Сотрудники"
19 Tata001
 
14.09.12
17:58
(18) так неинтересно
20 Tata001
 
14.09.12
17:58
(18) мне нужно чтоб он по гуид искал во всех свправочниках
21 Tata001
 
14.09.12
17:59
(18) либо по списку справочников
22 Tata001
 
14.09.12
18:00
Я как ленивый программист, не хочу перебивать тип справочника, я просто хочу задать гуид и чтоб он нашёл элемент в опреденном диапазоне справочников
23 Aleksey
 
14.09.12
18:00
(20)
Для Каждого ОбъектМетаданных Из Метаданные.Справочники Цикл
   СписокТипов.Добавить(ОбъектМетаданных.ПолноеИмя(), ОбъектМетаданных.Имя);
КонецЦикла;
24 Tata001
 
14.09.12
18:01
(23) а он долго будет искать по всем справочникам ?...
25 fisher
 
14.09.12
18:01
Уже сказали. Только перебором. Причем к (16) нужно добавить еще проверку на реальность ссылки. Т.е. ссылается ли она на живой объект или нет.
26 Aleksey
 
14.09.12
18:02
(24) В базе где всего заполнено 2 справочника 5-тю элементами? - Быстро
27 Tata001
 
14.09.12
18:02
(25) зачем проверка...если не находит элемент пишется "Это <Объект не найден> (244:88f0005056c0000811e12ad2f083ed47)" или я путаю ?*
28 Tata001
 
14.09.12
18:04
(10) у тебя новая работа, мог и проставиться =0) и вообще,я не страшная,чтоб за себя платить в мужской компании
29 Aleksey
 
14.09.12
18:04
(27) Путаешь
30 Aleksey
 
14.09.12
18:05
(28) А причем тут твоя внешность? Или ты намекаешь на продолжение? Мол после ужина пойдем ко мне домой и я тоже с тебя денег не возъму?
31 fisher
 
14.09.12
18:05
(27) Так тебе ж надо по списку пробежаться. Визуально проверять что ли будешь? Он тебе такое напишет на все справочники кроме того, где эта ссылка живая.
32 Stim213
 
14.09.12
18:06
УИД = Новый УникальныйИдентификатор(УИДСТрока);
       Попытка        
           Для каждого Справочник из Метаданные.Справочники Цикл
               Спр = Справочники[справочник.Имя].ПОлучитьСсылку(УИД);
               Если ЗначениеЗаполнено(Спр.Код) Тогда
                   СсылкаНаЭлемент = Спр;
                   Возврат;
               КОнецЕсли;
           КОнецЦикла;
           Для каждого Документ из Метаданные.Документы Цикл
               Док = Документы[Документ.Имя].ПОлучитьСсылку(УИД);
               Если ЗначениеЗаполнено(Док.номер) Тогда
                   СсылкаНаЭлемент = Док;        
                   Возврат;
               КонецЕсли;
           КОнецЦикла;
           
       Исключение
           Сообщить(ОписаниеОшибки());    
       КонецПопытки
33 Aleksey
 
14.09.12
18:07
(31) Не напишет. Он получит пустой объект с заданной ссылкой
34 Жан Пердежон
 
14.09.12
18:08
(22) как ленивый прог прочитай еще раз внимательно, что (3) пишет:
один и тот же гуид может быть у разных элементов разных справочников
35 Aleksey
 
14.09.12
18:09
(32) Очень спорно, ибо к примеру в типовой БП справочник ЭДПрисоединенныеФайлы имеет нулевую длину кода
36 Aleksey
 
14.09.12
18:10
и таких справочников несколько
37 fisher
 
14.09.12
18:10
(33) Кто "он"? Какой объект? Метод ПолучитьСсылку() возвращает ссылку.
38 Aleksey
 
14.09.12
18:14
(37) Ссылку, но не "объект не найден"
39 vmv
 
14.09.12
18:14
холивар детектет, чубы трещат

*чещет каня*
40 Aleksey
 
14.09.12
18:15
(39) Холивар? Где холивар?
41 vmv
 
14.09.12
18:16
(40) хз, я бухаю - больще креатива!
42 fisher
 
14.09.12
18:17
(38) Не тупи. Если получить текстовое представление "неживой" ссылки - это и напишет.
Набери в табло
Справочники.Валюты.ПолучитьСсылку(Новый УникальныйИдентификатор("a763cfbb-f94f-4c67-8e13-0e96a3a7f353"))
43 ssh2012
 
14.09.12
18:20
(27) > зачем проверка...если не находит элемент пишется "Это <Объект не найден>

Чтобы проверить, что ссылка "живая" нужно выполнить запрос или ПолучитьОбъект() от ссылки и проверить, что объект <> неопределено
44 vmv
 
14.09.12
18:21
(42) не гони, чувачок, хрена в ГУИД строку пехаешь - это по феншую?
45 vmv
 
14.09.12
18:22
(43) не каждая ссылка может быть отождствлена с объектом, понел!
46 ssh2012
 
14.09.12
18:24
(45) ты чё еба нах, слышь?
47 vmv
 
14.09.12
19:24
(46) бгг,хамло)
48 mikecool
 
14.09.12
19:43
(28) го в Колбасоф на павелецкую во вторник вечером ;)
49 Конфигуратор1с
 
14.09.12
21:11
(10)ппц
50 Ткачев
 
14.09.12
21:28
51 mikecool
 
14.09.12
21:47
(49) чо?
52 Конфигуратор1с
 
14.09.12
22:24
та не ниче. у меня просто "культурный шок". Отстал я от жизни(((
53 mikecool
 
14.09.12
22:25
(52) да, отстал, и не в теме абсолютно...
54 Конфигуратор1с
 
14.09.12
22:32
(53)та да, девушки за себя платят, легализация однополых браков - я выпал из тренда
55 orange777
 
14.09.12
22:55
(54)и я
56 Конфигуратор1с
 
14.09.12
23:23
(55)ну мне с такой красавицей будет не скучно. Фото просто мяуууууу
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой