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