Вход | Регистрация
 

Как имея ссылку на реквизит и гуид получить ссылку по гуиду?

Как имея ссылку на реквизит и гуид получить ссылку по гуиду?
Я
   Бешеный заяц
 
08.01.21 - 12:04
например Имеем элемент справочника номенклатура в нем есть реквизит базовая единица измерения, так же у меня есть гуид этой базовой единицы измерения
мне нужно заполнить номенклатуру этой единицей измерения по гуиду.
НовыйGUID = Новый УникальныйИдентификатор(СтрокаGUID); тут понятно
а как тут быть? НекийСпраочник.ПолучитьСсылку(НовыйGUID);

те как зная реквизит номенклатуры получить эти самые "НекийСпраочник"

лазил по метаданным но не нашел что то вроде Справочникссылка.Мойсправочник
   Бешеный заяц
 
1 - 08.01.21 - 12:07
пытался XMLТипЗнч(Выборка.Объект).ИмяТипа  получить но он выдаёт строку вида "CatalogRef.Номенклатура"
   ДенисЧ
 
2 - 08.01.21 - 12:08
ссылка.Метаданные?
   RomanYS
 
3 - 08.01.21 - 12:10
(0) XMLЗначение(<Тип>, <СтрокаXML>)
тип вытаскивать из метаданных для простых типов, для составных тип должен в файле быть
   Eeeehhhh
 
4 - 08.01.21 - 12:12
ПолучитьНавигационнуюСсылку() не подойдет?
   ДенисЧ
 
5 - 08.01.21 - 12:13
Справочники[ссылка.Метаданные.Имя].ПолучитьСсылку((
   Бешеный заяц
 
6 - 08.01.21 - 12:14
(3) нету в файле(((
вот кусок, тупо название реквизита и его значения, по ходу бсп в УПП на столько примитивна
<?xml version="1.0" encoding="UTF-8"?>
<CatalogObject.Номенклатура xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="CatalogObject.Номенклатура">
    <Ref>67716f82-b357-11e4-80c0-00155d1a7e04</Ref>
    <IsFolder>false</IsFolder>
    <DeletionMark>false</DeletionMark>
    <Parent>e2ad0661-7c37-11e3-8cba-003048625778</Parent>
    <Code>ПМ14-000100</Code>
    <Description>Светильник </Description>
    <Артикул/>
    <ВидНоменклатуры>4ed16e58-7c48-11e3-8cba-003048625778</ВидНоменклатуры>
    <Весовой>false</Весовой>
    <ВесовойКоэффициентВхождения>0</ВесовойКоэффициентВхождения>
    <ВестиОперативныйУчетОстатковНЗП>false</ВестиОперативныйУчетОстатковНЗП>
    <ВестиПартионныйУчетПоСериям>false</ВестиПартионныйУчетПоСериям>
    <ВестиУчетПоСериям>false</ВестиУчетПоСериям>
    <ВестиУчетПоСериямВНЗП>false</ВестиУчетПоСериямВНЗП>
    <ВестиУчетПоХарактеристикам>false</ВестиУчетПоХарактеристикам>
    <ВидВоспроизводства>Закупка</ВидВоспроизводства>
    <БазоваяЕдиницаИзмерения>f54af7af-3d13-11e1-8113-001a4d407980</БазоваяЕдиницаИзмерения>
    <ЕдиницаДляОтчетов>67716f83-b357-11e4-80c0-00155d1a7e04</ЕдиницаДляОтчетов>
    <ЕдиницаХраненияОстатков>67716f83-b357-11e4-80c0-00155d1a7e04</ЕдиницаХраненияОстатков>
    <СтавкаНДС>НДС20</СтавкаНДС>
    <Набор>false</Набор>
    <НазначениеИспользования>00000000-0000-0000-0000-000000000000</НазначениеИспользования>
   Бешеный заяц
 
7 - 08.01.21 - 12:14
(5) спасибо попробую
   RomanYS
 
8 - 08.01.21 - 12:16
(6) >> нету в файле
так потому и нет, что тип простой и однозначно можно определить из метаданных
   RomanYS
 
9 - 08.01.21 - 12:18
+(8) если бы был составной, было бы так
        <CatalogObject.БанковскиеСчета>
            <Ref>9b57c3f8-ecc0-11e4-956d-d8d385e23dc3</Ref>
            <DeletionMark>false</DeletionMark>
            <Owner xsi:type="CatalogRef.Организации">70fdd1f6-0baf-4368-9a51-1e7be97720b4</Owner>
...

Зря новую тему начал, продолжил бы в той было бы понятнее
   Бешеный заяц
 
10 - 08.01.21 - 12:22
(9) согласен что то я не подумал
еще особенность нашел <СтавкаНДС>НДС20</СтавкаНДС>
это перечисление, если правильно понял могу реквизиту с типом перечисление присвоить строку "НДС20" и он автоматом подцепит его?
   RomanYS
 
11 - 08.01.21 - 12:23
(10) В (3) универсальный рецепт для твоей задачи, он и числа преобразует и перечисления и справочники...
   Вафель
 
12 - 08.01.21 - 12:24
не стал в бсп смотреть?
   RomanYS
 
13 - 08.01.21 - 12:24
+(11) ... и булево...
   Бешеный заяц
 
14 - 08.01.21 - 12:26
(11) те если реквизиту подсуну строку "67716f83-b357-11e4-80c0-00155d1a7e04" он его преобразует в ссылку???

Объект.ЕдиницаХраненияОстатков = "67716f83-b357-11e4-80c0-00155d1a7e04"?
   Вафель
 
15 - 08.01.21 - 12:26
нет конечно
   Бешеный заяц
 
16 - 08.01.21 - 12:28
(12) типовой посмотрел там не в ручную там почти также
УстановитьПривилегированныйРежим(Истина);
    
    ДвоичныеДанные = ДанныеОбъекта;
    Если ТипЗнч(ДанныеОбъекта) = Тип("Структура") Тогда
        ДвоичныеДанные = ДанныеОбъекта.Объект;
    КонецЕсли;
    
    ЧтениеFastInfoSet = Новый ЧтениеFastInfoSet;
    ЧтениеFastInfoSet.УстановитьДвоичныеДанные(ДвоичныеДанные);
    
    Попытка
        Объект = ПрочитатьXML(ЧтениеFastInfoSet);
    Исключение
        ЗаписьЖурналаРегистрации(НСтр("ru = 'Версионирование'", ОбщегоНазначения.КодОсновногоЯзыка()),
            УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
        ТекстСообщенияОбОшибке = НСтр("ru = 'Не удалось перейти на выбранную версию.
                                            |Возможная причина: версия объекта была записана в другой версии программы.
                                            |Техническая информация об ошибке: %1'");
        ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщенияОбОшибке, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
        Возврат Неопределено;
    КонецПопытки;
    
    Возврат Объект;
   RomanYS
 
17 - 08.01.21 - 12:28
(14)
Объект.ЕдиницаХраненияОстатков = XMLЗначение(ТипИзМетаданныхРеквизита, СтрокаXML_ИзФайла);
ТипИзМетаданныхРеквизита - нужно вытащить, в метаданных ОписаниеТипов
   Бешеный заяц
 
18 - 08.01.21 - 12:28
(12) (16) это в последней БСП
   RomanYS
 
19 - 08.01.21 - 12:29
(12) Чем ему бсп поможет, если УПП уже сохранила в "своём" формате
   RomanYS
 
20 - 08.01.21 - 12:35
(17) чтобы не заморачиваться с вытаскиванием типа из метаданных можно брать тип самого реквизита.

Объект[ИмяРеквизита] = XMLЗначение(ТипЗнч(Объект[ИмяРеквизита]), Реквизит_СтрокаXML_ИзФайла);
Естественно со сложными типами это работать не будет или может работать неправильно
   Бешеный заяц
 
21 - 08.01.21 - 12:41
(20) ок спасибо взлетело XMLЗначение(ТипЗнч(Выборка.Объект["ЕдиницаХраненияОстатков"]),"67716f83-b357-11e4-80c0-00155d1a7e04")
получает нужную ссылку.

единственное вопрос всякие Description нужно отдельно обрабатывать или "XMLЗначение" сам их преобразует?
   RomanYS
 
22 - 08.01.21 - 12:46
(21) не понятен вопрос. У этого поля тип строка и XMLЗначение вполне корректно строку в строку преобразует.
А вот как ты там обходишь реквизиты (по файлу или по метаданным) - нужно смотреть.
Объект["Description"] = ..//так можно

Объект.Description = ..//и так можно
   Бешеный заяц
 
23 - 08.01.21 - 13:07
(22) ок спасибо
   ДедМорроз
 
24 - 08.01.21 - 13:40
Кто-то хочет прочитать xml.
Но,на той стороне,где читают,должна быть информация об объекте,который читают,то есть все его поля с описанием типов,тогда можно собрать без проблем сам объект.
Описание типов получают через метаданные
Метаданные.Справочник.ИмяСправочника.Реквизиты.ИмяРеквизита.ТипЗначения
Если в описании типов только один тип,то по нему делаем Метаданные.НайтиПоТипу и получаем описание метаданных,откуда получаем и тип объекта и его имя,по этим данным создаём менеджер,а уже из менеджера получаем ссылку.
   RomanYS
 
25 - 08.01.21 - 13:44
(24) >>Если в описании типов только один тип,то по нему делаем Метаданные.НайтиПоТипу и получаем описание метаданных,откуда получаем и тип объекта и его имя,по этим данным создаём менеджер,а уже из менеджера получаем ссылку.
Вместо этого всего есть (3)
   Бешеный заяц
 
26 - 08.01.21 - 14:47
Справочник починил все восстановил, всем огромное спасибо!
   RomanYS
 
27 - 08.01.21 - 14:50
(26) Ну код выложил бы, может кому пригодится


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