|
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(Выборка.Ссылка.УникальныйИдентификатор());
Всем еще раз спасиб.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший