Uniacc4_RepJump
История вопроса
Необходима возможность быстрого перехода из грида к документу (хотя бы с
настраиваемой формы).
В разных случаях могут оказаться удобными разные варианты действия для перехода: по
двойному щелчку, 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
свойство на секции документа => не будет вопроса "Вы уверены…?"