|
COMConnector - синхронизация справочников | ☑ | ||
---|---|---|---|---|
0
zenik
12.06.15
✎
11:45
|
делаю обмен между двумя базенками на 8.2. Подключаюсь:
OLE = Новый COMОбъект("V82.COMConnector"); Попытка База = OLE.Connect("File=""c:\base82\temp\"";Usr=""обмен"";Pwd=""123"";"); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Далее запрашиваю справочник: ЗапросНоменклатура = База.NewObject("Запрос"); ЗапросНоменклатура.Текст = "ВЫБРАТЬ | Номенклатура.ЭтоГруппа КАК ЭтоГруппа, | Номенклатура.Код КАК Код, | Номенклатура.Наименование КАК Наименование, | Номенклатура.Родитель.Код КАК Родитель, | Номенклатура.Артикул КАК Артикул, | Номенклатура.ПометкаУдаления КАК ПометкаУдаления |ИЗ | Справочник.Номенклатура КАК Номенклатура | |УПОРЯДОЧИТЬ ПО | Ссылка ИЕРАРХИЯ"; Обхожу выборку и создаю элементы (поиск соответствий по коду справочника). Но попался один справочник с длинной кода = 0. Как быть? Вижу у элемента близкий по духу реквизит "UUID", но у него "Ошибка чтения значения" (в отладчике гляжу). Да и как потом по этому UUID сделать обратный поиск в базе источнике? |
|||
1
Рэйв
12.06.15
✎
11:52
|
(0)
Получаешь текстовый УИД по СОМ, а потом УИД=Новый уникальныйИдентификатор(ТекстовыйУИД_СОМ) Справоник.Номенклатура.получитьссылку(УИД) |
|||
2
Рэйв
12.06.15
✎
11:55
|
+но лучше бы ты наоборот подключался.
|
|||
3
Рэйв
12.06.15
✎
11:55
|
оттужа в источник
|
|||
4
Рэйв
12.06.15
✎
11:55
|
*оттуда
|
|||
5
zenik
12.06.15
✎
11:57
|
Лучше то лучше... но конфу источника изменять нельзя, поэтому и строю городуху :)
Подскажи лучше как этот УИД поиметь через запрос? |
|||
6
ДенисЧ
12.06.15
✎
12:06
|
(5) уид через запрос поиметь никак не сможешь ты.
|
|||
7
zenik
12.06.15
✎
12:07
|
(6) Спасибо, мастер Йода :)
(4) Вам, сударь, тоже спасибо. |
|||
8
zenik
12.06.15
✎
12:22
|
Чет я не понял:
УИД = ЗначениеВСтрокуВнутр(Выборка.Ссылка); ГУИД = База.String(УИД); Сообщить(УИД); Сообщить(ГУИД); Результат: {"#",2319dcf1-f4ee-438d-b16f-6a145d6b9422} {"#",2319dcf1-f4ee-438d-b16f-6a145d6b9422} Если уже в УИД есть то что нас интересует, нафига нам делать База.String(УИД)? (это нагуглился такой вариант). И как кошерно выделить "чистый UUID" из полученной строки? |
|||
9
Рэйв
12.06.15
✎
12:26
|
(8)У тебя и так УИД чище не бывает:-) Получай ссылку по нему
|
|||
10
Рэйв
12.06.15
✎
12:27
|
хотя нет..."{"#"" наверное лишнее
|
|||
11
Рэйв
12.06.15
✎
12:27
|
вот оно: 2319dcf1-f4ee-438d-b16f-6a145d6b9422
:-) |
|||
12
zenik
12.06.15
✎
12:31
|
(11) неа :)
Сделал так: ГУИД = База.String(Выборка.Ссылка.УникальныйИдентификатор()); Получил совсем другой UUID - ща проверю его кошерность в оригинале :) |
|||
13
zenik
12.06.15
✎
12:49
|
Да. все норм. Валидный UUID по COM вытаскиваем вот так:
UUID = База.String(Выборка.Ссылка.УникальныйИдентификатор()); Всем еще раз спасиб. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |