|
как вызвать экспортную процедуру по com соединению? | ☑ | ||
---|---|---|---|---|
0
Холодильник
28.05.14
✎
18:00
|
Объект = Новый COMОбъект(V83.ComConnector);
ОбрабатываемаяБазаДанных = Объект.Connect(СтрокаПодключения); выборкаОрг = ОбрабатываемаяБазаДанных.Справочники.Организации.Выбрать(); Пока ВыборкаОрг.Следующий() цикл Если ВыборкаОрг.ПометкаУдаления тогда продолжить; КонецЕсли; Организация = ВыборкаОрг.Ссылка; Отчет = ОбрабатываемаяБазаДанных.Отчеты.ОборотноСальдоваяВедомость.Создать(); Если Не ОбрабатываемаяБазаДанных.СохранениеНастроек.ЗаполнитьНастройкиПриОткрытииОтчета(Отчет) Тогда Отчет.ИнициализацияОтчета(); КонецЕсли; .. ругаетсо на: Метод объекта не обнаружен (ИнициализацияОтчета) почему так? как вызвать экспортную процедуру отчета в подключаемой базе? права полные, подключение выполнено, процедура экспортная в подкл базе есть.. |
|||
1
Segate
28.05.14
✎
18:01
|
Дык ОбрабатываемаяБазаДанных.ИмяМодуля.Имяпроцедуры() не?
|
|||
2
Segate
28.05.14
✎
18:02
|
(1) чукча не читатель, чукча писатель. не читай мой комент
|
|||
3
Холодильник
28.05.14
✎
18:03
|
много лишнего написал. хватит и :
Объект = Новый COMОбъект(V83.ComConnector); ОбрабатываемаяБазаДанных = Объект.Connect(СтрокаПодключения); Отчет = ОбрабатываемаяБазаДанных.Отчеты.ОборотноСальдоваяВедомость.Создать(); Отчет.ИнициализацияОтчета(); Ошибка: Метод объекта не обнаружен (ИнициализацияОтчета) |
|||
4
Segate
28.05.14
✎
18:07
|
(3) а там же создается отчет объект.
Он вроде дает доступ к формам и тд и тп, а к модулям вроде нет... попробуй через отчеты менеджер, хотя я бы на твоем месте не парился бы и вынес бы процедуру в общий модуль ) |
|||
5
Jaap Vduul
28.05.14
✎
18:09
|
(3)
Может метод находится внутри инструкций препроцессора, исключающих его компиляцию в com-исоеднении? |
|||
6
Segate
28.05.14
✎
18:09
|
(3)во: помню, что где то читал.
Внешнее соединение с информационной базой 1С:Предприятие 8 предоставляет полный доступ к глобальному контексту и в качестве своих свойств может иметь: системные константы; значения заданных в конфигураторе объектов, доступ к которым осуществляется с помощью менеджеров (например, константы, перечисления, справочники, документы, журналы документов, отчеты, обработки, планы видов характеристик, планы счетов, планы видов расчета, регистры); переменные, объявленные в модуле внешнего соединения с ключевым словом Экспорт. В качестве своих методов внешнее соединение может иметь: системные процедуры и функции; процедуры и функции модуля внешнего соединения и общих модулей, объявленные с ключевым словом Экспорт; дополнительный метод NewObject. |
|||
7
х86
28.05.14
✎
18:13
|
(0)Типовая?
предположу что инициализировать нужно наверное в ОбщемОтчете, хотя хз, отладчиком глянь ) |
|||
8
Холодильник
29.05.14
✎
08:53
|
(5) и как быть тогда?
|
|||
9
Рэйв
29.05.14
✎
09:02
|
(0)А в чем смысл запуска отчета левой базы в текущей?
|
|||
10
Холодильник
29.05.14
✎
09:11
|
(9) мне нужно сохранить оборотку в файл com-соединением
|
|||
11
nufnufcheg
29.05.14
✎
09:13
|
(8) переписывать
|
|||
12
Рэйв
29.05.14
✎
09:14
|
(10)Выполняй запуск отчета и его выполнение на той стороне.
Имхается мне, на принимаемой текущей стороне оно у тебя летать не будет. |
|||
13
Рэйв
29.05.14
✎
09:15
|
А еще проще напиши обработку, которая запустит отчет по оборотке и сохранит его в файл. И запускай ее по СОМ, а не отчет.
|
|||
14
Infsams654
29.05.14
✎
09:23
|
(12)+ так отчет то нужен по данным той базы или своей?
|
|||
15
Холодильник
29.05.14
✎
09:25
|
(13) не проще, когда у меня овер 100500 баз, из которых нужно выгрузить оборотку. Иначе зачем бы мне нужно было ком-соединение. в 1-2 баз я могу выгрузить и вручную
|
|||
16
Холодильник
29.05.14
✎
09:26
|
(14) было бы странно, если б отчет запускался в "той" базе по сом-соединению, а нужен был по данным "этой" базы
|
|||
17
hhhh
29.05.14
✎
09:30
|
что за конфа? БП?
|
|||
18
Рэйв
29.05.14
✎
09:30
|
(15) Ты не понял что я тебе предлагаю:-) Напиши обработку по выгрузки оборотки в файл , помести ее в свои 100500 баз и запускай по СОМ.
А отчет так скорее всего работать не будет. |
|||
19
Рэйв
29.05.14
✎
09:31
|
+ или его специально нужно будет переписать под СОМ
|
|||
20
Рэйв
29.05.14
✎
09:31
|
в СОМ много ограничений.
|
|||
21
Рэйв
29.05.14
✎
09:32
|
и многие вещи из под негог просто не видны, некоторые команды и общие модули
|
|||
22
Холодильник
29.05.14
✎
09:32
|
(18) я прекрасно понял, что ты мне предлагаешь. поэтому и пишу, что поместить обработку в 100500 баз - слишком трудоемко и глупо для одноразовой операции
|
|||
23
Холодильник
29.05.14
✎
09:32
|
(17) БП 2.0
|
|||
24
hhhh
29.05.14
✎
09:35
|
(23) попробуй ход конем
МойОфигенныйОтчет = ОбрабатываемаяБазаДанных.Отчеты.ОборотноСальдоваяВедомость.Создать(); МойОфигенныйОтчет.ИнициализацияОтчета(); |
|||
25
Холодильник
29.05.14
✎
09:36
|
(24) чем этот ход конем отличается от (3) ?
|
|||
26
Холодильник
29.05.14
✎
09:37
|
+ в инициализации запускается процедура общего модуля, который не поддерживает внешнее соединение.
но я ведь не запускаю его напрямую, я вызываю его из сом-объекта - отчета.. странно.. |
|||
27
hhhh
29.05.14
✎
09:38
|
(25) тем, что глупо газывать переменную "Отчет".
|
|||
28
Холодильник
29.05.14
✎
09:42
|
(27) ок, переименовал. результат тот же
|
|||
29
hhhh
29.05.14
✎
09:44
|
ну тогда нужно хрустальный шар включать, ничего не видно.
сделай тогда проще, как советюют. Заведи процедуру в общем модуде, а в ней эти две строчки. |
|||
30
Холодильник
29.05.14
✎
09:51
|
(29) так тоже нельзя делать. обновлять все 100500 баз ради общего модуля с процедурой - меня же пользователи съедят
|
|||
31
hhhh
29.05.14
✎
09:52
|
(30) если будет отдельный общий модуль, ему на обновления начхать, то пользователи ничего не заметят.
|
|||
32
fisher
29.05.14
✎
10:04
|
(20) +1
Компоновку через COM мне в свое время выполнить не удалось. Поэтому спецом для подобной задачи реализовывал функции общего модуля. Т.е. табличный документ полностью формировался в источнике, а через COM он только забирался готовый (сериализованный). |
|||
33
Infsams654
29.05.14
✎
10:53
|
(32) интересно, как забирался-то? Вроде через СформироватьОтчет его не достать
|
|||
34
fisher
29.05.14
✎
11:05
|
(33) Я ж написал в скобках. Сериализованный. Через XDTO в ЗаписьXML, а в приемнике - обратно.
|
|||
35
Infsams654
29.05.14
✎
11:56
|
(34) так этож надо и источник переделать
|
|||
36
fisher
29.05.14
✎
13:05
|
(35) Да.
|
|||
37
acsent
29.05.14
✎
13:17
|
может там #если Клиент стоит
|
|||
38
Холодильник
29.05.14
✎
14:54
|
Добавил в модуль внешнего соединения процеду:
Процедура COMExecute(ТекстМодуля) Экспорт Выполнить(ТекстМодуля); КонецПроцедуры вызываю: Объект = Новый COMОбъект(V83.ComConnector); ОбрабатываемаяБазаДанных = Объект.Connect(СтрокаПодключения); ОбрабатываемаяБазаДанных.COMExecute(" |Отчет = Отчеты.ОборотноСальдоваяВедомость.Создать(); |Отчет.ИнициализацияОтчета();"); тоже самое - пишет метод не обнаружен |
|||
39
Jaap Vduul
29.05.14
✎
15:10
|
(38)
Это называется "те же яйца. только в профиль" |
|||
40
Холодильник
29.05.14
✎
15:17
|
(39) ага, я уже понял.. ладно, сделаю по-другому..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |