if getfirst hdr_ps=tsOK then
if getfirst ps_lines=tsOK then
If getfirst katmc1=tsOK then
{
} while ((pos(upcase('В'),upcase(katmc1.name))=1 <>tsOK) and (getnext katmc1=tsOK))
В 7.11 позиционирование происходило нормально. В 7.12 позиционируется только если нужная запись стоит последней.
Если добавить в фильтр запроса эту строчку, то вообще ничего не выгружается:
(pos(upcase('В'),upcase(katmc1.name))=1 <>tsOK)
Что я делаю не так?
В _loop не рекомендуется делать модификацию полей , входящих в сегменты индекса, по которому делается проход. Все остальные поля модифицировать - ради бога ...
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
а в сапорте то выбора проходит?
и зачем писать
(pos(upcase('В'),upcase(katmc1.name))=1 <>tsOK)
булиновское значение сравниваете с word
pos=1 уже тогда нужно взять в скобки навсяк случай
эт наверное правильнее
pos(upcase('В'),upcase(katmc1.name))<>1
а быстрее будет
upcase(substr(katmc1.name,1,1))<>'B'
вопрос в порядке обработки
я бы сделал
do {
if pos(upcase('В'),upcase(katmc1.name))=1 then break ;
} while getnext katmc1=0 ;
так надежней и проще для понимания.
а можно и так(тут уж контекста зависит)
if getfirst katmc where (( 'B' <<= katmc.name and
'BЯ'>>=katmc.name ))=0
{
не знаю как у вас, у меня вроде прокатывает - поскольку слова последнего касаются не сегмента индекса, а условия по индексу.
в сапорте выполните
select katmc.name where (( 'B' <<= katmc.name and 'BЯ'>>=katmc.name )) ;