PeopleSoft делает страницу доступной только для чтения - определенные строки

У меня есть страница, содержащая родительскую запись и несколько дочерних записей. Существует поле (уровень 1), которое является флажком, который является полем «окончательный черновик» - после того, как оно проверено, дальнейшие изменения не могут быть сделаны (даже в режиме исправления); необходимо вставить новую строку/effdt. Все детские записи находятся на уровне 2. Сейчас у меня есть:

&RS7 = GetRowset(Scroll.AVZ_JD_DTL_TBL);
&final_draft = &RS7.GetRow(1).getrecord(Record.AVZ_JD_DTL_TBL).getfield     (Field.FINAL_VALUE).Value;

If &final_draft = "Y" Then
  Page.AVZ_JD_DTL_PG.DisplayOnly = True;
 Else
  Page.AVZ_JD_DTL_PG.DisplayOnly = False;
 End-If;

Итак, допустим, я нахожусь в режиме исправления, и у меня есть 3 строки - effdts 1/1/2012, 5/1/2012 и 6/1/2012, с установленным флажком для строки, датированной 5/1/2012, поскольку я «просматриваю» / «прокручиваю» даты вступления в силу, я хочу, чтобы строка от 01.01.2012 была редактируемой, строка от 01.05.2012 - только для чтения, а затем строка от 01.06.2012. быть редактируемым.

Я думаю, возможно, мне нужно будет «отключить» каждый набор строк в отдельности, а не страницу в целом. Я просто обдумываю наборы строк/прокрутки, и ранее в программе я выполняю некоторые манипуляции:

&RS1 = GetLevel0().GetRow(1).GetRowset(Scroll.AVZ_JD_DTL_TBL).GetRow(1).GetRowset(Scroll.AVZ_JD_RESP_TBL); &RS2 = GetLevel0().GetRow(1).GetRowset(Scroll.AVZ_JD_DTL_TBL).GetRow(1).GetRowset(Scroll.AVZ_JD_EXPR_TBL);

&RS1.Sort(AVZ_JD_RESP_TBL.ORDER_SEQ, "A"); &RS2.Sort(AVZ_JD_EXPR_TBL.ORDER_SEQ, "A");

Вопрос в том, как узнать, какую строку я просматриваю в данный момент, затем взять поле FINAL_VALUE для этой строки, а затем затенить/отключить все на странице для этого effdt? (тогда, конечно, если вы перейдете от этого effdt к тому, у которого этот флажок не установлен, все нужно будет снова редактировать).

Спасибо


person Chip    schedule 30.05.2012    source источник
comment
Альтернативный вариант, с которым только что согласился мой пользователь: сделать все исторические строки доступными только для чтения, а если в текущей строке установлен флажок, сделать ее доступной только для чтения. Им нужно иметь возможность изменять текущую строку, поэтому я знаю, что им понадобится режим исправления — есть ли способ сделать исторические строки доступными только для чтения, оставив текущую строку доступной для редактирования?   -  person Chip    schedule 31.05.2012


Ответы (1)


Вы можете прокручивать прокрутки уровня 1 в поисках флажка, а затем, если он найден, прокручивать прокрутки уровня 2, а затем установить для атрибута Active для строки значение false.

У меня нет доступной системы PeopleSoft для тестирования этого кода, но это будет примерно так:

&LEVEL0 = your level 0 record
&LEVEL1 = &LEVEL0.GetRowset(Scroll.AVZ_JD_DTL_TBL); /* handle to level 1 */
For &I = 1 To &LEVEL1.ActiveRowCount
    if &LEVEL1(&I).final_draft = "Y" then   /* check box is on */
        &LEVEL2 = &LEVEL0(1).&LEVEL1(&I).GetRowset(Scroll.AVZ_JD_EXPR_TBL);
        For &J = 1 to &LEVEL2.ActiveRowCount
            &LEVEL0(1).&LEVEL1(&I).&LEVEL2(&J).AVZ_JD_EXPR_TBL.Active = "False";
        End-For;
    End-If;
End-For;

Предположим, что ваша запись уровня 1 — AVZ_JD_DTL_TBL, а ваша запись уровня 2 — AVZ_JD_EXPR_TBL. Пожалуйста, перепроверьте точный синтаксис в PeopleBooks, но я думаю, что это правильно.

person ardochhigh    schedule 10.06.2012