Имя: Пароль:
1C
 
вызов кода из внешнего соединения
0 Chameleon1980
 
28.03.19
10:15
Привет всем

есть база 1 ОФ
есть база 2 УФ

базу 1 менять могу
базу 2 - нет

к базе 2 из базы 1 подключаюсь V8 = Новый COMОбъект("V83.ComConnector");

как из базы 1 вызвать кусок кода в базе 2

кусок лежит в форме сейчас определенной

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

V8 = Новый COMОбъект("V83.ComConnector");
СтрокаСоединения=Константы.СтрокаСоединенияСБазой2.Получить();
Соединение=V8.Connect(СтрокаСоединения);

ВнешняяОбрабокта=Соединение.Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("ИмяМоейОбработки");

ХранилищеВнешнейОбработки=ВнешняяОбрабокта.ХранилищеОбработки.Получить();

Если ХранилищеВнешнейОбработки=Неопределено Тогда
    Возврат;
КонецЕсли;

ИмяВременногоФайла=ПолучитьИмяВременногоФайла("epf");

ХранилищеВнешнейОбработки.Записать(ИмяВременногоФайла);

ВнешнийОтчет=Соединение.ВнешниеОтчеты.Создать(ИмяВременногоФайла, Ложь);

Попытка
    
    ВнешнийОтчет.РеквизитФормыВЗначение("Объект").СведенияОВнешнейОбработке();
    
Исключение
    
    Сообщить(ОписаниеОшибки());
    
КонецПопытки;
    
Открытие=Неопределено;
V8=Неопределено;

пишет:
{ВнешняяОбработка.СтендВызоваМодуляФормыПоВнешнемуСоединению.Форма.Форма.Форма(25)}: Метод объекта не обнаружен (СведенияОВнешнейОбработке)

ЧЯДНТ
1 Chameleon1980
 
28.03.19
10:16
опережу на всякий случай:

1. обработка в файл сохраняется и из файла создается
2. в модуле той обработки есть:
Функция СведенияОВнешнейОбработке() Экспорт
2 zehn
 
28.03.19
10:24
ВнешниеОтчеты это .erf
3 Chameleon1980
 
28.03.19
10:25
без разницы

Соединение.ВнешниеОбработки.Создать(ИмяВременногоФайла, Ложь);
4 Chameleon1980
 
28.03.19
10:26
стоп
5 Chameleon1980
 
28.03.19
10:27
не - нифига
6 Chameleon1980
 
28.03.19
10:28
1. это обработка
2. создаю epf
3. создаю Соединение.ВнешниеОбработки
7 zehn
 
28.03.19
10:48
А зачем тебе вообще РеквизитФормыВЗначение("Объект"), если у тебя в ВнешнийОтчет уже находится точно такой же объект внешней обработки?
8 zehn
 
28.03.19
10:49
Да и вообще, РеквизитФормыВЗначение - это как бы метод формы. Удивительно, что оно вообще что-то возвращает.
9 Chameleon1980
 
28.03.19
11:08
стоп стоп
изначально было без реквизит формы в значение
потом подумал пробовать

изначально, наверное, вот:

Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    V8 = Новый COMОбъект("V83.ComConnector");
    СтрокаСоединения=Константы.СтрокаСоединенияСРозницей.Получить();
    Соединение=V8.Connect(СтрокаСоединения);

    ВнешняяОбрабокта=Соединение.Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("СоздатьЗаписьМодели");
    
    ХранилищеВнешнейОбработки=ВнешняяОбрабокта.ХранилищеОбработки.Получить();
    
    Если ХранилищеВнешнейОбработки=Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    ИмяВременногоФайла=ПолучитьИмяВременногоФайла("epf");
    
    ХранилищеВнешнейОбработки.Записать(ИмяВременногоФайла);
    
    ВнешнийОтчет=Соединение.ВнешниеОбработки.Создать(ИмяВременногоФайла, Ложь);

    Попытка
        
        ВнешнийОтчет.СведенияОВнешнейОбработке();
        
    Исключение
        
        Сообщить(ОписаниеОшибки());
        
    КонецПопытки;
        
    Открытие=Неопределено;
    V8=Неопределено;
    
КонецПроцедуры
10 1Сергей
 
28.03.19
11:09
(9) ну, глянь сохраненный файл. ВСё там нормально? Есть функция?
11 Chameleon1980
 
28.03.19
11:13
(10) да. проверил. файл создался. открыл его - все есть.
12 1Сергей
 
28.03.19
11:14
(11) что в ней?
13 Chameleon1980
 
28.03.19
11:15
может
ИмяВременногоФайла=Соединение.ПолучитьИмяВременногоФайла("epf");
14 Chameleon1980
 
28.03.19
11:21
вызвался метод
"СведенияОВнешнейОбработке" только я пока не понял как
15 Chameleon1980
 
28.03.19
11:22
все работает ребята
всем спасибо
16 Chameleon1980
 
28.03.19
11:23
последнее что поправлял это создание временного файла
было без Соединение.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший