|
Вылет с записью дампа | ☑ | ||
---|---|---|---|---|
0
tlaloc
02.08.13
✎
15:32
|
Всем доброго дня!
Ситуация: есть две базы на разных конфигах на 8.2.18.61. При записи элемента "Договор контрагента" в одной базе эта база через COM подключается к другой базе, ищет там соответствующий элемент справочника договоров контрагентов, получает объект, меняет в нем то, что поменял юзер в первой базе и наконец записывает. Все договоры проходят на ура, кроме одного, при попытке записи которого в базе №2 через COM база №1 вылетает с записью дампа. Вопрос: может кто встречался с такой ситуацией и знает как лечить? |
|||
1
Сергиус
02.08.13
✎
15:48
|
А если этот договор записать в той базе напрямую(не через COM), то все ок?
|
|||
2
Mitriy
02.08.13
✎
15:48
|
чаще всего в подобных случаях дамп намекает на бесконечную рекурсию...
|
|||
3
tlaloc
02.08.13
✎
15:58
|
(1) Да, пробовал - все Ок
|
|||
4
tlaloc
02.08.13
✎
15:59
|
(2) Ей просто неоткуда взяться имхо.
|
|||
5
Mitriy
02.08.13
✎
16:01
|
(4) и все-таки я бы поискал зацикливание в процедуре записи через ком...
|
|||
6
tlaloc
02.08.13
✎
16:07
|
В базе №2 в модуле объекта (договора) не ни одного цикла.
|
|||
7
Crush
02.08.13
✎
16:09
|
(2) +1
|
|||
8
Crush
02.08.13
✎
16:10
|
(6) Цикл для рекурсии не нужен
|
|||
9
Crush
02.08.13
✎
16:13
|
Попробуй в модуле объекта в процедуре ПриЗаписи() Написать строчку Ссылка.ПолучитьОбъект().Записать() :)
|
|||
10
tlaloc
02.08.13
✎
16:21
|
(9) Спасибо, кэп. Сказано же - проблемы с одним элементом.
|
|||
11
Crush
02.08.13
✎
16:24
|
Сделай во второй базе иммитацию таких же действий и отладчиком найди место где вылетает. Думаю сразу станет понятен косяк
|
|||
12
tlaloc
02.08.13
✎
16:25
|
Как я отлажу СОМ-соединение?
|
|||
13
Crush
02.08.13
✎
16:41
|
ХЗ. Запусти её в обычном режиме и отлаживай
|
|||
14
tlaloc
02.08.13
✎
16:51
|
Эээ.. Ты читал (1) и (3)?
|
|||
15
Crush
02.08.13
✎
17:26
|
А ты его через форму пишешь или интерактивно обработкой через объект?
|
|||
16
tlaloc
02.08.13
✎
17:30
|
Через форму. А разве есть разница? Все равно после всяких обработчиков формы отрабатываются обработчики объекта. Но сейчас попробую через объект.
|
|||
17
tlaloc
02.08.13
✎
17:32
|
Через объект записался влегкую. Через СОМ вылетает с дампом.
|
|||
18
Сергиус
02.08.13
✎
17:36
|
(0) Не пробовал анализировать данные в этом договоре? Возможно в одном из реквизитов сидит какое-ть не очень подходящее для COM значение(чисто предположение).
|
|||
19
Crush
02.08.13
✎
17:37
|
Блин, тут ХЗ.
Знаешь, капай в ту сторону, что через ком нормально передаются только значения простых типов. Если передаются объекты или универсальные коллекции, то могут быть косяки. Хотя больше походит, что что то с данными не так и в коде нет заплатки на косяк. |
|||
20
tlaloc
02.08.13
✎
17:38
|
(18), (19) Как раз скрупулезно сравниваю реквизиты.
|
|||
21
Crush
02.08.13
✎
17:39
|
А кто знает, как ведет себя процедура Сообщить("бла"), если её запустить через ком?
|
|||
22
Сергиус
02.08.13
✎
17:41
|
(21) уж лучше тогда в файл какой-ть лог писать..Если ты про вывод ошибки, которая при записи происходит.
|
|||
23
tlaloc
02.08.13
✎
17:44
|
(21) Вызывает исключение, по-моему. При внешнем соединении метод Сообщить() не хиляет.
Ошибка однозначно в данных. Нарисовал простенькую обработку, которая только подключается к базе №2, находит договор, получает объект и записывает его. Все ОК. Щас буду методом исключения искать в чем шляпа. В любом случае, всем спасибо. |
|||
24
Сергиус
02.08.13
✎
17:46
|
(23) Отпишись ток потом, если поймешь в чем дело..
|
|||
25
tlaloc
02.08.13
✎
17:46
|
(24) ок
|
|||
26
Crush
02.08.13
✎
17:47
|
Не, я про вызов каких то процедур, которые вызывают ошибки.
Например у тебя в договоре есть реквизит Контрагент, у контрагента флаг "БлаБла" = истина и при записи проверяется этот флаг и вызывается процедура, которая нормально отрабатывается в обычном приложении, но не может сработать через ком. Допустим лог пишится по контрагентам с галкой бла, но логу запрещены внешние подключения (или как х там) |
|||
27
Сергиус
02.08.13
✎
17:52
|
(26) Да, вполне так может быть..
|
|||
28
tlaloc
02.08.13
✎
18:03
|
(26) Да, я тебя понял. Проверил, никаких лишних процедур не вызывается (не записываются реквизиты договора ссылочного типа). Меняются только реквизиты типа булево, строка, дата и перечисление.
|
|||
29
tlaloc
02.08.13
✎
18:03
|
Чувствую, засада в перечислении.
|
|||
30
tlaloc
02.08.13
✎
18:10
|
Вообще атас. Вы будете смеяться, но при установке всем известного флага РасчетыВУсловныхЕдиницах (при том, что ОбменДанными.Загрузка = Истина) вылетает.
|
|||
31
tlaloc
02.08.13
✎
18:13
|
Ладно, я домой пойду. В понедельник додумаю. Всем удачных выходных!
|
|||
32
Crush
02.08.13
✎
18:20
|
Отпишись потом о конечной точке вылета.
|
|||
33
Сергиус
02.08.13
✎
23:59
|
<<ИЛИ РасчетыВУсловныхЕдиницах <> Ссылка.РасчетыВУсловныхЕдиницах Тогда
Есть такой кусок кода? Попробуй закомментить его и запиши через COM заново. |
|||
34
tlaloc
05.08.13
✎
10:59
|
(33) Такого куска нет. Я просто меняю все реквизиты, а потом в попытке записываю (режим ОбменДанными.Загрузка = Истина).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |