|
Получение типа из уникального идентификатора |
☑ |
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);
КонецФункции
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший