Re: То ищет, то не ищет...
Пользователь:
Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 09, February, 2007 01:50
Преимущества первого варианта - наглядность и техническая корректность. Можно изменять поле на глазах у пользователя, как только оно потеряет фокус, и эта обработка будет выполняться по оптимальным алгоритмам(ничего лучше чем регулярных выражений для этой цели пока не придумали). Недостаток один, но очень серьезный: регулярные выражения некорректно интерпретируются даже некоторыми популярными браузерами.
Преимуществом второго способа является высокая надёжность. Недостатками - техническая неоправданность решения и необходимость корректировки ВСЕХ используемых форм. Не очень удобно то, что при работе по этому алгоритму возникнет необходимость дополнять запрос в S21All, и теряется возможность использования полей XX_S21STR.
Константин Олегович, в связи с этим небольшая просьба. Пожалуйста, реализуйте двукратную переформулировку запроса для параметра S21All: один раз до выполнения CGIFLK, а второй раз - после. Это позволит передавать из CGIFLK XX_S21STR и освободит пользователя от необходимости писать в скрипте защиты сложные конструкции.
Что касается ИРБИС скрипта для решения этой проблемы, у меня есть образец, позволяющий исправлять основные варианты ошибочных написаний. Может быть кто-нибудь сможет с его помощью решить проблему раньше меня...
if v1000:'.' then if v1000:', ' then, &uf('g0,',v1000) else if v1000:',' then, &uf('g0,',v1000) else &uf('g0 ',v1000) fi, fi,', ' if v1000:',' and (not v1000:', ') then, &uf('g0.'&uf('g2,',v1000))'.' if :'. ' then ' ' &uf('g2 ',&uf('g2,',v1000)) else ' ' &uf('g2.',&uf('g2,',v1000)) fi, else, &uf('g2 v1000',&uf('g0.',v1000))'.' if v1000:'. ' then ' ' &uf('g2 ',&uf('g2 ',v1000)) else ' ' &uf('g2.',&uf('g2 ',v1000)) fi,fi, else v1000 fi
Предполагается, что поле 1000 содержит данные об авторе в некорректной форме.