|
Метод объект на обнаружен в comобъекте | ☑ | ||
---|---|---|---|---|
0
John83
22.02.22
✎
17:40
|
Обмен из УТ 10.3 в БП 2.0
В какой-то момент выдает Метод объекта не обнаружен (УстановитьСубконто) Это про Соединение.БухгалтерскийУчет.УстановитьСубконто( Вопрос в том, куда этот метод девается? Функция экспортная. https://d.radikal.ru/d19/2202/b0/973929a684d0.png |
|||
1
Жан Пердежон
22.02.22
✎
18:00
|
COM - прошлый век, пили веб-серисы
|
|||
2
TormozIT
гуру
22.02.22
✎
18:20
|
(0) инструкции препроцессора ее отключили для режима ВнешнееСоединение
|
|||
3
vicof
22.02.22
✎
18:49
|
(1) +1
|
|||
4
серый КТУЛХУ
22.02.22
✎
18:55
|
(1) веб-серисы - прошлый век, пили http-серисы
|
|||
5
John83
22.02.22
✎
19:55
|
(2) можно чуть пояснить?
почему эта ошибка возникает? В большинстве случаев метод на месте. |
|||
6
John83
22.02.22
✎
19:56
|
(1) это допиленный типовой обмен
|
|||
7
TormozIT
гуру
22.02.22
✎
21:07
|
(5) Судя по картинке и с учетом плавающего проявления, тут не (2), а другая причина какая то, например ошибка платформы. Какая версия платформы?
|
|||
8
ДедМорроз
22.02.22
✎
21:07
|
Так в переменной может быть кто-то другой или,скажем,Неопределено.
Com здесь не виноват. |
|||
9
серый КТУЛХУ
22.02.22
✎
21:09
|
х32 / х64 ?
|
|||
10
TormozIT
гуру
22.02.22
✎
23:15
|
Скорее всего во внешнем соединении происходит перед этим нештатная ситуация, которая приводит к его порче. Рекомендую анализировать техножурнал и журнал регистрации в базе внешнего соединения.
|
|||
11
ДедМорроз
23.02.22
✎
10:51
|
Я бы еще посмотрел внутри функции,очень возможно,что там вызывается одноименный метод для какого-то объекта,а 1с через com просунуть всю ошибку не может.
|
|||
12
ДедМорроз
23.02.22
✎
10:55
|
Еще обращаю внимание,что вы в вызов функции передаете переменную Соединение,так точно делать нельзя,т.к.или в нее что-то запишется или та база получит очень странный объект.
В любом случае,после первого вызова переменная соединения будет испорчена. |
|||
13
mistеr
23.02.22
✎
11:06
|
(8) Картинку не смотрел?
|
|||
14
TormozIT
гуру
23.02.22
✎
11:07
|
(12)
> так точно делать нельзя Так можно делать. Всегда так делал. |
|||
15
John83
23.02.22
✎
11:36
|
(7) ошибка не такая критичная, но тянется уже очень давно
8.3.20.1674 |
|||
16
John83
23.02.22
✎
11:36
|
(9) х64
|
|||
17
ДедМорроз
23.02.22
✎
11:40
|
(14)когда вы в функцию com-базы передаете ссылку на саму базу,то будет выполняться преобразование туда при ввзове и преобразование обратно при возврате из функции - здесь никто не дает гарантии корректного преобразования.
Если очень хочется,то скопируйте в другую переменную значение перед передачей - явно ошибка,указанная в (0) уйдет. |
|||
18
John83
23.02.22
✎
12:22
|
(17) сделал так
ОбъектПодключения2 = ОбъектПодключения; ОбменДанными_УСУ.ВыгрузитьДвиженияКомплектаций(ОбъектПодключения2); не помогло |
|||
19
John83
23.02.22
✎
12:22
|
(10) по крайне мере в ЖР ошибок нет
|
|||
20
hhhh
23.02.22
✎
12:29
|
(19) а зачем Соединение передавать в качестве параметра? Это же бред.
|
|||
21
John83
23.02.22
✎
12:33
|
(20) что не подключаться по новой
|
|||
22
acht
23.02.22
✎
12:35
|
(20) > Это же бред.
Неа. Это совершенно обычная практика передачи параметра по ссылке. Ну, в рамках одного серверного вызова, конечно. Детмороз гонит, потому как ему где-то почудилась передача соединения с удаленной базой в метод удаленной базы, типа Соединение.МодульУдаленнойБазы.МойМетод(Соединение). |
|||
23
lg2marvel
23.02.22
✎
12:44
|
А в базе корреспонденте точно есть модуль БухгалтерскийУчет.УстановитьСубконто()
У меня было похожее когда у функции УстановитьСубконто была директива компиляции НаСервере. |
|||
24
acht
23.02.22
✎
12:45
|
(23) > директива компиляции
Про это еще в (2) сказали =) |
|||
25
John83
23.02.22
✎
12:47
|
(23) https://b.radikal.ru/b40/2202/b2/4958905b8812.png
но я бы понял, если бы вообще не работало, но почему-то не срабатывает только иногда |
|||
26
John83
23.02.22
✎
12:50
|
почему соединение не видит мой модуль в БП?
https://a.radikal.ru/a25/2202/87/ab96dcc8ea45.png настройки аналогичны https://b.radikal.ru/b36/2202/f0/69f268b57d21.png |
|||
27
John83
23.02.22
✎
13:00
|
(23) так и что сделал?
какая директива должна быть? |
|||
28
John83
23.02.22
✎
13:13
|
в БП добавил модуль и там сделал
https://d.radikal.ru/d41/2202/04/937fb7862488.png в УТ соответственно https://d.radikal.ru/d02/2202/9a/131a58e9324f.png в этом случае метод вообще ни разу не находит |
|||
29
acht
23.02.22
✎
13:20
|
(28) Потому что внешнее соединение это не клиент и не сервер.
|
|||
30
John83
23.02.22
✎
13:24
|
(29) ааа
попробую |
|||
31
John83
23.02.22
✎
13:32
|
неа
в БП https://d.radikal.ru/d00/2202/94/deaa5eda9e0f.png в УТ https://a.radikal.ru/a10/2202/8d/2ee92479ba2e.png как и раньше - в большинстве случаев метод есть и несколько раз не находит |
|||
32
ДедМорроз
23.02.22
✎
13:48
|
(22) я не очень внимательно посмотрел картину на радикале.
Там передается результат вызовы функции,в которую передается соединение как параметр. Естественно,что в рамках одной базы с переменной,содержащей com-объект ничего не происходит,а при копировании в другую переменную просто счетчик объекта увеличивается. Понятно,что внутри функции переменную,содержащую объект,можно поменять - это из-за того,что передача происходит по ссылке,но такое поведение от типа и значения в переменной не зависит - если в ней будет число,то с ним можно точно также поступить. Внешнее соединение выполняется в режиме толстого клиента обычного приложения - это можно увидеть,когда подписки на события будут падать с ошибкой передачи мутабельного значения с клиента на сервер. |
|||
33
acht
23.02.22
✎
13:54
|
(32) > Внешнее соединение выполняется в режиме толстого клиента обычного приложения
Не гони. Внешнее соединение выполняется в режиме внешнего соединения. Оно не попадает по директиву компиляции "#Если Клиент", в нем недоступны некоторые типы, например КодВозвратаДиалога... |
|||
34
John83
23.02.22
✎
14:51
|
в БП переделал из процедуры в функцию, чтобы в отладчике была видна.
И в момент ошибки метод все же на месте, но почему-то его не видит https://b.radikal.ru/b01/2202/7f/c336435ffb43.png |
|||
35
John83
23.02.22
✎
14:51
|
полный текст
Метод объекта не обнаружен (УстановитьСубконто) {ОбщийМодуль.ОбменДанными_УСУ.Модуль(2013)}: Соединение.Прометей_ДополнительныйМодуль.УстановитьСубконто(Счет41, НоваяЗапись.СубконтоДт, 1, ПолучитьОбъектПриемника(Выборка.Номенклатура, Соединение)); {Обработка.ОбменДаннымиXML.МодульОбъекта(15061)}: ОбменДанными_УСУ.ВыгрузитьДвиженияКомплектаций(ОбъектПодключения2); {ОбщийМодуль.ПроцедурыОбменаДанными.Модуль(3976)}: УспешнаяВыгрузкаИзИсточника = ОбработкаОбменаДаннымиXML.ВыполнитьВыгрузку(Истина, СтрокаСообщенияОбОшибке, {ОбщийМодуль.ПроцедурыОбменаДанными.Модуль(4083)}: ВыполнитьОбменДаннымиЧерезComСоединение(СтруктураНастроекОбменаДанными, ОбработкаОбменаПриемника); {ОбщийМодуль.ПроцедурыОбменаДанными.Модуль(4387)}: ПроизвестиОбменДаннымиПоНастройке(СтруктураНастроекОбмена); {ОбщийМодуль.ПроцедурыОбменаДанными.Модуль(4496)}: ВыполнитьОбменПоНастройке(НастройкаОбменаДанными, РучнойЗапускОбменов, {Справочник.НастройкиОбменаДанными.Форма.ФормаЭлемента.Форма(317)}: ПроцедурыОбменаДанными.ВыполнитьОбменДаннымиПоПроизвольнойНастройке(ЭтотОбъект.Ссылка, , глЗначениеПеременной("глОбработкаАвтоОбменДанными")); {Справочник.НастройкиОбменаДанными.Форма.ФормаЭлемента.Форма(324)}: ПроизвестиОбменДаннымиДляНастройкиОбмена(); |
|||
36
hhhh
23.02.22
✎
15:40
|
(35) ну посмотрите в этом модуле Прометей_ДополнительныйМодуль, стоит галка внешнее соединение? Ну и директивы препроцессора проверьте.
|
|||
37
pechkin
23.02.22
✎
15:50
|
Релиз платформы какой?
Было как-то что методы пропадали и не только в ком |
|||
38
TormozIT
гуру
23.02.22
✎
15:53
|
Автор кажается до сих пор не понял, что у COM-клиента и COM-сервера могут быть разные версии платформы. COM-сервер у него судя по телеге 8.3.18.1447, а COM-сервер 8.3.20.1674. Ему для начала надо COM-сервер поднять по последнему числу (до 8.3.18.1741)
|
|||
39
TormozIT
гуру
23.02.22
✎
15:53
|
(38) Но разными они могут быть только в случае работы COM-сервера в отдельном процессе.
|
|||
40
TormozIT
гуру
23.02.22
✎
15:56
|
Вероятно у автора еще и COM+ приложение настроено для дружбы между разными версиями платформы через COM (внешнее соединение).
|
|||
41
John83
23.02.22
✎
15:57
|
(38) где ты увидел 8.3.18.1447?
Если бы были разные версии, то вообще не работало. |
|||
42
John83
23.02.22
✎
15:58
|
(37) 8.3.20.1674
если не ошибаюсь, это тянется еще с 8.2 |
|||
43
John83
23.02.22
✎
16:06
|
(36) стоит
в (31) код |
|||
44
John83
23.02.22
✎
16:53
|
рядом с УстановитьСубконто добавил в БП функцию
#Если ВнешнееСоединение Тогда Функция ПроверкаСвязи() Экспорт Возврат Истина; КонецФункции #КонецЕсли В момент ошибки она без проблем отрабатывает https://b.radikal.ru/b05/2202/c0/f89867aad0a9.png Какие еще будут мысли? |
|||
45
hhhh
23.02.22
✎
17:02
|
(44) попробуйте в бп запустить проверку конфигурации
|
|||
46
TormozIT
гуру
23.02.22
✎
17:16
|
||||
47
TormozIT
гуру
23.02.22
✎
17:18
|
(46) Может это конечно другой человек. Он четко не ответил. Может ты прояснишь этот вопрос.
|
|||
48
John83
23.02.22
✎
17:20
|
(47) я в телеге вопросы по 1с никогда не задавал
|
|||
49
TormozIT
гуру
23.02.22
✎
17:23
|
Тогда (38)-(40) мимо.
|
|||
50
TormozIT
гуру
23.02.22
✎
17:49
|
(0) Пробуй на платформе 8.3.18.1741.
|
|||
51
ДедМорроз
23.02.22
✎
19:36
|
(33) ты не совсем понял,что я хотел сказать.
Режимы внешнего соединения и толстый клиент обычное приложение,конечно,же различаются хотя бы тем,что из внешнего соединения не работают все интерыейсные функции,но режим работы с базой у них одинаковый - все вытаскивается на клиента и там обрабатывается. |
|||
52
acht
23.02.22
✎
21:16
|
(51) > ты не совсем понял,что я хотел сказать
Это не я не понял. Это ты не можешь выразится. Ты же буквально высказал, что "Внешнее соединение выполняется в режиме толстого клиента обычного приложения". Это не так. Внешнее соединение - это отдельный вид "клиентского приложения", такого же, как тонкий клиент и толстый клиент. Каждый из этих трех видов клиента поддерживает варианты исполнения кода как на клиенте, так и на сервере, это паралелльные вещи. Твоя фраза "все вытаскивается на клиента и там обрабатывается" такая же ложная. |
|||
53
acht
23.02.22
✎
21:18
|
(52) Лачше, правда, сказать "каждый из этих трех видов клиенского приложения поддерживает варианты исполнения кода как в контексте своей клиентской части, так и на сервере".
|
|||
54
TormozIT
гуру
23.02.22
✎
22:41
|
Мне кажется более системной следующая терминология.
Прикладные (способные выполнять прикладной код) сеансы в базе 1С делятся на - серверные (инструкция препроцессора Сервер) - фоновое задание - web/http/... сервис - клиент-серверные (обязательно клиентский контекст и опционально серверный) - интерактивные (инструкция препроцессора Клиент) - обычное приложение (может работать как COM OLE Automation) - толстый клиент управляемое приложение (может работать как COM OLE Automation) - тонкий клиент управляемое приложение (может работать как COM OLE Automation) - веб клиент - мобильный клиент - неинтерактивые - внешнее соединение или же COMConnection (инструкция препроцессора ВнешнееСоединение) |
|||
55
John83
24.02.22
✎
09:47
|
(50) говорю же и на 8.2 такое было. Сильно сомневаюсь, что версия платформы что-то поменяет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |