Wiki source code of Uniacc4_RepJump

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

Show last authors
1 История вопроса
2
3 [[html test1>>html_test1]]
4
5 Необходима возможность быстрого перехода из грида к документу (хотя бы с
6 настраиваемой формы).
7 В разных случаях могут оказаться удобными разные варианты действия для перехода: по
8 двойному щелчку, Enter, Ctrl+Enter, что-нибудь ещё... Было бы неплохо предусмотреть
9 возможность выбора или настройки события, по которому будет производиться переход.
10 Поскольку в одной строке грида может присутствовать несколько полей с номерами
11 документов, необходима возможность настройки набора полей для перехода (переход
12 производится по щелчку на любом из указанных полей).
13 Также была бы удобна возможность настройки поля по-умолчанию, например, если
14 производится щелчок на нечисловом поле или на поле, не входящем в список полей для
15 перехода, то используется default jump field. Эту же настройку можно было бы
16 использовать и в случае единственного "документного" поля в строке, тогда щелчок в
17 любом месте строки инициирует переход к документу.
18 Подробности можно обсудить устно + собрать ещё пару мнений.
19
20 Пример формы с гридом, содержащим поля с номерами документов можно найти на
21 auromex1@catalog: Формы-> 11. Заявки -> 11.1 Заявки на отгрузку -> 2-й грид (поля №
22 документа заявки + № документа продажи).
23
24 оригинал заявки
25
26 http://uniacc.md/otrs/index.pl?Action=AgentTicketZoom&TicketID=105528
27
28
29 **DisableGotoNrdoc=true**
30 свойство на секции печ.ф./отчета => нельзя прыгать из п.ф./отчетов в документ\\
31
32 ----
33
34 **GotoDocumentEditing=true/false**
35
36 можно настраивать свойство сразу на пользователя или группу пользователей=>при всяческих переходах откуда-либо на документ:
37 - попадем сразу в открытый документ, если =true
38 - попадем на документ в каком-то журнале, если =false\\
39
40 ----
41
42 **ShowReportSection=r_test**
43
44 свойство на секции журнала => при открытии журнала сразу рисуется отчет с именем секции r_test
45
46 **[RepJump]**
47 **TargetType=form**
48 **TargetSection=f_test**
49 **SetValue.ed01sc=_test_value** (не обязательное свойство)
50
51 (описывается в FormulaOne в колонке C либо в нужной ячейке)
52 прыжок по DbLClick из строки/ячейки печатной формы/отчета в универсальную настраиваемую форму с именем секции=f_test, в которой в шапке есть edit "sc". Причем при попадании в форму, значение edit-а устанавливается = _test_value (это поле должно присутствовать в результирующем наборе (SQLHeader, SQLMaster, SQLDetail), соответствующем строке печатной формы/отчета, из которой производится переход)\\
53
54 ----
55
56 **[RepJump]**
57 **TargetType=document**
58 **nrdoc=_test_nrdoc**
59
60 (описывается в FormulaOne в колонке C либо в нужной ячейке)
61 прыжок по DbLClick из строки/ячейки печатной формы/отчета в документ с nrdoc=_test_nrdoc. (это поле должно присутствовать в результирующем наборе (SQLHeader, SQLMaster, SQLDetail), соответствующем строке печатной формы/отчета, из которой производится переход)\\
62
63 ----
64
65 **[RepJump]**
66 **TargetType=report**
67 **TargetSection=r_test**
68 **UnDBEdit1=_value1 **(не обязательное свойство)
69 **UnDBEdit2=_value2 **(не обязательное свойство)
70
71 (описывается в FormulaOne в колонке C либо в нужной ячейке)
72 прыжок по DbLClick из строки/ячейки печатной формы/отчета в отчет с именем секции=r_test. Если в отчете есть фильтры и нужно, чтобы отчет построился с определенными значениями этих фильтров, то передаем соответствующие данные в отчет в виде: UnDBEdit1=_value1 и т.п. (поля value1, value2 должны присутствовать в результирующем наборе (SQLHeader, SQLMaster, SQLDetail), соответствующем строке печатной формы/отчета, из которой производится переход)\\
73
74 ----
75
76 **[RepJump]**
77 **TargetType=doc.new**
78 **TargetSysFID=48355**
79 **TargetJournal=j_test**
80 **TargetAction=action_test** (не обязательное свойство)
81 **Param_x1=_value1 ** (не обязательное свойство)
82
83 создание по DbLClick по строке/ячейке печатной формы/отчета нового документа с указанным sysfid-ом в журнале j_test. Если указан TargetAction, то сразу после создания документа выполнится action с именем секции action_test, который должен обязательно принадлежать данному sysfid-у. В action можно передать значения параметров в виде Param_X1=_value1, где x1 - параметр, а value1 - его значение, причем поле value1 должно присутствовать в результирующем наборе (SQLHeader, SQLMaster, SQLDetail), соответствующем строке печатной формы/отчета, из которой создается документ
84
85 select * from(
86 /*
87 DblClick=goto
88 TargetType=form.print
89 TargetSection=pf_test
90 */
91 SELECT a.* from … where …
92 )
93
94 построение печатной формы с именем секции pf_test по DbLClick на гриде формы. Печатная форма должна принадлежать данной форме. Запрос грида должен иметь описанный вид. В запросе для печатной формы можно оперировать переменными вида :field_fmFS1c_sq01_COD , значения которых будут браться из текущей строки грида.
95
96 /*
97 **DblClick=goto**
98 **TargetType=form.print**
99 **TargetSection=pf_test**
100 */
101
102 также можно настроить, чтобы срабатывал DblClick не по всей строке, а только по конкретной ячейке. Для этого в дизайне (Alt+D) грида нужно вставить описанный блок комментария\\
103
104 ----
105
106 Если надо, чтобы DblClick по документу в журнале срабатывал нестандартно (не как вход в документ):
107
108 1)
109 **DblClickPrintForm=имя_секции_печ_формы**
110
111 свойство на секции документа => при DbLClick по данному sysfid-у из любого журнала, в котором его видно, на экране будет появляться печатная форма, имя секции которой является значением данного свойста. причем печ.форма должна принадлежать данному sysfid-у
112
113
114 **ViewOnly=true**
115
116 свойство на секции печ.ф. => запрещает редактирование построенного печатного документа
117
118 **ReadOnly=true**
119
120 свойство на секции печ.ф. => печатную форму можно получить без перевода документа в режим редактирования
121
122 2) чтобы по DblClick создавался дочерний документ, в SQLBody журнала в запрос добавляем следующий блок комментария:
123
124 select * from(
125 /*
126 **DblClick=goto**
127 **TargetType=doc.child**
128 */
129 SELECT … from vmdb_docs …
130 )
131
132 В обоих случаях нужно:
133 **ChildDocs=sysfid,sysfid,sysfid**
134 свойство на секции документа => список sysfid-ов, которые можно создать в качестве дочерних для текущего sysfid-а. Если sysfid один, то он и создастся, если их несколько, то появится окошко для выбора одного из перечисленных sysfid-ов
135
136 **ChildCancelOnError=true**
137 свойство на секции документа => если в процессе создания дочернего документа возникает какая-либо ошибка, то вставка в tmdb_docs отменяется
138
139 **CreateChildSilent=true**
140 свойство на секции документа => не будет вопроса "Вы уверены…?"