Имя: Пароль:
1C
 
Как перехватить переполнение стека встроенного языка на сервере?
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) Получилось разобраться? Можно в ДО в Сообщениях интегрированных систем примерно определить, какой документ должен передаться (элемент с сообщением не будет помечен на удаление). Можно временно пометить на удаление последующие элементы, а потом вернуть, чтобы изменения не потерялись. В целом, обмен довольно легко отлаживается (сложность в большом количестве объектов), его можно запускать под пользователем не в фоне из регламентных заданий.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший