Имя: Пароль:
1C
1С v8
Прочитать Записи ПланаОбмена через ОЛЕ в УТ 11.1
0 StormProff
 
11.02.14
09:54
Здравствуйте, Уважаемые!
Мне нужно из БП 2 подключиться к УТ 11.1 и прочитать мой ПланОбмена.
Я начала с того что научилась читать непосредственно в УТ, а затем уже подключилась через ОЛЕ и натолкнулась на проблему.

...
База8 = Новый COMОбъект("V82.Application");        
ПодключенаБаза = База8.Connect("File=""" + Путь + """;Usr=""" + Пользов + """;Pwd ="""+СокрЛП(Пароль)+"""");
    
ЗапXML = новый ЗаписьXML();
ЗапXML.УстановитьСтроку();
    
Узел = База8.ПланыОбмена.лд_ОбменБухгалтерия.НайтиПоКоду("21");
    сообщить(Узел.Наименование);
    
ЗапСообщения = База8.ПланыОбмена.СоздатьЗаписьСообщения();
ЗапСообщения.НачатьЗапись(ЗапXML,Узел);
...

База  подключается, название узла выводится, но на последней строчке
выскакивает ошибка:

Ошибка при вызове метода контекста (НачатьЗапись)
    ЗапСообщения.НачатьЗапись(ЗапXML,Узел);
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.2.19.83): Несоответствие типов (параметр номер '1')

Я понимаю что косяк, скорее всего, в ЗапXML, но это объект, с помощью которого осуществляется запись сообщения. Но не знаю как правильно тут сделать. Помогите, пожалуйста!
1 Wobland
 
11.02.14
10:04
=NewObject("ЗаписьXML")
2 Wobland
 
11.02.14
10:05
(1) База.НьюОбжест
3 StormProff
 
11.02.14
10:13
(2) Спасибо! помогло. А что написать чтобы получить реальный UID вместо "COMОбъект"?

Выборка = База8.ПланыОбмена.ВыбратьИзменения(Узел,ЗапСообщения.НомерСообщения);
    
Пока Выборка.Следующий() Цикл
Данные = Выборка.Получить();
    Сообщить(Данные.Ссылка.УникальныйИдентификатор())    КонецЦикла;
4 Wobland
 
11.02.14
10:14
(3) а что ты с ним делать собралась?
5 Wobland
 
11.02.14
10:15
как вариант: Результат=База8.СделайМнеКрасиво()
6 Wobland
 
11.02.14
10:16
я ничего лучше не придумал

    Запрос=Там.NewObject("Запрос");
    Результат=Запрос.Выполнить().Выгрузить();
    Для Каждого ТекСтрока Из Результат Цикл
        ТекСтрока.УИДОрганизации=Там.ЗначениеВСтрокуВнутр(ТекСтрока.Организация);
        ТекСтрока.УИДСклада=Там.ЗначениеВСтрокуВнутр(ТекСтрока.Склад);
        ТекСтрока.УИДНоменклатуры=Там.ЗначениеВСтрокуВнутр(ТекСтрока.Номенклатура);
    КонецЦикла;
    Результат.Колонки.Удалить("Организация");
    Результат.Колонки.Удалить("Склад");
    Результат.Колонки.Удалить("Номенклатура");
7 StormProff
 
11.02.14
10:25
(4) у меня большие планы) Найду Тут док по UID и заменю его на док из Там. А если не найду Тут, то создам с таким UID.

Создавать глобальную в конфе Там и её пользоваться чтобы получать строку Тут? Ого такой фигнёй в 7.7
я не занималась) Там через точку все доставалось)
8 Wobland
 
11.02.14
10:27
что-то смахивает на собственный эксклюзивный велосипед