Данные в колонке

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

  1. azat20

    azat20 Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    Добрый день!Есть доки, в одном из полей(назовем его Х) хранятся данные типа: год+месяц. Например, 2008Ноябрь. Элементов в полем много. Надо чтобы в колонке были года и месяца, которых нет в поле Х до текущий месяца текущего года. Как это сделать?
    На ум пришло только собрать все элементы типа год+месяц до текущийГод+текущийМесяц. А затем Replace(all;X;""). Вот. Не могу реализовать на собаках(пишу прямо в Formula столбца). Как это реализовать? @For вообще работает в отборе столбца?Проблема еще и в том, что текущий месяц - это цифра, а формат у меня 2008Ноябрь(год+названиемесяца).
    Прошу помочь!У кого какие предложения?
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Лучше завести поле в документе и хранить список там. Раз в месяц агентом править. Будет гораздо быстрее.
    А преобразовать в дату и получить список дат до текущей даты вроде бы не проблема.
     
  3. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Medevic
    +1, тяжеловатая формула для колонки будет)




    Azat
    For работает.
    В поле даты храниться дата, а вот отображается у тебя как раз формат "2008 Месяц".
    Делай 2а списка, 1 в котором все месяца+годы которые могут быть выведены, в другом те что в документе, потом составляй список в котором Сп1-Сп2 будет, и выводи его.

    Для получения названия месяца юзай:
    @Select ( Номер_Месяца ; "Январь";"Февраль";"Март";"Апрель";"Май";"Июнь";"Июль";"Август";"Сентябрь";"Октябрь";"Ноябрь";"Декабрь")
     
  4. azat20

    azat20 Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    Спасибо! А все таки никак в колонке все написать,а? А то агентом не очень то охота
     
  5. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Можно, но это будет тупо.
     
  6. azat20

    azat20 Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    Создал поле, computed then composed,написал там
    i:=2008;
    j:=1;
    all:=" ";
    @While(i<=@Year(@Now);
    @While(j<=@Month(@Now);
    all:= all & @Text(i;"G") & @Select(j;"Январь";"Февраль";"Март";"Апрель";"Май";"Июнь";"Июль";"Август";"Сентябрь";"Октябрь";"Ноябрь";"Декабрь");
    j:=j+1;
    )
    i:=i+1;
    )


    Выдает ошибку @Function arguments excepted but none were supplied...

    Подскажите, пожалуйста, Как и что лучше написать в поле, где будет содержаться все месяцы и года до текущего месяца текущего года?
     
  7. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Неправильно выбран тип поля. Нужно просто computed.

    Вот, держи:
    Код (Text):
    month := "Январь" : "Февраль" : "Март" : "Апрель" : "Май" : "Июнь" : "Июль" : "Август" : "Сентябрь" : "Октябрь" : "Ноябрь" : "Декабрь";
    start := "2005Апрель";
    startDate := @Date(@TextToNumber(start); @Member(@RightBack(start; 4); month); 1);
    @For(n := @Adjust(startDate; 0; 1; 0; 0; 0; 0); n < @Date(@Year(@Today); @Month(@Today); 1); n := @Adjust(n; 0; 1; 0; 0; 0; 0); d := d : (@Text(@Year(n)) + month[@Month(n)]));
    @Trim(d)
     
  8. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    ммм...вложеные циклы на собаках)
     
  9. azat20

    azat20 Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    Премного благодарен!!!
     
  10. azat20

    azat20 Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    Спасибо отвечавшим!
     
  11. azat20

    azat20 Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    Добрый день!еще такой вопрос. Часто бывает нужно в поле, которое multivalue добавить что-нибудь на Лотусскрипте (агентом или кнопкой). Использую ReplaceItemValue. Но там же не напишешь

    Call pardoc.ReplaceItemValue("Reade",pardoc.reade : session.UserName & Date)

    Я конечно, извращаюсь, когда пишу
    Call pardoc.ReplaceItemValue("Reade", Fulltrim(Arrayappend(tempstr,laststr)))
    где,
    Dim tempstr(1)
    Tempstr(0)=Cstr(doc.from(0)) & " " & Cstr(doc.date(0))
    laststr=pardoc.reade,
    но не знаю как делать проще...
    Подскажите, пожалуйста, как оптимизировать код!
     
  12. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Call notesItem.AppendToTextList( newValue )
     
  13. azat20

    azat20 Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    А если надо добавить в начало списка,а не в конец?
     
  14. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Почему извращаешься? Нормально. Если немного поправить:
    Код (Text):
    Call pardoc.ReplaceItemValue("Reade", FullTrim(ArrayAppend(pardoc.GetItemValue("Reade"), session.UserName & Date)))
    Можно Evaluate использовать:
    Код (Text):
    Call pardoc.ReplaceItemValue("Reade", Evaluate({@Trim(Reade : (from + @Text(date)))}, pardoc))
     
Загрузка...
Похожие Темы - Данные колонке
  1. Bafomet
    Ответов:
    0
    Просмотров:
    18
  2. maliy
    Ответов:
    17
    Просмотров:
    138
  3. Anatoly
    Ответов:
    24
    Просмотров:
    358
  4. Shouldercannon
    Ответов:
    0
    Просмотров:
    491
  5. Ivanov Pavel V
    Ответов:
    14
    Просмотров:
    1.068

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