Ошибка ЦФТ или Я чего то не понимаю?
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
nOnAME Участник со стажем
Вступление в Клуб: 25.01.2011
|
Ср Янв 11, 2012 13:23  Ошибка ЦФТ или Я чего то не понимаю? |
|
Полезность: Нет оценки
|
Доброго времени суток. Возникла следующая проблема, появилась необходимость создания расширения над операцией Ликвидация проведенного документа(DEL_DOC) в Платежных документах. Собственно, в расширении выполняется некая функция проверки/анализа. И вот в чем проблема: при создании расширения на операцию DEL_DOC (даже если не вводить в нем ни одной собственной строчки), возникает следующая ошибка: "maximum open cursors exceeded".
Если пройтись по логу, то можно заметить, что DEL_DOC в Платежных документах вызывает DEL_DOC(Ликвидация проведенной папки и документов) в Папки платежей, которая в свою очередь вызывает DEL_DOC в Платежных документах и так до бесконечности.
Ситуация эта возможна только в случае, если документ относится к папке, иначе все проходит без осложнений.
Собственно вопрос, если кто сталкивался с такой проблемой, то как Вы ее решали?
P.S.: Способ об отвязки докумета от папки, затем его проводки и привязки его к тойже папке конечно спасает, но как то этот способ не внушает уверенности. |
|
 |
Alex2019 Профи
Вступление в Клуб: 02.07.2007
|
Ср Янв 11, 2012 15:38   |
|
Полезность: 2
|
День добрый. Дело в том, что не все операции, будучи расширенными, остаются полностью работоспособными. И потому это условие: "даже если не вводить в нем ни одной собственной строчки" не означает сохранения функциональности. Дело в том, что при создании ЦФТ-шного расширения все вызовы этой операции переадресуются на расширение, а глобальные переменные, назначаемые в вызывающих операциях, изменяются только в исходной, расширяемой операции (но не в ее расширении). При исполнение же тела (если посмотреть по F12) происходит замещение назначенных извне значений глобальных переменных (чаще NULL-ом).
Поэтому для операций, которые имеют глобальные переменные, и вызываются из других, в которых эти переменные устанавливаются, в расширении нужно убивать/комментарить в теле строку &BASE$SETVARS; а переменные при необходимости инитить вручную. Другой вариант - инитить переменные расширения из расширения вызывающей, но минусы такого подхода видимо очевидны. |
|
 |
nOnAME Участник со стажем
Вступление в Клуб: 25.01.2011
|
Ср Янв 11, 2012 16:24   |
|
Полезность: Нет оценки
|
Спасибо, по поводу &BASE$SETVARS попробую, не уверен, что в моем конкретном случае поможет, но попробую. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|