Ошибка “Превышен максимальный уровень вложенности хранимой процедуры, функции, триггера или представления (ограничение 32)”

Данная ошибка может выходить при открытии договора организации (Справочники — Организации — открываем на редактирование любую из выбранных организаций — вкладка “Договоры” — открываем на редактирование договор), либо при нажатии на кнопку «Аванс» в модуле «Платные услуги».

Может быть две причины, почему возникает такая ошибка:

Случай 1:

нужно запустить скрипт 1

select * 

from GROUPSERVICES

where OWNER = ID

Где GROUPSERVICES — таблица , где хранятся группы услуг, OWNER — поле в таблице GROUPSERVICES, которое указывает на “родителя” этой записи, ID — идентификатор записи.

Если при выполнении этого запроса вышел результат с записями, получается, что “родитель” ссылается сам на себя, такого быть не может! В таком случае надо выяснить, к какой родительской группе принадлежит данная запись(можно зайти в прайс, по названию группы услуг определить, где находится она), либо если у неё нет родителя, нужно обновить OWNER этой записи, поставить 0, то есть нужно выполнить один из скриптов:

1.1 если эта запись принадлежит к какой-то родительской группе:

update  GROUPSERVICES

set OWNER = здесь указываете ID родительской группы

where ID = здесь указываете ID записи

1.2 если у записи нет родителя

update  GROUPSERVICES

set OWNER = 0

where ID = здесь указываете ID записи

Случай 2:

Когда группа услуг ‘A’ является с одной стороны родителем для группы услуг ‘B’, но с другой стороны эта группа услуг ‘B’ тоже является родителем для группы услуг ‘A’. Из-за данной особенности получается бесконечная рекурсия и возникает ошибка. 

Скрипт, который отобразит данные группы:

Select * from  GROUPSERVICES GS

where 

GS.OWNER IN (Select GS2.ID FROM GROUPSERVICES GS2 WHERE GS2.OWNER = GS.ID)