|
Как имея ссылку на реквизит и гуид получить ссылку по гуиду? | ☑ | ||
---|---|---|---|---|
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) Ну код выложил бы, может кому пригодится
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |