Uniacc4_RepJump

Last modified by Pavel Tuhari on 2010/04/03 18:42

История вопроса

html test1

Необходима возможность быстрого перехода из грида к документу (хотя бы с
настраиваемой формы).
В разных случаях могут оказаться удобными разные варианты действия для перехода: по
двойному щелчку, Enter, Ctrl+Enter, что-нибудь ещё... Было бы неплохо предусмотреть
возможность выбора или настройки события, по которому будет производиться переход.
Поскольку в одной строке грида может присутствовать несколько полей с номерами
документов, необходима возможность настройки набора полей для перехода (переход
производится по щелчку на любом из указанных полей).
Также была бы удобна возможность настройки поля по-умолчанию, например, если
производится щелчок на нечисловом поле или на поле, не входящем в список полей для
перехода, то используется default jump field. Эту же настройку можно было бы
использовать и в случае единственного "документного" поля в строке, тогда щелчок в
любом месте строки инициирует переход к документу.
Подробности можно обсудить устно + собрать ещё пару мнений.

Пример формы с гридом, содержащим поля с номерами документов можно найти на
auromex1@catalog: Формы-> 11. Заявки -> 11.1 Заявки на отгрузку -> 2-й грид (поля №
документа заявки + № документа продажи).

оригинал заявки

http://uniacc.md/otrs/index.pl?Action=AgentTicketZoom&TicketID=105528

DisableGotoNrdoc=true
свойство на секции печ.ф./отчета => нельзя прыгать из п.ф./отчетов в документ


GotoDocumentEditing=true/false

можно настраивать свойство сразу на пользователя или группу пользователей=>при всяческих переходах откуда-либо на документ:
- попадем сразу в открытый документ, если =true
- попадем на документ в каком-то журнале, если =false


ShowReportSection=r_test

свойство на секции журнала => при открытии журнала сразу рисуется отчет с именем секции r_test

[RepJump]
TargetType=form
TargetSection=f_test
SetValue.ed01sc=_test_value  (не обязательное свойство)

(описывается в FormulaOne в колонке C либо в нужной ячейке)
прыжок по DbLClick из строки/ячейки печатной формы/отчета в универсальную настраиваемую форму с именем секции=f_test, в которой в шапке есть edit "sc". Причем при попадании в форму, значение edit-а устанавливается = _test_value (это поле должно присутствовать в результирующем наборе (SQLHeader, SQLMaster, SQLDetail), соответствующем строке печатной формы/отчета, из которой производится переход)


[RepJump]
TargetType=document
nrdoc=_test_nrdoc

(описывается в FormulaOne в колонке C либо в нужной ячейке)
прыжок по DbLClick из строки/ячейки печатной формы/отчета в документ с nrdoc=_test_nrdoc. (это поле должно присутствовать в результирующем наборе (SQLHeader, SQLMaster, SQLDetail), соответствующем строке печатной формы/отчета, из которой производится переход)


[RepJump]
TargetType=report
TargetSection=r_test
UnDBEdit1=_value1   (не обязательное свойство)
UnDBEdit2=_value2   (не обязательное свойство)

(описывается в FormulaOne в колонке C либо в нужной ячейке)
прыжок по DbLClick из строки/ячейки печатной формы/отчета в отчет с именем секции=r_test. Если в отчете есть фильтры и нужно, чтобы отчет построился с определенными значениями этих фильтров, то передаем соответствующие данные в отчет в виде: UnDBEdit1=_value1 и т.п. (поля value1, value2 должны присутствовать в результирующем наборе (SQLHeader, SQLMaster, SQLDetail), соответствующем строке печатной формы/отчета, из которой производится переход)


[RepJump]
TargetType=doc.new
TargetSysFID=48355
TargetJournal=j_test
TargetAction=action_test      (не обязательное свойство)
Param_x1=_value1     (не обязательное свойство)

создание по DbLClick по строке/ячейке печатной формы/отчета нового документа с указанным sysfid-ом в журнале j_test. Если указан TargetAction, то сразу после создания документа выполнится action с именем секции action_test, который должен обязательно принадлежать данному sysfid-у. В action можно передать значения параметров в виде Param_X1=_value1, где x1 - параметр, а value1 - его значение, причем поле value1 должно присутствовать в результирующем наборе (SQLHeader, SQLMaster, SQLDetail), соответствующем строке печатной формы/отчета, из которой создается документ

select * from(
/*
DblClick=goto
TargetType=form.print
TargetSection=pf_test
*/
SELECT a.* from … where …
)

построение печатной формы с именем секции pf_test по DbLClick на гриде формы. Печатная форма должна принадлежать данной форме. Запрос грида должен иметь описанный вид. В запросе для печатной формы можно оперировать переменными вида :field_fmFS1c_sq01_COD , значения которых будут браться из текущей строки грида.

/*
DblClick=goto
TargetType=form.print
TargetSection=pf_test
*/

также можно настроить, чтобы срабатывал DblClick не по всей строке, а только по конкретной ячейке. Для этого в дизайне (Alt+D) грида нужно вставить описанный блок комментария


Если надо, чтобы DblClick по документу в журнале срабатывал нестандартно (не как вход в документ):

1)
DblClickPrintForm=имя_секции_печ_формы

свойство на секции документа => при DbLClick по данному sysfid-у из любого журнала, в котором его видно, на экране будет появляться печатная форма, имя секции которой является значением данного свойста. причем печ.форма должна принадлежать данному sysfid-у

ViewOnly=true

свойство на секции печ.ф. => запрещает редактирование построенного печатного документа

ReadOnly=true

свойство на секции печ.ф. => печатную форму можно получить без перевода документа в режим редактирования

2) чтобы по DblClick создавался дочерний документ, в SQLBody журнала в запрос добавляем следующий блок комментария:

select * from(
/*
DblClick=goto
TargetType=doc.child
*/
SELECT … from vmdb_docs …
)

В обоих случаях нужно:
ChildDocs=sysfid,sysfid,sysfid
свойство на секции документа => список sysfid-ов, которые можно создать в качестве дочерних для текущего sysfid-а. Если sysfid один, то он и создастся, если их несколько, то появится окошко для выбора одного из перечисленных sysfid-ов

ChildCancelOnError=true
свойство на секции документа => если в процессе создания дочернего документа возникает какая-либо ошибка, то вставка в tmdb_docs отменяется

CreateChildSilent=true
свойство на секции документа => не будет вопроса "Вы уверены…?"