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

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

лазил по метаданным но не нашел что то вроде Справочникссылка.Мойсправочник
1 Бешеный заяц
 
08.01.21
12:07
пытался XMLТипЗнч(Выборка.Объект).ИмяТипа  получить но он выдаёт строку вида "CatalogRef.Номенклатура"
2 ДенисЧ
 
08.01.21
12:08
ссылка.Метаданные?
3 RomanYS
 
08.01.21
12:10
(0) XMLЗначение(<Тип>, <СтрокаXML>)
тип вытаскивать из метаданных для простых типов, для составных тип должен в файле быть
4 Eeeehhhh
 
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) спасибо попробую
8 RomanYS
 
08.01.21
12:16
(6) >> нету в файле
так потому и нет, что тип простой и однозначно можно определить из метаданных
9 RomanYS
 
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" и он автоматом подцепит его?
11 RomanYS
 
08.01.21
12:23
(10) В (3) универсальный рецепт для твоей задачи, он и числа преобразует и перечисления и справочники...
12 Вафель
 
08.01.21
12:24
не стал в бсп смотреть?
13 RomanYS
 
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'");
        ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщенияОбОшибке, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
        Возврат Неопределено;
    КонецПопытки;
    
    Возврат Объект;
17 RomanYS
 
08.01.21
12:28
(14)
Объект.ЕдиницаХраненияОстатков = XMLЗначение(ТипИзМетаданныхРеквизита, СтрокаXML_ИзФайла);
ТипИзМетаданныхРеквизита - нужно вытащить, в метаданных ОписаниеТипов
18 Бешеный заяц
 
08.01.21
12:28
(12) (16) это в последней БСП
19 RomanYS
 
08.01.21
12:29
(12) Чем ему бсп поможет, если УПП уже сохранила в "своём" формате
20 RomanYS
 
08.01.21
12:35
(17) чтобы не заморачиваться с вытаскиванием типа из метаданных можно брать тип самого реквизита.

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

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