Имя: Пароль:
1C
1С v8
COM соединение
,
0 sanechichek
 
08.11.12
15:12
Как можно через COM соединение получить процедуру объекта, сейчас делаю так, но не получается:
 V82 = Новый COMОбъект("V82.COMConnector");
 ConnectV82 = V82.Connect(СтрокаСоединения);
 НужныйОтчет = ConnectV82.Отчеты[ИмяОбъекта].Создать()
 //вот тут вызываю процедуру, но он ее не видит(
 НужныйОтчет.СформироватьОтчет(ТабличныйДокумент)

Что делаю не так?
1 prog01
 
08.11.12
15:14
(0)возможно она не экспорт
или нужно получить форму открыть и тогда только к её процедуре обратиться

и вообще для таких фокусов лучше аппликейшен вызывать
2 sanechichek
 
08.11.12
15:18
(1) процедура точно экспортная, если делаю не через COM то все нормально.
аппликейшен медленнеt и потом, очень часто ругается на несовместимость версий клиента и сервера и не всегда помjгает regsvr32 comcntr.dll
3 Лефмихалыч
 
08.11.12
15:20
(0) отладчик что говорит про НужныйОтчет.Метаданные().имя ?
4 sanechichek
 
08.11.12
15:23
(3) НужныйОтчет.Метаданные().имя = "ВаловаяПрибыль"
5 Лефмихалыч
 
08.11.12
15:24
(4) это тот отчет, который тебе нужен?
6 GLazNik
 
08.11.12
15:24
(4) а текст об ошибке какой?
7 sanechichek
 
08.11.12
15:26
(5) да тот
(6) Метод объекта не обнаружен (СформироватьОтчет), но процедура точно есть
8 zladenuw
 
08.11.12
15:27
СформироватьОтчет? случайно не на форме ?
9 sanechichek
 
08.11.12
15:29
(8) нет
10 Лефмихалыч
 
08.11.12
15:30
(7) если метод объекта не обнаружен, значит метода нет. Либо кэш конфигурации, либо не ту базу запускаешь по СОМ
11 sanechichek
 
08.11.12
15:33
(10) базу точно ту запускаю, возможно это особенности COM соединения?
12 zladenuw
 
08.11.12
15:33
(10)
а вот и нет.
   Отчет = ИсточникСоединение.Отчеты["ABCАнализПродаж"].Создать();
   Отчет.СформироватьОтчет(Новый ТабличныйДокумент);
Такая же ошибка.
13 prog01
 
08.11.12
15:35
(2)умничай дальше
ТабличныйДокумент доступен по ком?
14 sanechichek
 
08.11.12
15:37
(13) да
15 Вяйнемейнен
 
08.11.12
15:38
А какой текст ошибки? Может он процедуру видит, но в ней используются объекты или глобальные модули, недоступные COM-соединению.
16 Spieluhr
 
08.11.12
15:39
под #Если Клиент Тогда
скорее всего процедура СформироватьОтчет() попадает
17 prog01
 
08.11.12
15:39
попытка
исключение
сообщить(ОписаниеОшибки())
конец
18 sanechichek
 
08.11.12
15:39
(15) ошибка: "Метод объекта не обнаружен (СформироватьОтчет)"
19 zladenuw
 
08.11.12
15:40
нет.
Если Аплю брать то ошибка другая
{Форма.Форма.Форма(184)}: Ошибка при вызове метода контекста (СформироватьОтчет)
   Отчет.СформироватьОтчет(Новый ТабличныйДокумент);
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.2.16.368): {Отчет.ABCАнализПродаж.МодульОбъекта(423)}: Ошибка при вызове метода контекста (Вывести)
Произошла исключительная ситуация (1C:Enterprise 8.2.16.368): Несоответствие типов (параметр номер '1')
20 prog01
 
08.11.12
15:40
(18)он экспортный?
21 zladenuw
 
08.11.12
15:41
(19) не важно что за ошибка. то есть через COMConnector. не хочет отчет формироваться :)
22 prog01
 
08.11.12
15:42
(18)а "ConnectV82.Отчеты[ИмяОбъекта].Создать()
" точно выдает отчет
я просто не помню может нужно через  V82.
23 prog01
 
08.11.12
15:42
?
24 Spieluhr
 
08.11.12
15:42
(21) недоступна эта процедура во внешнем соединении. смотри еще раз (16)
25 sanechichek
 
08.11.12
15:42
(16) точно, процедуру не видит потому что она выполняется только на клиенте.
26 prog01
 
08.11.12
15:44
(2)"очень часто ругается на несовместимость версий клиента и сервера и не всегда помjгает regsvr32 comcntr.dll"
ещё и 1с криво стоит... любители бубнов с танцами и вазелинов с ведрами?
27 sanechichek
 
08.11.12
15:47
подскажите тогда как запустить клиента для выполнения определенной процедуры, то есть в моем случае для формирования отчета.
28 Spieluhr
 
08.11.12
15:50
(27)запустить не ком объект, а аппиликейшн и показать окно. Окно естественно будет новое.
29 prog01
 
08.11.12
15:51
Попытка
       
       cntr81 = Новый COMObject("V82.Application");
       
       Сonnection81 = cntr81.Connect(СтрокаПодключения + "Usr=""RZ"";Pwd=""111""");
       
   Исключение
       
       ЗаписьЖурналаРегистрации(ОписаниеОшибки());
       
       //ВызватьИсключение("");
       
       Возврат;
       
   КонецПопытки;
   
   ПутьК_Обработке = Константы.ПутьК_ОбработкеЗагрузкиИзДурдома.Получить();
   
   ОбработкаВыгрузки = cntr81.ВнешниеОбработки.Создать(ПутьК_Обработке);
   
   ОбработкаВыгрузки.ЗагрузитьСправочники();
30 prog01
 
08.11.12
15:52
(0)совсем забыл спросить а нафига тебе вывод в макет?
может нужно результат запроса перебрать?
31 sanechichek
 
08.11.12
15:53
(30) мне нужно по расписанию сохранять отчет в xls.
32 Defender aka LINN
 
08.11.12
15:55
Еще процедура может быть не совсем экспортной
33 prog01
 
08.11.12
15:56
(31)а база в котой это нужно делать не переделывать?
34 sanechichek
 
08.11.12
15:58
(33) нет, база типовая и переделывать не желательно
35 sanechichek
 
08.11.12
15:58
выполнил: regsvr32.exe "C:\Program Files (x86)\1cv82\8.2.15.310\bin\comcntr.dll"
и всеравно пишет о несоответсвии версии
36 prog01
 
08.11.12
16:00
(35)это значит что версия откуда ты лезешь не совпадает с версией твоего сервера на котором куда

поставь тоже что и там где куда
37 sanechichek
 
08.11.12
16:03
(36) у меня версия клиента и версия сервера одинаковы 8.2.15.310
38 Лефмихалыч
 
08.11.12
16:04
(35) сноси лишние релизы, по-другому ни ком, ни олю не заставить нужный релиз использовать
39 sanechichek
 
08.11.12
16:06
(38) не могу, у меня у разных клиентов разые релизы.
40 Лефмихалыч
 
08.11.12
16:07
(39) тогда живи с этим
41 sanechichek
 
08.11.12
16:07
а может есть какой-то ключ с помощью которого, при запуске 1с будет выполнятся указанная процедура?
42 Spieluhr
 
08.11.12
16:08
(41) направление мысли верное
43 sanechichek
 
08.11.12
16:13
(42) вот только не могу найти с каким ключом запустить
44 Вяйнемейнен
 
08.11.12
16:24
Сделай внешнюю обработку, вырежь в нее нужные процедуры печати и запускай 1С с ключом /EXECUTE путь_к_файлу_обработки
45 prog01
 
08.11.12
16:27
(39)так подключись в данном случае с того же релиза
включи мозг
46 sanechichek
 
08.11.12
16:45
(45) что серьезно? а я то думаю почему у меня не получается)
я ж уже писал что подключаюсь с нужного релиза.
47 prog01
 
08.11.12
16:56
(46)а вы почаще регте всякую ботву нештатно, вообще всё работать перестанет
48 prog01
 
08.11.12
16:56
(46)там хоть база та на 8.2? )))
49 sanechichek
 
08.11.12
17:02
(48) прикалуешся? короче переустановил платформу и помогло.
50 prog01
 
08.11.12
17:09
(49)отчет сформировался?
51 sanechichek
 
08.11.12
17:11
(50) да, всем спасибо!
Закон Брукера: Даже маленькая практика стоит большой теории.