Имя: Пароль:
1C
1С v8
ComConnector и хранилищеЗначения
0 Phil_McLaren
 
26.09.13
08:13
Доброго!
Картина такая: есть подключение к двум базам через ComConnector из стороннего приложения на c#. Одна база в роли источника данных, другая - приемник. В частности, из полей элемента справочника в источнике я создаю подобный элемент в приемнике. Один из переносимых реквизитов имеет тип ХранилищеЗначения, с ним-то и возникли проблемы - прямое присвоение реквизиту в приемнике значения реквизита из источника не дает никакого результата, реквизит приемника остается пустым. Методы платформы, насколько я знаю, можно вызывать только через V82.Application, но не ComConnector, так что сделать Execute("ПолучитьАдресФайлаВИнформационнойБазе(Ссылка, ИмяРеквизита)") или что-то подобное я не могу.
Направлений для разрешения проблемы вижу два:
-либо додуматься до способа выполнения произвольного кода через ComConnector и, собственно, сообразить порядок передачи сохраненного значения реквизита
-либо найти верный алгоритм прямого присвоения значений реквизитов, без каких-либо промежуточных буферов типа сериализации
Мнения, советы?
Заранее спасибо всем нашедшим время
1 Phil_McLaren
 
26.09.13
08:27
P.S.:
присваивать пробовал несколькими путями
Приемник.Реквизит=Источник.Реквизит; //непосредственное присвоение
Приемник.Реквизит=Коннектор.NewObject("ХранилищеЗначения",Источник.Реквизит); //через промежуточный объект, лазейку видел разве что в том, что третье ХЗ являлось для приемника "родным" объектом
Приемник.Реквизит=Коннектор.NewObject("ХранилищеЗначения",Коннектор.NewObject("ДвоичныеДанные",Источник.Реквизит.Получить())); //аналогично, только спускаемся до содержимого ХЗ и тоже создаем как "родной" объект приемника
2 Галахад
 
гуру
26.09.13
08:36
Что-то не понял как можно реквизиту в этой базе присвоить значение из той.

Может выгрузить файлик там и загрузить тут?
3 Phil_McLaren
 
26.09.13
08:40
(2) ну ссылку присваивать было бы глуповато, пожалуй, но с двоичными данными из ХЗ не улавливаю в чем объективно может быть проблема
файлик - один из вариантов, как промежуточное хранилище, но для этого нужно оперировать методами платформы, которые недоступны ComConnector
Описание функций модуля внешнего соединения пока не рассматривается, не думаю, что исчерпал все варианты -)
4 Галахад
 
гуру
26.09.13
08:43
(3) Ну как вариант можно написать функцию. И запускать ее на той стороне.
Если менять конфигурацию неудобно, можно запихать ее во внешнюю обработку.
Программист всегда исправляет последнюю ошибку.