Gерхватить Cannot Locate Form "zzz"

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
#1
Камрады, приветствую!

Прошу приложить немного знаний, что бы ответить на вопрос поставленный в сабжекте.

Диспозиция такова:
В базе есть документы на форме, которой не существует.
Но есть default'овая форма
При открытии линка до документ без формы лотус материться "Cannot locate form" и только потом открывает документ в дефалтовой форме.
Есть идеи как убрать информацию об ошибке ненахождения формы?
 

morpheus

скриптописец
07.08.2006
3 915
1
#2
перехватить мне кажетсья никак...
разве что зделать не линк лотусовый а кнопу, и перед открытием проверять у документа его поле формы

а так, вообще надо пройтись по всем документам у которых левые формы и прописать им нужные
 

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
#3
Для: Morpheus
Да тут такая ситуация, что для самописного удаления документов использовалась смена названия формы. :o
Я всего для таких целей юзаю поле-флаг.
Ну вот и исходя из того, что уже дано, пытаюсь как-то выпрямит ситуацию.
Выходит не очень :)
 

morpheus

скриптописец
07.08.2006
3 915
1
#4
<!--QuoteBegin-Omh+17:12:2007, 17:17 -->
<span class="vbquote">(Omh @ 17:12:2007, 17:17 )</span><!--QuoteEBegin-->использовалась смена названия формы.
[snapback]90205" rel="nofollow" target="_blank[/snapback]​
[/quote]
Ну так повторить операцию, "удалёным" докуметам проставить поле формы, собачный агент за 5ть минуток
 

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
#5
Ну если бы было всё так просто, я бы даже и не спрашивал.
Там сложный комплекс, много выборок по форме и т.д.
 

Constantin A Chervonenko

Well-Known Member
Lotus team
30.05.2006
1 333
4
#6
Так причина в том, что поле Form с именем формы "испорчено", но не пустое?

Ну, создайте вы ему такую форму .. (или дайте алиас существующей)
 

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
#7
Для: Constantin A Chervonenko
Особенно если учесть что в каждой базе n форм и для каждой формы создаавать такую же (пусть без кодов) не очень умно.
Повторюсь, здесь на изменеии имени формы сделано удаление документов.
 
S

Sandr

Гость
#8
Переделай все на флаги и не мучайся... такие вещи надо на корню рубить, а то потом еще хуже будет...
 

Constantin A Chervonenko

Well-Known Member
Lotus team
30.05.2006
1 333
4
#9
Для: Constantin A Chervonenko
Особенно если учесть что в каждой базе n форм и для каждой формы создаавать такую же (пусть без кодов) не очень умно.
Повторюсь, здесь на изменеии имени формы сделано удаление документов.
Да за ради бога! Нехай форма будет одна и та же, для нормального и "удаленного" док-та. По кр.мере всегда отображаться будет нормально
 

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
#10
Говорю как сделано
Было допустим форма "Document", при удалении она стала "Document_Deleted".
Форма "Answer" стала "Answer_Deleted".
Набор форм в каждой базе свой.
Это придумал не я, так что не пинайте :o
Это - сложившаяся ситуация.
Мне надо её разрулить таким образом, что бы при открытии любого удалённого по линку документа он открывался в своей первоначальной форме.
Причём, каким нибудь централизованным путём, что бы весь код был сосредоточен в одном месте...

Можно через Form Formula у default view в базе, но этот способ работает только если линк сгенерен LS кодом (ту линка в DXL есть унид вью через которое он будет окрываться)

А вообще Sandr прав, предчувствую день офигенно креативной работы :)
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
#11
офтоп:
мне кажется, что Вы запутались в том, чего Вам нужно достичь...

сначала Вы хотели: "убрать информацию об ошибке ненахождения формы", а теперь говорите, что Вам нужно: "что бы при открытии любого удалённого по линку документа он открывался в своей первоначальной форме"...

если формирование имени формы в "удаленном" документе такое как Вы указываете (Форма "Answer" стала "Answer_Deleted".), то в чем состоит сложность сделать обратное "исправление" с дополнительным внесением указывающего на удаление флага?..
 
K

K-Fire

Гость
#12
Если у формы "Answer" не прописан алиас - то можно сделать так как Константин предложил. Самый простой и негеморойный способ.
Если "Answer" это и есть алиас, а имя формы чтонить типа "2. Вопрос", то тут есть 2 варианта:
1й это хак - сделать копию каждой формы и обозвать её "Answer_Deleted"
2й вариант правильный, но наиболее трудоемкий - переделать функцию удаления полностью на флаг, модифицировать вьюшки, и сконвертить существующие документы.

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

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
#13
Для: Akupaka
Я не запутался.
Я хотел сделать так: при открытии линка на документ с несуществующей формой открывается default form у базы. Правильно?
У этой формы я на PostOpen подменяю форму на прежнее название (без суффикса _Deleted) и открываю документ в readonly режиме в прежней форме.
Всё, код сосредоточен в одном месте, перехватываются все попытки открытия.
Но, перед тем как открыть док в dafault форме lotus выкидывает ошибку о ненахожденни этой формы.
Её-то я и хочу убрать.

Обратное исправление я могу сделать, я не хочу код раскидывать по формам.
Я хочу что бы он был централизован.

Для: K-Fire
"Answer" это именно алиас.
И делать для каждой формы ещё одну такую же но с суффиксом "_Deleted", ну, Вы сами понимаете...

Вообще, конечно, делать удаление документов изменеием названия формы - тот ещё изврат.
Буду переделывать на флаг, но позже.

То что код надо рефакторить, даже если не стоит задача по изменени, а просто стал чуток опытнее - 100%
Полезно перечитать что-то написаное год назад и улучшить.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
#14
А я запутался :))

зачем раскидывать код по формам? О_о
из того, что я понимаю, то можно все в одном агенте сделать... это и есть ваш, так называемый, рефакторинг... :)
 

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
#15
Для: Akupaka
Не будем течь мыслью по древу.
Всё равно буду пределывать на флаг.
Энивэй, спасибо за проявленное внимание :)
 

Constantin A Chervonenko

Well-Known Member
Lotus team
30.05.2006
1 333
4
#16
Для: Akupaka
Я не запутался.
...
Я хочу что бы он был централизован.
...
И делать для каждой формы ещё одну такую же но с суффиксом "_Deleted", ну, Вы сами понимаете...
Эк вас заклинило.

Да не надо-же делать 2-ю форму с суффиксом *_Deleted. Надо в св-ва каждой формы добавить алиас вида <имяформы>_Deleted.

Это можно сделать в одном месте, один раз, причем программно (маленький одноразовый агентец, можно даже формульный)
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
#17
или даже собрать все алиасы под одну форму, если по длинне хватит...
 

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
#18
Для: Constantin A Chervonenko
У формы может быть 2 алиаса?
Для меня это что-то новое....
 

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
#20
Вэу!
Век живи, век учись.
Но всё равно смена формы для удаления - гогно-идея.