Постановка задачи
Разработать представление для отображения документов, в котором будет присутствовать фильтрация, сортировка по колонкам.
Инструмент
Палитра XML
Реализация
Создание основы
В основу входит:
- Написание SQL-запроса (Кастомная коллекция)
- Описание метаданных (Кастомная коллекция)
- Связь колонок с данными SQL-запроса (Дескриптор)
- Связь навигационной панели на полученную таблицу (Представление)
Кастомная коллекция
Кастомная коллекция представляет собой набор 2-х файлов:
Блок кода | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<collection name="SOWorkplaceRequests_(vw_cmj_all_deps)" idField="id" replace="runtime"> <prototype> <![CDATA[ SELECT SELECT s.id, s.created_dateid, ss_module_org.Module, created_date, s.self_1, s.selfupdated_2date, s.self_3, Module, s.orgsystem_id, s.fullNameself_1, s.gorf, self_2, cast (s.departmenttype as int) as deptype FROM (self_3, SELECT typeRequest, statusWPRequest, stage, so_department.id, so_unit.created_dateregNumber, '<id>' as self_1rNumber, ':' as self_2, numberWOTags, wpInitiator, term, '</>' as self_3 finishtime, so_department.HierRoot as orgsystem_idwpEmployee, fullNamewpEmpDepartment, getisolated(so_department.id) as gorfwpEmpHierDepatment, CASE wpEmpGoingToWork, WHEN so_department.departmenttype = 'ГО: ГОЛОВНОЙ ОФИС' then '0' wpMovingDate, wpInitBranch, WHEN so_department.departmenttype = 'РФ: РЕГИОНАЛЬНЫЙ ФИЛИАЛ' then '1' wpOffice, WHEN so_department.departmenttype = 'Р: РУКОВОДСТВО' then '2'wpTypeOffice, WHEN so_department.departmenttype = 'Д: ДЕПАРТАМЕНТ' then '3' wpInitOrganization, wpInitiatorDepartment, WHEN so_department.departmenttype = 'ЕСЦ: ЕСЦ' then '4' wpLocality, WHEN so_department.departmenttype = 'У: УПРАВЛЕНИЕ' then '5'wpCountry, WHEN so_department.departmenttype = 'С: СЛУЖБА' then '6' wpArea, wpFloor, WHEN so_department.departmenttype = 'О: ОТДЕЛ' then '7' wpRoomNumber, WHEN so_department.departmenttype = 'Г: ГРУППА' then '8'wpCode FROM ( WHEN so_department.departmenttype = 'ДО: ДОПОЛНИТЕЛЬНЫЙ ОФИС' then '9' select rkkbase.id, WHEN so_department.departmenttype = 'ОО: ОПЕРАЦИОННЫЙ ОФИС' then '10' rkkbase.created_date, rkkbase.updated_date, rkkbase.module WHEN so_department.departmenttype = 'КО: КРЕДИТНЫЙ ОФИС' then '11' AS Module, '<id>' WHEN so_department.departmenttype = 'ОКВКУ: ОПЕРАЦИОННАЯ КАССА ВНЕ КАССОВОГО УЗЛА' then '12' ELSE '13' AS self_1, END ':' as departmenttype FROM SO_Department so_department naturalAS join so_unitself_2, '</>' natural join so_structureunit inner join so_beard beard on beard.id = so_structureunit.beard and beard.id_type = so_structureunit.beard_type AS self_3, rkkbase."type" WHERE so_department.accessRedirect is null )AS stypeRequest, (select tfs."value" ::from-clauseas v from WHEREtn_field join tn_field_string tfs 1on tn_field.access_object_id = 1tfs.id where tn_field."owner" = ::where-clauserkkbase.id and tn_field.owner_type = rkkbase.id_type and tn_field.cmjfield ]]> </prototype> = 'status') as statusWPRequest, <filter name="MODULE">(select tfs."value" as v <reference placeholder="from-clause">from tn_field <![CDATA[ join tn_field_string tfs on tn_field.access_object_id = tfs.id where tn_field."owner" = rkkbase.id join SS_ModuleOrg ss_module_org onand sstn_module_org.Organizationfield.owner_type = orgsystemrkkbase.id_idtype and tn_field.cmjfield = 'stage') as stage, ]]> </reference> <criteria placeholder="where-clause"> <![CDATA[ ss_module_org.Module = {0} ]]> </criteria> </filter> <filter name="fullName_partial"> <criteria placeholder="where-clause"> '<regNumberPrefix>' || coalesce(rkk.prjnumprist, '') || '</>' || '<regNumberCounter#Number>' || coalesce(cast(rkk.prjnumcounter as varchar), '') || '</>' || '<regNumberSuffix>' || coalesce(rkk.prjnumfin , '') || '</>' as regNumber, rkk.prjnumcounter as rNumber, coalesce(rkk.prjnumprist, '') || coalesce(cast(rkk.prjnumcounter as VARCHAR), '') || coalesce(rkk.prjnumfin, '') as numberWOTags, (select coalesce('<id>' || substring(substring(substring(substring(tfs."value", '%(.*)'), '%(.*)'), '%(.*)'),'%(.*)') || ':' || substring(substring(substring(substring(tfs."value", '%(.*)'), '%(.*)'), '%(.*)'),'(.*)%') || '</><shortName>' || substr(tfs."value", 1, strpos(tfs."value", '%') - 1) || '</>', '<id></><shortName></>') as v <![CDATA[from tn_field join tn_field_string tfs on tn_field.access_object_id = lower(s.fullName) like ('%' || lower({0}) || '%') tfs.id where tn_field."owner" = rkkbase.id and tn_field.owner_type ]]>= rkkbase.id_type </criteria> </filter> <filter name="gorf_partial"> and tn_field.cmjfield = 'wpInitiator') as wpInitiator, (select tfs."value" as v <criteria placeholder="where-clause"> from tn_field <![CDATA[ join tn_field_datetime tfs on tn_field.access_object_id = tfs.id lower(s.gorf) like ('%' || lower({0}) || '%')where tn_field."owner" = rkkbase.id and tn_field.owner_type = rkkbase.id_type ]]> and tn_field.cmjfield </criteria> </filter>= 'plannedfinishtime') as term, (select tfs."value" as v <filter name="CQSEARCH"> <criteria placeholder="where-clause">from tn_field <![CDATA[ join tn_field_datetime tfs on tn_field.access_object_id = tfs.id where tn_field."owner" = rkkbase.id lower(s.fullName) like ('%' || lower({0}) || '%') and tn_field.owner_type = rkkbase.id_type and tn_field.cmjfield = 'finishtime') as finishtime, (select tfs."value" as ]]>v </criteria> from tn_field </filter> </collection> | ||||||||
Блок кода | ||||||||
| ||||||||
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beansjoin tn_field_beard tfs on tn_field.access_object_id = tfs.id where tn_field."owner" = rkkbase.id http://www.springframework.org/schema/beans/spring-beans-3.2.xsd" default-lazy-init="true"> <bean id="SO_(vw_cmj_all_deps)Metadata" class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.CollectionMetadataNew" p:searchArea="so_departments_search_uicoll">and tn_field.owner_type = rkkbase.id_type <constructor-arg> and tn_field.cmjfield = 'assignee') as <list value-type="ru.intertrust.cm_sochi.srv.connector.sochi.collections.Field">assignee, (select coalesce('<id>' || substring(substring(substring(substring(tfs."value", '%(.*)'), '%(.*)'), '%(.*)'),'%(.*)') || ':' || substring(substring(substring(substring(tfs."value", '%(.*)'), <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.Field" p:name="self">'%(.*)'), '%(.*)'),'(.*)%') || '</><shortName>' || substr(tfs."value", <property name="virtualField">1, strpos(tfs."value", '%') - 1) || '</>', '<id></><shortName></>') as v from tn_field <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.BuildVirtualField"> join tn_field_string tfs on tn_field.access_object_id = tfs.id where tn_field."owner" = rkkbase.id <property name="realFields"> and tn_field.owner_type = rkkbase.id_type and tn_field.cmjfield = 'wpEmployee') as wpEmployee, <list> (select date(tfs."value") as v from tn_field join tn_field_dateonly tfs on tn_field.access_object_id <value>self_1</value>= tfs.id where tn_field."owner" = rkkbase.id and tn_field.owner_type = rkkbase.id_type <value>Module</value> and tn_field.cmjfield = 'wpEmpGoingToWork') as wpEmpGoingToWork, (select date(tfs."value") as v from tn_field <value>self_2</value> join tn_field_dateonly tfs on tn_field.access_object_id = tfs.id where tn_field."owner" = rkkbase.id <value>ID</value> and tn_field.owner_type = rkkbase.id_type and tn_field.cmjfield = 'wpMovingDate') as wpMovingDate, (select coalesce('<id>' || substring(substring(substring(substring(tfs."value", '%(.*)'), '%(.*)'), '%(.*)'),'%(.*)') <value>created_date</value> || ':' || substring(substring(substring(substring(tfs."value", '%(.*)'), '%(.*)'), '%(.*)'),'(.*)%') || '</><shortName>' || substr(tfs."value", 1, strpos(tfs."value", '%') - 1) || '</>', '<id></><shortName></>') <value>self_3</value>as v from tn_field join tn_field_string tfs on tn_field.access_object_id </list>= tfs.id where tn_field."owner" = rkkbase.id and </property>tn_field.owner_type = rkkbase.id_type and tn_field.cmjfield = 'wpEmpDepartment') as wpEmpDepartment, <property name="pattern" value="<id>([0-9]{16}):([0-9A-F]{32})</>" />(select tfs."value" as v from tn_field join tn_field_string tfs <property name="separator" value="" />on tn_field.access_object_id = tfs.id where tn_field."owner" = rkkbase.id and <property name="emptySeparator" value="true" />tn_field.owner_type = rkkbase.id_type and tn_field.cmjfield = 'wpEmpHierDepatment') </bean> </property>as wpEmpHierDepatment, (select coalesce('<id>' || substring(substring(substring(substring(tfs."value", '%(.*)'), '%(.*)'), '%(.*)'),'%(.*)') || ':' || substring(substring(substring(substring(tfs."value", '%(.*)'), '%(.*)'), '%(.*)'),'(.*)%') || '</bean>><shortName>' <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.Field" p:name="beard"> || substr(tfs."value", 1, strpos(tfs."value", '%') - 1) || '</>', '<id></><shortName></>') as v <property name="virtualField">from tn_field join tn_field_string tfs <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.BeardVirtualField">on tn_field.access_object_id = tfs.id where tn_field."owner" = rkkbase.id and <property name="realFields">tn_field.owner_type = rkkbase.id_type and tn_field.cmjfield = 'wpInitBranch') as wpInitBranch, (select tfs."value" as v from <list>tn_field join tn_field_string tfs on tn_field.access_object_id = tfs.id where tn_field."owner" <value>Module</value>= rkkbase.id and tn_field.owner_type = rkkbase.id_type and tn_field.cmjfield = 'wpOffice') as wpOffice, (select tfs."value" as <value>self_2</value>v from tn_field join tn_field_string tfs <value>ID</value>on tn_field.access_object_id = tfs.id where tn_field."owner" = rkkbase.id and tn_field.owner_type <value>created_date</value>= rkkbase.id_type and tn_field.cmjfield = 'wpTypeOffice') </list> as wpTypeOffice, (select coalesce('<id>' || substring(substring(substring(substring(tfs."value", '%(.*)'), </property>'%(.*)'), '%(.*)'),'%(.*)') || ':' || substring(substring(substring(substring(tfs."value", '%(.*)'), '%(.*)'), '%(.*)'),'(.*)%') || '</bean>><shortName>' || substr(tfs."value", 1, strpos(tfs."value", '%') - 1) || '</property> >', '<id></><shortName></>') as v </bean>from tn_field join tn_field_string tfs <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.Field" p:name="depType" p:sortOrder="ASCENDING" />on tn_field.access_object_id = tfs.id <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.Field" p:name="fullName" p:filter="fullName" p:sortOrder="ASCENDING" />where tn_field."owner" = rkkbase.id </list>and tn_field.owner_type = rkkbase.id_type </constructor-arg> </bean> </beans> | ||||||||
Раскрыть | ||||||||
| ||||||||
<?xml version="1.0" encoding="UTF-8"?> |
Примечание |
---|
Названия корневого bean должно строиться из названия collection и префикса Metadata. Пример: SO_(vw_cmj_all_deps)Metadata |
Дескриптор
Действия= rkk.id
JOIN F_DP_Intrkk_Executor executor ON executor.owner = internalrkk.id
JOIN so_beard beard ON beard.id = executor.executor
WHERE rkkbase.isdeleted <> 1
AND rkk.regnumcnt IS NULL
) s
WHERE stage NOT IN ('Перемещена в архив')
AND 1 = 1
::where-clause
]]>
</prototype>
<counting-prototype>
<![CDATA[
SELECT
COUNT(1)
FROM (
SELECT
rkkbase.id
FROM F_DP_Intrkk internalrkk
JOIN f_dp_rkk rkk ON rkk.id = internalrkk.id
JOIN f_dp_rkkbase rkkbase ON rkkbase.id = rkk.id
JOIN F_DP_Intrkk_Executor executor ON executor.owner = internalrkk.id
JOIN so_beard beard ON beard.id = executor.executor
WHERE rkkbase.isdeleted <> 1 AND rkk.regnumcnt IS NULL
) s
WHERE stage NOT IN ('Перемещена в архив')
AND 1 = 1
::where-clause
]]>
</counting-prototype>
<filter name="MODULE">
<criteria placeholder="where-clause">
<![CDATA[
Module = {0}
]]>
</criteria>
</filter>
<filter name="self">
<criteria placeholder="where-clause"><![CDATA[ Module = {0} and id = {1} ]]></criteria>
</filter>
<filter name="created_date">
<criteria placeholder="where-clause">
<![CDATA[
cast(created_date as date) = cast({0} as date)
]]>
</criteria>
</filter>
<filter name="rNumber">
<criteria placeholder="where-clause"><![CDATA[ rNumber = {0} ]]></criteria>
</filter>
<filter name="rNumber_partial">
<criteria placeholder="where-clause"><![CDATA[ rNumber iLIKE ('%'||{0}||'%') ]]></criteria>
</filter>
<filter name="rNumber_L">
<criteria placeholder="where-clause"><![CDATA[ rNumber < {0} ]]></criteria>
</filter>
<filter name="rNumber_GE">
<criteria placeholder="where-clause"><![CDATA[ rNumber >= {0} ]]></criteria>
</filter>
<filter name="rNumber_Partial">
<criteria placeholder="where-clause"><![CDATA[ rNumber LIKE {0} ]]></criteria>
</filter>
<filter name="regNumber">
<criteria placeholder="where-clause"><![CDATA[ regNumber = {0} ]]></criteria>
</filter>
<filter name="regNumber_partial">
<criteria placeholder="where-clause"><![CDATA[ numberWOTags iLIKE ('%'||{0}||'%') ]]></criteria>
</filter>
<filter name="typeRequest">
<criteria placeholder="where-clause">
<![CDATA[
typeRequest = {0}
]]>
</criteria>
</filter>
<filter name="typeRequest_partial">
<criteria placeholder="where-clause">
<![CDATA[
typeRequest ilike '%'||{0}||'%'
]]>
</criteria>
</filter>
<filter name="wpInitiator">
<criteria placeholder="where-clause">
<![CDATA[
wpInitiator = {0}
]]>
</criteria>
</filter>
<filter name="wpInitiator_partial">
<criteria placeholder="where-clause">
<![CDATA[
wpInitiator ilike '%'||{0}||'%'
]]>
</criteria>
</filter>
<filter name="stage">
<criteria placeholder="where-clause">
<![CDATA[
stage = {0}
]]>
</criteria>
</filter>
<filter name="stage_partial">
<criteria placeholder="where-clause">
<![CDATA[
stage ilike '%'||{0}||'%'
]]>
</criteria>
</filter>
<filter name="statusWPRequest">
<criteria placeholder="where-clause">
<![CDATA[
wpStatus = {0}
]]>
</criteria>
</filter>
<filter name="statusWPRequest_partial">
<criteria placeholder="where-clause">
<![CDATA[
statusWPRequest ilike '%'||{0}||'%'
]]>
</criteria>
</filter>
<filter name="term_partial">
<criteria placeholder="where-clause">
<![CDATA[
cast(term as date) = cast({0} as date)
]]>
</criteria>
</filter>
<filter name="finishtime_partial">
<criteria placeholder="where-clause">
<![CDATA[
cast(finishtime as date) = cast({0} as date)
]]>
</criteria>
</filter>
<filter name="wpEmpGoingToWork_partial">
<criteria placeholder="where-clause">
<![CDATA[
cast(wpEmpGoingToWork as date) = cast({0} as date)
]]>
</criteria>
</filter>
<filter name="wpMovingDate">
<criteria placeholder="where-clause">
<![CDATA[
(wpMovingDate >= ({0})::timestamp and
wpMovingDate < (({0})::timestamp + interval '1 day'))
]]>
</criteria>
</filter>
<filter name="assignee">
<criteria placeholder="where-clause">
<![CDATA[
assignee = {0}
]]>
</criteria>
</filter>
<filter name="assignee_partial">
<criteria placeholder="where-clause">
<![CDATA[
assignee ilike '%'||{0}||'%'
]]>
</criteria>
</filter>
<filter name="wpEmployee">
<criteria placeholder="where-clause">
<![CDATA[
wpEmployee = {0}
]]>
</criteria>
</filter>
<filter name="wpEmployee_partial">
<criteria placeholder="where-clause">
<![CDATA[
wpEmployee ilike '%'||{0}||'%'
]]>
</criteria>
</filter>
<filter name="wpEmpDepartment">
<criteria placeholder="where-clause">
<![CDATA[
wpEmpDepartment = {0}
]]>
</criteria>
</filter>
<filter name="wpEmpDepartment_partial">
<criteria placeholder="where-clause">
<![CDATA[
wpEmpDepartment ilike '%'||{0}||'%'
]]>
</criteria>
</filter>
<filter name="wpInitBranch">
<criteria placeholder="where-clause">
<![CDATA[
wpInitBranch = {0}
]]>
</criteria>
</filter>
<filter name="wpInitBranch_partial">
<criteria placeholder="where-clause">
<![CDATA[
wpInitBranch ilike '%'||{0}||'%'
]]>
</criteria>
</filter>
<filter name="wpInitiatorDepartment">
<criteria placeholder="where-clause">
<![CDATA[
wpInitiatorDepartment = {0}
]]>
</criteria>
</filter>
<filter name="wpInitiatorDepartment_partial">
<criteria placeholder="where-clause">
<![CDATA[
wpInitiatorDepartment ilike '%'||{0}||'%'
]]>
</criteria>
</filter>
<filter name="wpLocality">
<criteria placeholder="where-clause">
<![CDATA[
wpLocality = {0}
]]>
</criteria>
</filter>
<filter name="wpLocality_partial">
<criteria placeholder="where-clause">
<![CDATA[
wpLocality ilike '%'||{0}||'%'
]]>
</criteria>
</filter>
<filter name="wpCountry">
<criteria placeholder="where-clause">
<![CDATA[
wpCountry = {0}
]]>
</criteria>
</filter>
<filter name="wpCountry_partial">
<criteria placeholder="where-clause">
<![CDATA[
wpCountry ilike '%'||{0}||'%'
]]>
</criteria>
</filter>
<filter name="wpArea">
<criteria placeholder="where-clause">
<![CDATA[
wpArea = {0}
]]>
</criteria>
</filter>
<filter name="wpArea_partial">
<criteria placeholder="where-clause">
<![CDATA[
wpArea ilike '%'||{0}||'%'
]]>
</criteria>
</filter>
<filter name="wpFloor">
<criteria placeholder="where-clause">
<![CDATA[
wpFloor = {0}
]]>
</criteria>
</filter>
<filter name="wpRoomNumber">
<criteria placeholder="where-clause">
<![CDATA[
wpRoomNumber = {0}
]]>
</criteria>
</filter>
<filter name="wpCode">
<criteria placeholder="where-clause">
<![CDATA[
wpCode = {0}
]]>
</criteria>
</filter>
<filter name="wpEmpHierDepatment">
<criteria placeholder="where-clause">
<![CDATA[
wpEmpHierDepatment = {0}
]]>
</criteria>
</filter>
<filter name="wpEmpHierDepatment_partial">
<criteria placeholder="where-clause">
<![CDATA[
wpEmpHierDepatment ilike '%'||{0}||'%'
]]>
</criteria>
</filter>
<filter name="BeforeDate">
<criteria placeholder="where-clause">
<![CDATA[
updated_date < {0}
]]>
</criteria>
</filter>
</collection> |
Блок кода | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd" default-lazy-init="true">
<bean id="WorkplaceRequests_(vw_cmj_all)Metadata"
class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.CollectionMetadataNew" p:caseSensitiveFieldNames="true">
<constructor-arg>
<list value-type="ru.intertrust.cm_sochi.srv.connector.sochi.collections.Field">
<bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.Field" p:name="self">
<property name="virtualField">
<bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.BuildVirtualField">
<property name="realFields">
<list>
<value>self_1</value>
<value>Module</value>
<value>self_2</value>
<value>ID</value>
<value>created_date</value>
<value>self_3</value>
</list>
</property>
<property name="pattern" value="<id>([0-9]{16}):([0-9A-F]{32})</>" />
<property name="separator" value=""/>
<property name="emptySeparator" value="true"/>
</bean>
</property>
</bean>
</list>
</constructor-arg>
</bean>
</beans> |
Примечание |
---|
Названия корневого bean должно строиться из названия collection и префикса Metadata. Пример: WorkplaceRequests_(vw_cmj_all)Metadata |
Дескриптор
Дескриптор решает следующие задачи:
- Связывает колонки с табличными данными
- Управляет колонками: категоризация, сортировка, фильтрация, скрытие, важность и т.д.
- Определяет по какому алгоритму будут отображаться данные в Web-клиенте, с помощью builder
- Связывает с модулем
- Подключает кастомные кнопки
Блок кода | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?xml version='1.0' encoding='UTF-8'?>
<catalog xmlns="http://www.intertrust.ru/schema/palette/cat-ui">
<custom-descriptor ident="WorkplaceRequests" view="WorkplaceRequests_(vw_cmj_all)" id="wp-request-all-docs-af5" name="Заявки на организацию РМ - Все" style="default">
<builder name="ru.intertrust.cm_sochi.srv.uicollections.UiBuilder">
<config>
<view-complex-classif level-select="all"/>
</config>
</builder>
<table>
<columns>
<column-ref ref="self" important="true"/>
<column-ref ref="created_date" sort-asc="true" sort-desc="true" filter="true" invisible-default="true"/>
<column-ref ref="typeRequest" sort-asc="true" sort-desc="true" filter="true" invisible-default="true"/>
<column-ref ref="regNumber" sort-asc="true" sort-desc="true" filter="true"/>
<column-ref ref="wpInitBranch" sort-asc="true" sort-desc="true" important="true" filter="true"/>
<column-ref ref="wpInitiator" sort-asc="true" sort-desc="true" important="true" filter="true"/>
<column-ref ref="wpInitiatorDepartment" sort-asc="true" sort-desc="true" important="true" filter="true"/>
<column-ref ref="wpEmployee" sort-asc="true" sort-desc="true" important="true" filter="true"/>
<column-ref ref="wpEmpDepartment" sort-asc="true" sort-desc="true" important="true" filter="true"/>
<column-ref ref="wpEmpHierDepatment" sort-desc="true" sort-asc="true" filter="true" invisible-default="true"/>
<column-ref ref="stage" sort-asc="true" sort-desc="true" important="true" filter="true"/>
<column-ref ref="statusWPRequest" filter="true" sort-asc="true" sort-desc="true" important="true"/>
<column-ref ref="term" sort-asc="true" sort-desc="true" important="true" filter="true"/>
<column-ref ref="finishtime" sort-asc="true" sort-desc="true" important="true" filter="true"/>
<column-ref ref="wpArea" sort-asc="true" sort-desc="true" filter="true" invisible-default="true"/>
<column-ref ref="wpCode" sort-asc="true" sort-desc="true" filter="true" invisible-default="true"/>
<column-ref ref="wpCountry" sort-asc="true" sort-desc="true" filter="true" invisible-default="true"/>
<column-ref ref="wpInitOrganization" sort-asc="true" sort-desc="true" filter="true" invisible-default="true"/>
<column-ref ref="wpFloor" sort-asc="true" sort-desc="true" filter="true" invisible-default="true"/>
<column-ref ref="wpLocality" sort-asc="true" sort-desc="true" filter="true" invisible-default="true"/>
<column-ref ref="wpRoomNumber" sort-asc="true" sort-desc="true" filter="true" invisible-default="true"/>
<column-ref ref="wpTypeOffice" sort-asc="true" sort-desc="true" filter="true" invisible-default="true"/>
<column-ref ref="wpOffice" sort-asc="true" sort-desc="true" filter="true" invisible-default="true"/>
<column-ref ref="wpEmpGoingToWork" sort-asc="true" sort-desc="true" filter="true" invisible-default="true"/>
<column-ref ref="wpMovingDate" sort-asc="true" sort-desc="true" filter="true" invisible-default="true"/>
</columns>
</table>
<custom-actions schema-ref="RkkReadersCollection"/>
</custom-descriptor>
</catalog> |
Представление
Представление связывает дескриптор с навигационной панелью.
Блок кода | ||||
---|---|---|---|---|
| ||||
<view parent-ref="request" id="workplace-requests" name="${catalog.view.workplace_requests.name:Заявки на ОРМ}" position="10">
<pagename name="Заявки на ОРМ"/>
<descriptor-ref ref="wp-request-all-docs-af5"/>
<source>
<module ident="WorkplaceRequests"/>
</source>
</view> |