Формула во вью выводит очень странные значения

Тема в разделе "Lotus - Программирование", создана пользователем PavelT100, 5 ноя 2009.

  1. PavelT100

    PavelT100 Well-Known Member

    Регистрация:
    9 июл 2007
    Сообщения:
    105
    Симпатии:
    0
    Во вью вывожу знаение категоризированной колонки вот по такой формуле:
    Код (Text):
    v := Ver;
    s := @RightBack(v; ".");
    lll := @Length(s);

    @If( lll = 1; @LeftBack(v; ".") + ".0" + s; v) + " ---- " + s + " ---- " + @Text(lll);
    Если поле Ver имеет одно значение - то проблем не возникает.
    Но вот попалась запись, которая имеет два значения "7.4.23" и "7.5.2"
    Такая запись во вью появляется в двух местах.
    Значение "7.5.2" правильно преобразуется и в итоге отображается "7.5.02 ---- 2 ---- 1" - это то, что я хотел.
    Но значение "7.4.23" на удивление преобразуется криво "7.4.023 ---- 23 ---- 2". Ну как такое может быть ?
    Я специально для отладки вывожу lll - оно действительно равно 2, не равно 1, но несмотря на это нолик дописывается - мозги вскипают.
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Для понимания см. хелп:
    Operations on lists
    Number equality, pair-wise - обрати внимание на 2-й пример )
    @if(2:1=1) даст True



    Я бы заменила на нечто подобное такому (проверьте)
    Код (Text):
    s := "00"+@RightBack(v; ".");
    @LeftBack(v; ".") +@Right(s;2);
     
  3. PavelT100

    PavelT100 Well-Known Member

    Регистрация:
    9 июл 2007
    Сообщения:
    105
    Симпатии:
    0
    Спасибо. Проверил. Эта беда исчезла, но прорвало в другом месте, дело в том, что имеются еще записи со значениями поля Ver, которые не содержат точек вообще - в том варианте который вы мне порекомендовали эти значения заменяются на "00" - что плохо.

    Вариант:

    @If( @Contains(v;".") ; @LeftBack(v; ".") +"." +@Right(s;2); v)

    увы не катит, я уже понимаю почему - потому, что @Contains(v;".")
    для набора "Relise" : "7.5.12" выдает истину. Как мне заставить логические функции работать только с тем элементом массива который выводится в данный момент ?
     
  4. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Может так:
    @Replace(@If( @Contains(v;".") ; @LeftBack(v; ".") +"." +@Right(s;2); v); "00"; "")?
     
  5. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    ну, я же не могла предугадать, что у вас формат с точками не задан жестко :(
    тогда обрабатывайте по одному значению - посмотрите хелп в сторону @for или @transform.
    P.s. ошибка - они во вьюшках не работают :(

    Хотя нет, это, наверно, хелп врет. @for юзали точно )))
     
Загрузка...

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