Имя: Пароль:
1C
1С v8
Вопрос по COM 7.7 - 8
,
0 DmitriyDI
 
10.06.14
10:45
Есть отчет внешний на 7.7, есть база 8ки, вот я могу допустим получить из этого отчета внешнего через ком, таблицу значений которая на выходе и вернуть ее в 8ку, или придется весь код переписывать под 8ку и ком с 7кой?
не совсем понимаю просто, как лучше сделать
1 DmitriyDI
 
10.06.14
10:46
и если могу, то как это сделать?
2 ДенисЧ
 
10.06.14
10:47
Я вот тоже не понимаю. Что ты хочешь сделать :-)
3 DmitriyDI
 
10.06.14
10:48
(2) выполнить все функции во внешней обработке из 7ки и через ком вернуть их результат в 8ку
4 DmitriyDI
 
10.06.14
10:48
(3) Их результатом будет ТЗ
5 DmitriyDI
 
10.06.14
11:07
Пришло осознание того что мне нужно, как мне запустить внешнюю обработку по кому?
6 DmitriyDI
 
10.06.14
11:09
(5) ОткрытьФормуМодально наверное
7 vicof
 
10.06.14
11:12
(6) Удачи.
(0) Данные нужно брать не из отчетов, а из регистров, справочников и документов
8 DmitriyDI
 
10.06.14
11:15
(7) так отчет откуда данные берет)?
9 hhhh
 
10.06.14
11:41
(8) если отчет в результате выдает примитивные типы: число, строка. А если там ссылки на справочники, перечисления? Как ты результат будешь в восьмерке просматривать? Там этих справочников нет.

Поэтому отчет всё равно переписывать придется.
10 DmitriyDI
 
10.06.14
11:44
(9) Да мне нужны примитивные типы там две строки и два числа,
делаю так

Форма = База.ОткрытьФормуМодально("Отчет",,"C:\\Отчет.ert");

ТЗОтчета = Форма.Сформировать1(Парам1,Парам2);

Но почему-то он просто открывает мне форму (
11 del123
 
10.06.14
11:45
Будь мужиком, перепиши обработку под восьмерку!
12 DmitriyDI
 
10.06.14
11:45
(10) Сам по себе отчет этот достаточно большой, много вычислений, и как-то не хочется все это тащить в 8ку
13 del123
 
10.06.14
11:47
Добавь в отчет функцию, которая будет тебе эту табличку возвращать
14 DmitriyDI
 
10.06.14
11:48
(13) да я добавил, см (10) Сформировать1 и возвращает
15 del123
 
10.06.14
11:52
проверь Парам1 и парам2, как в семерке эта функция выполняется
16 DmitriyDI
 
10.06.14
11:56
(15) просто открытьформумодально просто открывает эту форму у меня в 8ке, а я как думал что она просто будет брать из нее функции, может при открытии проверять на передачу параметра формы и написать статусвозврата(0) возврат?
17 DmitriyDI
 
10.06.14
12:00
Значение не является значением объектного типа (Сформировать1) ругается так
18 del123
 
10.06.14
12:03
функция экспортная?
19 DmitriyDI
 
10.06.14
12:03
(18) ага
20 DmitriyDI
 
10.06.14
12:05
может, как-то не так обращаюсь к функции 7рочной?
21 DmitriyDI
 
10.06.14
12:10
(20) в отладчике Форма =0 (число)
22 DmitriyDI
 
10.06.14
12:23
(21)мне кажется ошибка тут
Форма = База.ОткрытьФормуМодально("Отчет",,"C:\\Отчет.ert");
как-то по другому можно обратиться к форме отчета?
23 DmitriyDI
 
10.06.14
12:28
(22) или как-то при открытии формировать эту ТЗ, и возвращать ее сразу, так можно, только куда ее вернуть не понятно
24 kobzon
 
10.06.14
12:30
Проще написать на 8-ке.
25 dk
 
10.06.14
12:30
в приоткрытии формируй и возвращай ТЗ обратно в параметр
---
примеры можешь посмотреть в печатных формах
26 DmitriyDI
 
10.06.14
12:36
(25) спасибо, а где печатные формы найти?)
27 DmitriyDI
 
10.06.14
12:38
(24) не проще там 500 строчек кода
28 DmitriyDI
 
10.06.14
12:39
(27) а тут если получится в 20 уложиться можно, вместе с подключениями со всеми
29 dk
 
10.06.14
13:15
(26) каталог базы подкаталог prnforms
30 Ёпрст
 
10.06.14
13:21
открыл форму модально и еще чего -то ждёт после этого.
Ничего, лето большое.. к концу придёт осознание того, что пока форму не закроють, управление дальше не пойдёт..и весь код опосля открытьформумодально бесполезен.
31 Serginio1
 
10.06.14
14:12
(30) Если внутри приОткрытии нет закрытия формы и передачи в Форма.Параметр нужного значения. Это семерочный подход.
Для 8 ки Ему нужно что типа такого

ДляВнешнегоСоединения= Сервер.ВнешниеОбработки.Создать(ПутьКОбработке);
    
    Объект=ДляВнешнегоСоединения.ВычислитьВыражение("Документы.ЗаказПоставщику.СоздатьДокумент()");
32 Serginio1
 
10.06.14
14:20
(0) Тебе во внешнем отчете нужно прописать что то такое.

Процедура ПриОткрытии()
Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначений" Тогда
    Док=Форма.Параметр.Получить("Документ");
    Форма.Параметр=ПолучитьДанныеДляВозврата(Док);
    Форма.Закрыть();
КонецЕсли;  

КонецПроцедуры


И вызов соответственно

Спз=СоздатьОбъект("СписокЗначений");
    Спз.Установить("Документ",Докумен);
    
    
    расположениеФайла(путь,имя);
    ОткрытьФормуМодально("Отчет#",Спз,путь+ИмяОбработки_ert);
    
    Если ТипЗначенияСтр(спз)="СписокЗначений" Тогда
33 DmitriyDI
 
10.06.14
14:26
(30) (32) так я же пишу

СписокЗначений = База.CreateObject("СписокЗначений");
СписокЗначений.ДобавитьЗначение(ВыбНачПериода);

Форма = База.ОткрытьФормуМодально("Отчет",СписокЗначений,"С:\\Отчет.ert");
    
А в 7ке такой код

Если Форма.Параметр.РазмерСписка()>0 тогда  
     Форма.Параметр = Сформировать1(Форма.Параметр.ПолучитьЗначение(1));
     Возврат;
КонецЕсли;
34 DmitriyDI
 
10.06.14
14:26
как мне получить этот параметр блин его)
35 Serginio1
 
10.06.14
14:29
Ну тут два варианта.
Первый Если ты читал то
Форма.Параметр = Сформировать1(Форма.Параметр.ПолучитьЗначение(1));
Форма.Закрыть();

Второй если ты в процедуре приОткрытии

Форма.Параметр = Сформировать1(Форма.Параметр.ПолучитьЗначение(1));
СтатусВозврата(0);
     Возврат;
36 DmitriyDI
 
10.06.14
14:37
(35) написал по второму варианту, захожу в 8рочный отладчик смотрю чему равно Форма = 0 (число)
37 Serginio1
 
10.06.14
14:41
(36) А почему ты смотришь на форму а не на СписокЗначений?
38 DmitriyDI
 
10.06.14
15:54
(37) я заметил одну закономерность, если я пишу при открытии что-то, то он вообще форму не открывает
39 Serginio1
 
10.06.14
16:21
(38) А зачем тебе открытие формы?
В 7 ке нельзя вызвать метод формы. Поэтому извращаются через
Форма.Параметр
И соответственно, что бы был возврат сразу после выполнения
устанавливают в Форма.Параметр нужное значение и закрывают форму
40 DmitriyDI
 
10.06.14
16:31
(39) соответственно я не могу передать параметры если он вообще не открывает ее (такое ощущение, что просто обходит стороной)
41 lex-kex
 
10.06.14
16:38
При открытии 7-ой формы передавай туда 7-ый список значений

Список = База.NewObject("СписокЗначений")
База.ОткрытьФорму("Отчет",Список,"С:\отчет.ert");
В 7.ке в этот список добавляй ответ, в список
а затем в 8-ке получай его
КомИз7ки = Список.ПолучитьЗначение(1);

Что-то типа того
42 Serginio1
 
10.06.14
17:10
(40) Как это не можешь?
Форма = База.ОткрытьФормуМодально("Отчет",СписокЗначений,"С:\\Отчет.ert");

СписокЗначений это и есть параметр. Обычно передается список значений.
Только путь у тебя неправильный вроде как.
Ты сначала из 7ки в отладчике посмотри что делается.
А заодно проверь путь Фс.СуществуетФайл(
43 Serginio1
 
10.06.14
17:11
Судя по     "С:\\Отчет.ert"
должно быть "С:\Отчет.ert"
44 DmitriyDI
 
10.06.14
17:27
(43) да это я так написал, отчет существует и он открывается даже если я при открытии ничего не пишу
45 Serginio1
 
10.06.14
18:00
Отладчик то что говорит?
46 Serginio1
 
10.06.14
18:01
Проверь сначала вызов из 7 ки без всяких оле