Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Бесконечная рекурсия          
Batchir Подменю пользователя
сообщение 09.02.09, 17:37
Сообщение #1

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1443 раз
Рейтинг: 0

В модулях 1С:Предприятия может быть организован рекурсивный вызов процедуры. Простейшим примером является вызов процедуры из этой же процедуры. Возможность рекурсивного вызова может использоваться для реализации различных алгоритмов. Например, с помощью рекурсивного вызова может реализовываться обход результата запроса по иерархии справочника, так как количество уровней группировок иерархии справочника заранее не определено.  
При реализации рекурсивного вызова разработчик конфигурации должен обеспечить выход из рекурсии по какому-либо условию и не допустить бесконечной рекурсии.

Следует учитывать, что на каждом уровне вызова процедуры система использует некоторое количество памяти. Если возникает бесконечная рекурсия, то сначала происходит «зависание» системы, так как выполняется многократный вызов процедуры, а потом, когда исчерпывается доступная память, происходит аварийное завершение. При этом система не может диагностировать такую ошибку, как ошибку выполнения модуля, так как нет возможности определить, когда рекурсия соответствует замыслу разработчика, а когда рекурсия становится бесконечной из-за ошибки в алгоритме. Поэтому при ошибке в модуле, приведшей к бесконечной рекурсии, не выдается сообщение об ошибке встроенного языка, а происходит аварийное завершение работы системы.

Также следует учитывать, что бесконечная рекурсия может быть инициирована не только явным вызовом процедуры из этой же процедуры, но и вызовом из некоторого обработчика действия, вызывающего этот же обработчик. Например, если в форме в обработчике ПриСменеСтраницы() установить активную страницу панели, то будет снова вызван обработчик ПриСменеСтраницы() и т.д. Таким образом, будет инициирована бесконечная рекурсия, и произойдет аварийное завершение работы системы.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 15.06.25, 22:48
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!