|
Метод объекта не обнаружен (ТранзакцияАктивна) | ☑ | ||
---|---|---|---|---|
0
virdim
27.04.16
✎
09:43
|
Здравствуйте! У меня есть внешнее соединение к другой базе через ComConnector в которой я в одной транзакции хочу выполнить некоторые действия. Вначале делаю КомПодключение.НачатьТранзакцию(), После всех действий перед завершением транзакции проверяю активна ли она КомПодключение.ТранзакцияАктивна() и получаю такое исключение Метод объекта не обнаружен (ТранзакцияАктивна). Что может быть?
|
|||
1
virdim
27.04.16
✎
10:07
|
Так же может стрелять и на ЗафиксироватьТранзакцию() с такой же ошибкой
|
|||
2
Карупян
27.04.16
✎
11:07
|
может ком соединение уже разорвано?
|
|||
3
virdim
27.04.16
✎
11:08
|
(2) Каким образом может разорваться ком соединение в конструкции типа
Если ком.ТранзакцияАктивна() Тогда ком.ЗавершитьТранзакцию(); конецЕсли |
|||
4
virdim
27.04.16
✎
11:54
|
Ап
|
|||
5
Cyberhawk
27.04.16
✎
12:00
|
Там уже Неопределено
|
|||
6
Serginio1
27.04.16
✎
12:20
|
Делай всю обработку во внешнем отчете
|
|||
7
Serginio1
27.04.16
✎
12:23
|
||||
8
virdim
27.04.16
✎
14:46
|
(5) Нет, там комОбъект.
(6) Зачем? Не хочу в проведении документа городить костыли с внешними обработками. |
|||
9
Serginio1
27.04.16
✎
15:12
|
(8) Значительно удобнее тестировать на стороне сервера.
Просто создаешь на стороне сервера обработку и вызываешь экспортный метод передав параметр. И не нужно изменять конфигурацию. А вот твой подход как раз костыль. Использование внешней обработки ближе к вэб сервису. |
|||
10
virdim
27.04.16
✎
15:16
|
(9) У меня толстый клиент, у меня давно снятая с поддержки конфигурация. У меня вся проблема в том что стреляет это один раз 10-20 и не понятно из-за чего
|
|||
11
Serginio1
27.04.16
✎
17:35
|
(10) Тогда можешь вместо внешней обработки создать модуль с галкой внешнее соединение и сделать нужные экспортные функции которые и дергать с клиента. Это значительно лучше чем писать весь код на стороне клиента подвергая маршалингу каждый вызов и переменные
|
|||
12
virdim
28.04.16
✎
08:20
|
(11) Ну у меня примерно так и работает. В модуле объекта в обработке проведения, вызывается код из внешнего модуля, При этом ссылку на комКоннектор храню ещё как переменную в модуле объекта, потом на форме обращаюсь к этой переменной и фиксирую транзакцию после записи на форме. Это нужно для того что бы документ во внешнем соединении был записан уже после того как записался документ в моей базе и если там документ записался, а у меня нет, то транзакция должна откатиться и документ во внешнем соединении не должен быть записан
|
|||
13
virdim
28.04.16
✎
08:55
|
(12) Поправочка: из общего модуля, а не из внешнего
|
|||
14
Serginio1
28.04.16
✎
09:57
|
(13) Лучше наоборот, после того как все действия на клиенте совершены запускать функцию на сервере которая будет возвращать результат выполнения и по нему уже фиксировать или откатывать транзакцию.
|
|||
15
virdim
28.04.16
✎
10:28
|
(14) У меня всё немного сложнее. Мне во время проведения документа в своей базе нужно провести документ в другой базе, если в другой провелся, то закончить проведение своего, иначе отказаться от проведения своего документа
|
|||
16
Serginio1
28.04.16
✎
10:42
|
(15) Я тебе про это и говорю. Клиент это твоя база, сервер это база к которой подключаешься.
|
|||
17
virdim
28.04.16
✎
11:03
|
(16) Объясни, пожалуйста, поподробнее. Как я откачу у себя документ проведелнный?
|
|||
18
Serginio1
28.04.16
✎
11:52
|
(17) Если ты внутри проведения то отказ= истина.
Если это в транзакции то отменить транзакцию. |
|||
19
Serginio1
28.04.16
✎
11:53
|
В 1С очень плохо с транзакциями. Не говоря уже о распределенных
|
|||
20
virdim
28.04.16
✎
11:59
|
(18) То есть я сначала провожу в коме документ, если он не провелся, то отказ истина моего документа? Так? А если В коме провелся, то что-то плохое случилось с моим документом, в коме записалось, а у меня нет, я же в этом случае уже не смогу откатить документ в коме.
|
|||
21
Serginio1
28.04.16
✎
12:17
|
(20) Так записывай в коме перед записью. Кроме того, ты можешь и распровести.
В любом случае у тебя сейчас есть ошибка связанная с ком. Есть еще вариант сделать экспортные функции в вызываемой базе внутри которых НачатьТранзакцию Зафиксировать |
|||
22
Serginio1
28.04.16
✎
12:18
|
Ну и ОтменитьТранзакцию
|
|||
23
Serginio1
28.04.16
✎
12:18
|
В попытке Исключении
|
|||
24
virdim
28.04.16
✎
12:34
|
(21) Понял, воспользуюсь вашим вариантом если что. Сейчас падений ни у кого не замечено, так что оставлю пока так. Спасибо за обсуждение
|
|||
25
virdim
28.04.16
✎
12:35
|
Хотя опять же не понятна сама причина возникновения и даже не посмотреть ни где:(
|
|||
26
Cyberhawk
28.04.16
✎
12:36
|
"во время проведения документа в своей базе нужно провести документ в другой базе, если в другой провелся, то закончить проведение своего, иначе отказаться от проведения своего документа" // Подход неправильный, ибо не учитывает внезапное нарушение и длительное прекращение взаимодействия между базами
|
|||
27
virdim
28.04.16
✎
12:47
|
(26) Согласен, а как правильно тогда? Код был до меня написан, я пока не искал альтернативу этому методу.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |