Имя: Пароль:
1C
 
Получение типа из уникального идентификатора
0 ДНН
 
13.06.19
14:47
В текстовый файл были выгружены уникальные идентификаторы справочников из одной базы.
Для получения ссылки делаю так:
Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(УИДСтрокой));
Но это в том случае если я знаю какой тип был выгружен в файл.
А если не знаю? Есть файл в котором значения субконто, тип может быть и номенклатура и контрагенты и даже документы.
Как по уникальному идентификатору получить ссылку на объект, если я не знаю тип?
Спасибо.
1 vicof
 
13.06.19
14:48
Никак. Выгружай в файл тип еще.
2 fisher
 
13.06.19
14:54
Нету там типа.
Можешь примерять туфельку к каждому, если деваться совсем некуда.
3 Юрий Лазаренко
 
13.06.19
14:56
(0) Если есть возможность повлиять на выгрузку, то можно заменить уникальный идентификатор на ЗначениеВСтрокуВнутр(). В нем есть и тип, и ссылка.
4 ИУБиПовиц
 
13.06.19
14:58
(2) Угу, и пока не окажется что туфелька подходит к нескольким ногам:)
у разных типов ж не запрещается одни ГУИДы иметь..
5 RomanYS
 
13.06.19
14:59
(3) А зачем, если в любой стандартной выгрузке будет предусмотрена выгрузка типа в такой ситуации?
6 lodger
 
13.06.19
15:00
(4) это когда неизвестно зачем ты ищешь ссылку.
если тебе только подобрать и заполнить ссылку, то пофиг ко скольки типам подходит - должна найтись живая ссылка.
7 fisher
 
13.06.19
15:02
(4) Не запрещается. Но если в базе не было фокусов с "ручным" назначением ссылок, то такая ситуация фактически исключена самим алгоритмом генерации гуидов.
8 ДНН
 
13.06.19
15:06
Для ЗначениеВСтрокуВнутр в примечании написано

Примечание:

Используется для сохранения функциональной совместимости с 1С:Предприятием 7.7. Использовать для других целей не рекомендуется.

Почему не рекомендуется использовать для других целей? Чем это грозит?
9 RomanYS
 
13.06.19
15:14
(8) >> Чем это грозит?
Тем что в другой базе обратная операция не сработает.

Разработчик в обновлениях платформы оставляет за собой право сделать так что и в одной базе не загрузится выгруженное ранее. Реальная вероятность этого конечно исчезающе мала.
10 fisher
 
13.06.19
15:18
(8) Да ничем не грозит. Теоретически могут в 1С:Предприятие 9.0 выпилить как атавизму.
11 fisher
 
13.06.19
15:22
(8) Православная сериализация типа на 8-ке делается примерно так: XMLТипЗнч(Ссылка).ИмяТипа
Вернет наподобие "CatalogRef.Номенклатура"
12 fisher
 
13.06.19
15:32
А полный аналог семерочного ЗначениеВСтрокуВнутр() и обратно выглядит примерно так:
Функция СериализацияXML(Значение)
    
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку();
    СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Значение);
    
    Возврат ЗаписьXML.Закрыть();
    
КонецФункции

Функция ДесериализацияXML(СтрокаXML)
    
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(СтрокаXML);
    ЧтениеXML.Прочитать();
    
    Возврат СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
    
КонецФункции