1. Уважаемые участники и гости, 19 октября codeby будет работать в режиме "Только чтение". Регистрация новых участников будет закрыта. 20 октября портал продолжит работу в прежнем режиме.

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

Тема в разделе "Lotus - Программирование", создана пользователем Omh, 17 дек 2007.

  1. Omh

    Omh Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Камрады, приветствую!

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

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

    morpheus скриптописец

    Репутация:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    3.915
    Симпатии:
    1
    перехватить мне кажетсья никак...
    разве что зделать не линк лотусовый а кнопу, и перед открытием проверять у документа его поле формы

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

    Omh Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: Morpheus
    Да тут такая ситуация, что для самописного удаления документов использовалась смена названия формы. :o
    Я всего для таких целей юзаю поле-флаг.
    Ну вот и исходя из того, что уже дано, пытаюсь как-то выпрямит ситуацию.
    Выходит не очень :)
     
  4. morpheus

    morpheus скриптописец

    Репутация:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    3.915
    Симпатии:
    1
    <!--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ть минуток
     
  5. Omh

    Omh Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Ну если бы было всё так просто, я бы даже и не спрашивал.
    Там сложный комплекс, много выборок по форме и т.д.
     
  6. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    30 май 2006
    Сообщения:
    1.322
    Симпатии:
    4
    Так причина в том, что поле Form с именем формы "испорчено", но не пустое?

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

    Omh Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: Constantin A Chervonenko
    Особенно если учесть что в каждой базе n форм и для каждой формы создаавать такую же (пусть без кодов) не очень умно.
    Повторюсь, здесь на изменеии имени формы сделано удаление документов.
     
  8. Sandr

    Sandr Гость

    Репутация:
    0
    Переделай все на флаги и не мучайся... такие вещи надо на корню рубить, а то потом еще хуже будет...
     
  9. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    30 май 2006
    Сообщения:
    1.322
    Симпатии:
    4
    Да за ради бога! Нехай форма будет одна и та же, для нормального и "удаленного" док-та. По кр.мере всегда отображаться будет нормально
     
  10. Omh

    Omh Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Говорю как сделано
    Было допустим форма "Document", при удалении она стала "Document_Deleted".
    Форма "Answer" стала "Answer_Deleted".
    Набор форм в каждой базе свой.
    Это придумал не я, так что не пинайте :o
    Это - сложившаяся ситуация.
    Мне надо её разрулить таким образом, что бы при открытии любого удалённого по линку документа он открывался в своей первоначальной форме.
    Причём, каким нибудь централизованным путём, что бы весь код был сосредоточен в одном месте...

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

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

    Akupaka А че я?.. О.о

    Репутация:
    0
    Регистрация:
    4 окт 2007
    Сообщения:
    3.360
    Симпатии:
    2
    офтоп:
    мне кажется, что Вы запутались в том, чего Вам нужно достичь...

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

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

    K-Fire Гость

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

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

    Omh Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: Akupaka
    Я не запутался.
    Я хотел сделать так: при открытии линка на документ с несуществующей формой открывается default form у базы. Правильно?
    У этой формы я на PostOpen подменяю форму на прежнее название (без суффикса _Deleted) и открываю документ в readonly режиме в прежней форме.
    Всё, код сосредоточен в одном месте, перехватываются все попытки открытия.
    Но, перед тем как открыть док в dafault форме lotus выкидывает ошибку о ненахожденни этой формы.
    Её-то я и хочу убрать.

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

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

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

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

    Akupaka А че я?.. О.о

    Репутация:
    0
    Регистрация:
    4 окт 2007
    Сообщения:
    3.360
    Симпатии:
    2
    А я запутался :))

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

    Omh Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: Akupaka
    Не будем течь мыслью по древу.
    Всё равно буду пределывать на флаг.
    Энивэй, спасибо за проявленное внимание :)
     
  16. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    30 май 2006
    Сообщения:
    1.322
    Симпатии:
    4
    Эк вас заклинило.

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

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

    Akupaka А че я?.. О.о

    Репутация:
    0
    Регистрация:
    4 окт 2007
    Сообщения:
    3.360
    Симпатии:
    2
    или даже собрать все алиасы под одну форму, если по длинне хватит...
     
  18. Omh

    Omh Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: Constantin A Chervonenko
    У формы может быть 2 алиаса?
    Для меня это что-то новое....
     
  19. morpheus

    morpheus скриптописец

    Репутация:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    3.915
    Симпатии:
    1
    Для: Omh
    да
     
  20. Omh

    Omh Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Вэу!
    Век живи, век учись.
    Но всё равно смена формы для удаления - гогно-идея.
     
Загрузка...
Похожие Темы - Gерхватить Cannot Locate
  1. Shandrik
    Ответов:
    27
    Просмотров:
    1.040
  2. motogarri
    Ответов:
    6
    Просмотров:
    502
  3. dimat
    Ответов:
    46
    Просмотров:
    5.214
  4. wowa
    Ответов:
    23
    Просмотров:
    1.959
  5. imendan
    Ответов:
    7
    Просмотров:
    1.638

Поделиться этой страницей