|   |   | 
| 
 | Получение ссылки по 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 | 
        Блин... Это все таки пятница....     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |