Имя: Пароль:
1C
1C 7.7
v7: Из 77 по OLE в другую 77 - получить обратно параметр из обработки
0 dk
 
13.04.16
13:51
Исходные
База1 77
База2 77
Цепляюсь из База1 в база2, запускаю в База2 отчет с переданными параметрами, хочу получить обратно результаты выполнения отчета

    БазаТорг = СоздатьОбъект("V77.Application");
    
    ПутьТорг            = """******""";
    ПользовательТорг        = """******""";
    ПарольТорг            = """********""";
    Открыта = БазаТорг.Initialize(БазаТорг.RMTrade,"/d"+ПутьТорг+" /N" + ПользовательТорг+ "/P" +ПарольТорг,"NO_SPLASH_SHOW");
                                            
    Если Открыта=0 Тогда
        Если глПользователь.Автопилот = 1 Тогда
            ЗаписьЖурналаРегистрации("Не удалось подключиться к торговой базе!");
        Иначе
            Предупреждение("Ошибка открытия торговой базы!", 60);
        КонецЕсли;
    КонецЕсли;
    
    Пар = БазаТорг.CreateObject("СписокЗначений");
    //Пар = СоздатьОбъект("СписокЗначений");
    
    Пар.ДобавитьЗначение("D:\Настройки.txt",    "Настройки");
    Пар.ДобавитьЗначение(ДобавитьМесяц(ВыбДата,-1),    "ДатаНач");
    Пар.ДобавитьЗначение(ВыбДата,            "ДатаКон");
    
    БазаТорг.ОткрытьФормуМодально("Отчет", Пар, "C:\Users\******\Desktop\отчет.ert");
    
    Сообщить(БазаТорг.ValueToStringInternal(Пар));

Проблема
Внутри база2 в обработке параметр переназначается

Форма.Параметр = ВремРезультат;

Я это в отладчике вижу
но в База1 результат отчета не могу получить - в Пар находится начальный список значений
Без оле такая схема работает на других отчетах
1 dk
 
13.04.16
13:52
можно вернуть результат через временный файл, но интересно почему этот вариант не робит
2 Serginio1
 
13.04.16
13:58
Так работает
Процедура ПриОткрытии()
    Если ПустоеЗначение(Форма.Параметр)=0 Тогда
        Форма.Параметр=Форма.Параметр+" привет из V7";
    КонецЕсли;
КонецПроцедуры // ПриОткрытии

И вызов
Ссылка="123";
        База1с77.ОткрытьФормуМодально("Отчет",Ссылка,ФайлВнешнейОбработки);
        Сообщить(Ссылка);
3 Serginio1
 
13.04.16
14:01
Я часто использую

пар=Форма.Параметр;
Пар.Установить("Результат",ЧтотоТам);
4 пипец
 
13.04.16
14:03
ОЛЕ передает число, строку, дату - на этом всйо !
5 dk
 
13.04.16
14:04
(4) Давай, до свидания! ))
6 Ёпрст
 
гуру
13.04.16
14:07
(0) пихай в массив, элементом которого будет СЗ
7 dk
 
13.04.16
14:46
(3) Спб, помогло

Форма.Параметр.ДобавитьЗначение(ВремРезультат, "Результат");

(6) массив не получилось передать - плохой тип переменной
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший