Имя: Пароль:
1C
1С v8
Вылет с записью дампа
, ,
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) Такого куска нет. Я просто меняю все реквизиты, а потом в попытке записываю (режим ОбменДанными.Загрузка = Истина).