|
Как перехватить переполнение стека встроенного языка на сервере? |
☑ |
0
Lama12
15.02.24
✎
15:42
|
Добрый день!
Есть интеграция ДО с ERP. При передаче данных из ДО в ERP, по измененным объектам, происходит ошибка "Переполнение стека встроенного языка на сервере". Подозреваю, что есть циклическая ссылка в передаваемых объектах.
Вопрос - как перехватить возникновение ошибки? Хочется понять на каких данных возникает ошибка.
|
|
1
Волшебник
15.02.24
✎
15:43
|
Введите счётчик глубины рекурсии. Если он больше 20, значит уже слишком глубоко.
|
|
2
Волшебник
15.02.24
✎
15:46
|
Ещё можно ввести список уже загруженных объектов и постоянно сверяться с ним. Если такой объект уже был, то пропускать.
|
|
3
d4rkmesa
15.02.24
✎
15:52
|
(0) Там в ошибке обычно пишется, собственно, стек вызовов, где видно проблему. Ну и в техжурнале можно собрать по событию excp что-нибудь, что наведет на мысль.
|
|
4
Lama12
15.02.24
✎
16:04
|
(3) В ошибке пишется вызов регламентного задания в котором переполнение и происходит.
(1)(2) Это стандартная конфа без изменений. Попробую сейчас расширение сделать диагностическое. Надеялся без него обойтись.
|
|
5
Волшебник
18.02.24
✎
18:03
|
(2)+ надо просто ввести кэш уже загруженных объектов из Соответствие или индексированной ТаблицаЗначений. Перед загрузкой проверять объект, может он уже был ранее загружен в этом сеансе и тогда его пропускать.
|
|
6
d4rkmesa
20.02.24
✎
11:15
|
(0) Получилось разобраться? Можно в ДО в Сообщениях интегрированных систем примерно определить, какой документ должен передаться (элемент с сообщением не будет помечен на удаление). Можно временно пометить на удаление последующие элементы, а потом вернуть, чтобы изменения не потерялись. В целом, обмен довольно легко отлаживается (сложность в большом количестве объектов), его можно запускать под пользователем не в фоне из регламентных заданий.
|
|
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший