Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Получить ТипЗнч зная только Ref_Key

Получить ТипЗнч зная только Ref_Key
Я
   http_user777
 
08.07.19 - 17:14
Собственно, сабж.
Может кто-нибудь знает как без перебора всех типов метаданных получить тип значения Ref_Key (GUID)?
 
 
   lodger
 
1 - 08.07.19 - 17:21
один из кусков УникальногоИдентификатора имеет отсылку к типу ссылки, но это грязная магия зашитая в платформу. нужно знать гуиды объектов метаданных конфигурации, вспомнить как составляетя гуид объекта. при этом никто не запрещает присвоить гуид с неправильной отсылкой типа, лишь бы уникальный был (в пределах базы).
хочешь заняться этим?
   http_user777
 
2 - 08.07.19 - 17:23
(1) Не, спасибо, покопаю в сторону "один из кусков УникальногоИдентификатора имеет отсылку к типу ссылки"
   Cyberhawk
 
3 - 08.07.19 - 17:25
(1) Ошибаешься: ни в каком УИДе (из скольки-то там видов, используемых в 1С) отсылка к типу (объекту МД) не содержится
   seevkik
 
4 - 08.07.19 - 17:28
Всегда считал гуиды уникальными только в пределах одного типа, ну и считаю что (1) не верно как минимум из-за того что этот самый гуид можно ввести до записи документа
   Вафель
 
5 - 08.07.19 - 17:28
(3) формально нет, то так гуиды последовательные, то подсказка есть
   lodger
 
6 - 08.07.19 - 17:35
а этот, укурок или правду чешет?
http://catalog.mista.ru/public/635159/
ну и таки да, в самой последовательности нет пары бит отвечающих за номер таблицы.
   palsergeich
 
7 - 08.07.19 - 18:05
(6) Правду
   palsergeich
 
8 - 08.07.19 - 18:06
В общем случае определить тип по ГУИД - нельзя, видел решения, где намеренно в 2 таблицы создавались записи с идентичными ГУИД
   Жан Пердежон
 
9 - 08.07.19 - 18:06
я так понимаю, у него случай с 
<Объект не найден> (26:80f408002771598b11e7a3f0a3a64c3b)
и зная "26" хочет получить ТипЗнч();

я делал перебором;
   palsergeich
 
10 - 08.07.19 - 18:06
Это совсем просто
   palsergeich
 
11 - 08.07.19 - 18:07
ПолучитьСтруктуруХраненияБазыДанных()
Это 26 и будет номером таблицы
   palsergeich
 
12 - 08.07.19 - 18:09
(11) ну _Ref26 - это будет искомая таблица точнее
   http_user777
 
13 - 08.07.19 - 18:11
(9) Не, у меня http-сервис возвращает refKey документа, а он может быть трех типов.
   Жан Пердежон
 
14 - 08.07.19 - 18:17
(11) так это ничуть не быстрее
   palsergeich
 
15 - 08.07.19 - 18:19
(14) Это можно хранить расчитанным, ибо данные меняются только с реструктуризацией
   palsergeich
 
16 - 08.07.19 - 18:20
(13) Ты можешь называть это как угодно.
Напиши что именно там.
Если просто уникальный идентификатор, то однозначно определить таблицу нельзя
   Сияющий в темноте
 
17 - 08.07.19 - 19:20
Обьект не найден возвращает нн гуид,а текстовое представление ссылки,еще болен интересное представление дает ЗначениеВСтрокуВнутр,которая напишет и идентификатор типа.
записать одинаковые идентификаторы в разные таблицы никто не мешает,так как есть установить ссылку нового,но нужно понимать,что во многих местах идентификатор используется без привязке к таблице,особенно это важно для обменов.
   bolero
 
18 - 08.07.19 - 19:25
(0) Если подозреваемые элементы - субъект какой-либо синхронизации, то есть вариант сначала смотреть в РС.ПубличныеИдентификаторыСинхронизируемыхОбъектов, а потом уже перебором. Но если у тебя перебор из трех возможных значений, а не трех тысяч - лучше уж сразу тогда перебором, быстрее будет.

И таки да, правильнее будет допилить (или попросить допилить) http-сервис.
   Cyberhawk
 
19 - 09.07.19 - 09:37
(5) Непонятно, про какую ты подсказку. Если ты про среднюю часть УИДа (которая между штампом времени и МАС-адресом), то она вряд ли может являться подсказкой, т.к. пачка из 32 выдаваемых (упорядоченных, да) соединению УИДов может расходоваться на УИДы, получаемые через менеджеры разных типов объектов. Такие дела.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.