|
Получение ссылки по UID | ☑ | ||
---|---|---|---|---|
0
Imv
08.07.22
✎
16:00
|
Друзья, извиняюсь за тему, перечитал и форум и интернет...
Но не получается. Подскажите, что делаю не так... Выдает пустую ссылку. Хотя "Строка_UID" берется с реального документа... СтрокаПодключения = "Srvr=""COMP-1C"";Ref=""Bak"";Usr=""Администратор"";Pwd="""""; Попытка КоннекторV83 = Новый COMОбъект("V83.COMConnector"); БазаCOM = КоннекторV83.Connect(СтрокаПодключения); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Строка_UID = "e2598f6d-fb65-11ec-90d7-086266a14506"; // Преобразуем в GUID ГУИДУдОбъктаСтр = СтрЗаменить(ДокументПередачи,"<Объект не найден> (",""); ГУИДУдОбъктаЧ = СтрЗаменить(ГУИДУдОбъктаСтр,")",""); ГУИДУдОбъктаСтр = СтрЗаменить(ГУИДУдОбъктаЧ,"0x",""); ГУИДУдОбъктаСтр = Сред(ГУИДУдОбъктаСтр, Найти(ГУИДУдОбъктаСтр,":")+1, СтрДлина(ГУИДУдОбъктаСтр)); ГУИД = Сред(ГУИДУдОбъктаСтр,25,8)+"-"+Сред(ГУИДУдОбъктаСтр,21,4)+"-"+Сред(ГУИДУдОбъктаСтр,17,4)+"-"+Сред(ГУИДУдОбъктаСтр,1,4)+"-"+Сред(ГУИДУдОбъктаСтр,5,12); Строка_ГУИД = Строка(ГУИД); //НовыйGUID = Новый УникальныйИдентификатор(СтрокаGUID); COM_ГУИД1 = БазаCOM.NewObject("УникальныйИдентификатор", Строка(ГУИД)); COM_ГУИД2 = БазаCOM.NewObject("УникальныйИдентификатор", Строка_UID); Ссылка_Док_БЗ1 = БазаCOM.Документы.ПоступлениеТоваровУслуг.ПолучитьСсылку(COM_ГУИД1); Ссылка_Док_БЗ2 = БазаCOM.Документы.ПоступлениеТоваровУслуг.ПолучитьСсылку(COM_ГУИД2); Ссылка_Док_БЗ3 = БазаCOM.Документы.ПоступлениеТоваровУслуг.ПолучитьСсылку(БазаCOM.NewObject("УникальныйИдентификатор", Строка(ГУИД))); Ссылка_Док_БЗ4 = БазаCOM.Документы.ПоступлениеТоваровУслуг.ПолучитьСсылку(БазаCOM.NewObject("УникальныйИдентификатор", Строка_UID)); |
|||
1
Мультук
гуру
08.07.22
✎
16:07
|
(0)
Зачем всё это? // Преобразуем в GUID ГУИДУдОбъктаСтр = СтрЗаменить(ДокументПередачи,"<Объект не найден> (",""); ГУИДУдОбъктаЧ = СтрЗаменить(ГУИДУдОбъктаСтр,")",""); ГУИДУдОбъктаСтр = СтрЗаменить(ГУИДУдОбъктаЧ,"0x",""); ГУИДУдОбъктаСтр = Сред(ГУИДУдОбъктаСтр, Найти(ГУИДУдОбъктаСтр,":")+1, СтрДлина(ГУИДУдОбъктаСтр)); ГУИД = Сред(ГУИДУдОбъктаСтр,25,8)+"-"+Сред(ГУИДУдОбъктаСтр,21,4)+"-"+Сред(ГУИДУдОбъктаСтр,17,4)+"-"+Сред(ГУИДУдОбъктаСтр,1,4)+"-"+Сред(ГУИДУдОбъктаСтр,5,12); Строка_ГУИД = Строка(ГУИД); |
|||
2
ZDenis
08.07.22
✎
16:08
|
(0) Куча всего непонятно чего, а главное закомментировано
//НовыйGUID = Новый УникальныйИдентификатор(СтрокаGUID); Вот получил гуид и по нему получай ссылку |
|||
3
youalex
08.07.22
✎
16:10
|
Так не работает?
БазаCOM.XMLЗначение(БазаCOM.Тип("ДокументСсылка.ПоступлениеТоваровУслуг"), ГУИДУдОбъктаСтр) |
|||
4
Imv
08.07.22
✎
16:13
|
// Преобразуем в GUID
ГУИДУдОбъктаСтр = СтрЗаменить(ДокументПередачи,"<Объект не найден> (",""); ГУИДУдОбъктаЧ = СтрЗаменить(ГУИДУдОбъктаСтр,")",""); ГУИДУдОбъктаСтр = СтрЗаменить(ГУИДУдОбъктаЧ,"0x",""); ГУИДУдОбъктаСтр = Сред(ГУИДУдОбъктаСтр, Найти(ГУИДУдОбъктаСтр,":")+1, СтрДлина(ГУИДУдОбъктаСтр)); ГУИД = Сред(ГУИДУдОбъктаСтр,25,8)+"-"+Сред(ГУИДУдОбъктаСтр,21,4)+"-"+Сред(ГУИДУдОбъктаСтр,17,4)+"-"+Сред(ГУИДУдОбъктаСтр,1,4)+"-"+Сред(ГУИДУдОбъктаСтр,5,12); Строка_ГУИД = Строка(ГУИД); Это я из: <Объект не найден> (166:b1a2086266a1450611ecf75eab1010e6) получаю гуид |
|||
5
Imv
08.07.22
✎
16:15
|
Так не работает?
БазаCOM.XMLЗначение(БазаCOM.Тип("ДокументСсылка.ПоступлениеТоваровУслуг"), ГУИДУдОбъктаСтр) Пишет: Метод объекта не обнаружен (Тип) |
|||
6
Мультук
гуру
08.07.22
✎
16:36
|
(0)
Я бы взял строку <Объект не найден> (166:b1a2086266a1450611ecf75eab1010e6) и пошел писать код в базу Srvr=""COMP-1C"";Ref=""Bak" Там есть оригинальная ссылка и т.п. Написал бы код, отладил. Сравнил бы реальную текстовую строку гуида и ту что ты получаешь. Заработало? Портируем код для работы через com-соединение. |
|||
7
youalex
08.07.22
✎
16:39
|
Немного пятничной наркомании
БазаКОМ.XMLЗначение(БазаКОМ.Метаданные().Документы.ПоступлениеТоваровУслуг.StandardAttributes.Ref.Type.Типы().Get(0), ГУИДУдОбъктаСтр) |
|||
8
youalex
08.07.22
✎
16:39
|
Но лучше, имхо, всю логику работы с объектами ком описывать на стороне ком
|
|||
9
Imv
08.07.22
✎
16:44
|
>>Портируем код для работы через com-соединение.
Мне и нужно то всего, что получить ссылку на документ в другой базе. Документ в другой базе легко ищется обработкой восстановления битых ссылок по <Объект не найден> (166:b1a2086266a1450611ecf75eab1010e6). Я кусок кода, который формирует ГУИД, из нее как раз и вытащил. Затем делаю запрос через COM и система возвращает пустую ссылку на документ... Как будто ничего не находит... |
|||
10
Imv
08.07.22
✎
16:46
|
>>Немного пятничной наркомании:
Произошла исключительная ситуация (1C:Enterprise 8.3.20.1838): Ошибка преобразования данных XML ломка походу у 1С :) |
|||
11
youalex
08.07.22
✎
16:48
|
(10) Строка_UID вторым параметром должно быть,
типа "e2598f6d-fb65-11ec-90d7-086266a14506" |
|||
12
Imv
08.07.22
✎
17:07
|
s1 = БазаCOM.XMLЗначение(БазаCOM.Метаданные().Документы.ПоступлениеТоваровУслуг.StandardAttributes.Ref.Type.Типы().Get(0), Строка_UID);
Получаем пустую ссылку... Ну не может быть... 5 разных методов дают одинаковый результат... Значит я чего то недогоняю... Но чего ?! |
|||
13
Imv
08.07.22
✎
17:11
|
||||
14
Imv
08.07.22
✎
17:13
|
Первая ссылка на то что через COM находит пустую ссылку.
Вторая, что в удаленной базе по ГУИДу находится. |
|||
15
lodger
08.07.22
✎
17:20
|
(10) наркоманишь ты, а виновата 1с, ага.
|
|||
16
Imv
08.07.22
✎
17:25
|
Да у меня уже крышу сносит :)
Который час смотрю в 20 строк кода !!! |
|||
17
Imv
08.07.22
✎
17:32
|
Я вот думаю, что конструкция
БазаCOM.NewObject("УникальныйИдентификатор", Строка_UID) Возвращает COMОбъект а методу ПолучитьСсылку нужен объект с типом УникальныйИдентификатор. Если раскрыть конструкцией БазаCOM.string(БазаCOM.NewObject("УникальныйИдентификатор", Строка_UID)) то опять строка... что ессно Если бы было бы что: БазаCOM.УникальныйИдентификатор для приведения типа... |
|||
18
Imv
08.07.22
✎
17:43
|
Все !!! Вопрос снят ! Это пятница друзья мои. ПЯТНИЦА !!!
Нужно доверять 1С. Хотя бы иногда :) :) :) Админы !!! Удалите этот позорный лонгрид. Пепел на мою седую голову... |
|||
19
Garykom
гуру
08.07.22
✎
17:58
|
(18) Искал не в БазаCOM а в текущей базе?
|
|||
20
Imv
08.07.22
✎
18:17
|
Нет. искал там где нужно. Искал не тот документ :)
Но может кому пригодится. Все об одном :) // Преобразуем в GUID ГУИДУдОбъктаСтр = СтрЗаменить(ДокументПередачи,"<Объект не найден> (",""); ГУИДУдОбъктаЧ = СтрЗаменить(ГУИДУдОбъктаСтр,")",""); ГУИДУдОбъктаСтр = СтрЗаменить(ГУИДУдОбъктаЧ,"0x",""); ГУИДУдОбъктаСтр = Сред(ГУИДУдОбъктаСтр, Найти(ГУИДУдОбъктаСтр,":")+1, СтрДлина(ГУИДУдОбъктаСтр)); ГУИД = Сред(ГУИДУдОбъктаСтр,25,8)+"-"+Сред(ГУИДУдОбъктаСтр,21,4)+"-"+Сред(ГУИДУдОбъктаСтр,17,4)+"-"+Сред(ГУИДУдОбъктаСтр,1,4)+"-"+Сред(ГУИДУдОбъктаСтр,5,12); COM_ГУИД1 = БазаCOM.NewObject("УникальныйИдентификатор", ГУИД); Ссылка_Док_БЗ1 = БазаCOM.Документы.ПередачаТоваров.ПолучитьСсылку(COM_ГУИД1); s1 = БазаCOM.XMLЗначение(БазаCOM.Метаданные().Документы.ПередачаТоваров.StandardAttributes.Ref.Type.Типы().Get(0), ГУИД); ПолноеИмяОбъекта = "Документ.ПередачаТоваров"; МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъекта); ОбъектМенеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмяОбъекта); ОбъектМенеджер = БазаCOM.ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмяОбъекта); СсылкаНаОбъект1 = ОбъектМенеджер.ПолучитьСсылку(БазаCOM.NewObject("УникальныйИдентификатор", ГУИД)); ИмяМенеджера = "ДокументМенеджер.ПередачаТоваров"; Менеджер = БазаCOM.NewObject(ИмяМенеджера); СсылкаНаОбъект2 = Менеджер.ПолучитьСсылку(БазаCOM.NewObject("УникальныйИдентификатор", ГУИД)); СсылкаНаОбъект3 = БазаCOM.Документы["ПередачаТоваров"].ПолучитьСсылку(БазаCOM.NewObject("УникальныйИдентификатор", ГУИД)); |
|||
21
Imv
08.07.22
✎
18:19
|
Блин... Это все таки пятница....
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |