- Создатель Васильев Антон, отредактировано 17.03.2022
Вы просматриваете старую версию данной страницы. Смотрите текущую версию.
Сравнить с текущим просмотр истории страницы
« Предыдущий Версия 12 Следующий »
Постановка задачи
Подключить выбор дела на форму РКК
Инструмент: Палитра XML
Статус | ГОТОВО |
---|---|
Комментарий |
Реализация
Подключить поле Дело на форму
Создать схему объекта, которое будет отображаться в поле "Дело"
<?xml version='1.0' encoding='UTF-8'?> <schemas xmlns="http://www.intertrust.ru/schema/palette/tn-schema"> <schema name="InventoryDoc"> <meta> <category name="Отношение к делу" /> </meta> <string name="id"> <storage-field name="inventory_ID" /> </string> <string name="description" computed="true"> <storage-field name="inventory_description" /> <calc-values> <script lang="SPEL" event="open"><![CDATA[fc_name]]></script> </calc-values> </string> <string name="subject"> <storage-field name="inventory_subject" /> </string> <hyperlink computed="true" name="Link"> <storage-field name="inventory_link" /> <calc-values> <script lang="SPEL" event="open"><![CDATA[id == null ? null : T(ru.intertrust.cmj.af.misc.HyperLink).createHyperLink(invPrefix + invNumber + ' ' + subject +'~#'+T(ru.intertrust.cmj.ws.base.servlet.ServletUrlHolder).getServerUrlStr() + '/ids/' + id +'~#newTab~#local')]]></script> </calc-values> </hyperlink> <string name="invPrefix"> <storage-field name="inventory_prefix" /> </string> <string name="invNumber"> <storage-field name="inventory_number" /> </string> <string name="fc_name"> <storage-field name="inventory_name" /> </string> </schema> </schemas>
Создать структуру объекта Дела для отображения UI-интерфейсе
<?xml version='1.0' encoding='UTF-8'?> <ui xmlns="http://www.intertrust.ru/schema/palette/tn-ui"> <form schema-ref="InventoryDoc" projection="default" id="InventoryDocForm"> <properties> <hide condition-union="AND"> <negative-condition-ref ref="digest"/> </hide> </properties> <!--Отображение в виде ссылки на дело--> <component> <field attribute-ref="Link" alias="description"> <appearance importance="normal" /> </field> </component> </form> </ui>
Подключить объект Дела к схеме документа
<?xml version='1.0' encoding='UTF-8'?> <schemas xmlns="http://www.intertrust.ru/schema/palette/tn-schema"> <schema> <schema-ref ref="InventoryDoc" name="case"/> </schema> </schemas>
Подключить поле "Дело" в UI-интерфейс
<?xml version='1.0' encoding='UTF-8'?> <ui xmlns="http://www.intertrust.ru/schema/palette/tn-ui"> <form> <section> <component> <field attribute-ref="case" name="${ui.form.RkkResourceInputForm.field.case.name:Дело:}"> <!-- Визуализация --> <appearance importance="normal" multiline="true" open-form="newTab"> <label-style> <style id="tunBorderedField"/> </label-style> </appearance> </field> </component> </section> </form> </ui>
Подключить справочник Дел
Написать SQL запрос для вывода списка Дел
<collection name="Inventory_(vw_cmj_all_case)" idField="id" replace="runtime"> <prototype> <![CDATA[ SELECT id, numberWOTags, created_date, Module, self_1, self_2, self_3, invPrefix_tag, subject_tag, invNumber_tag, numberWOTags, subject, moduleName, fc_subject, fileCardNumber || invNumber || ' ' || subject as description, invNumber, fc_depId, fileCardNumber as invPrefix FROM ( SELECT CASE WHEN b.cmjunid IS NULL THEN substring(u.migrationid, 0, 33) ELSE substring(b.cmjunid, 0, 33) END AS fc_depId, fc.id AS id, fc.module as Module, complect, ss_module.title as moduleName, fc.created_date, fc.title as subject, fc.Code as numberWOTags, fc.Number as invNumber, '<id>' AS self_1, ':' AS self_2, '</>' AS self_3, '<invPrefix>' AS invPrefix_tag, '<subject>' AS subject_tag, '<invNumber>' AS invNumber_tag, CASE WHEN (parent.IsCodeNumIndex = 1) THEN parent.Code || '-' || fc.Number || ' ' || fc.title ELSE fc.Code || '-' || fc.Number || ' ' || fc.title END AS fc_subject, CASE WHEN (parent.IsCodeNumIndex = 1) THEN parent.Code || '-' || fc.Number ELSE fc.Code || '-' END AS fileCardNumber FROM FD_FileCard fc LEFT JOIN SO_Parent parent ON parent.id = fc.soobject JOIN ss_module ON ss_module.id=fc.module JOIN so_parent_su ON fc.soobject = so_parent_su.id JOIN so_structureunit su on su.id = so_parent_su.owner JOIN so_unit u on u.id = su.id JOIN so_beard b on b.id = su.beard UNION SELECT substring(b.cmjunid, 0, 33) as fc_depId, fc.id AS id, fc.module as Module, complect, ss_module.title as moduleName, fc.created_date, fc.title as subject, fc.Code as numberWOTags, fc.Number as invNumber, '<id>' AS self_1, ':' AS self_2, '</>' AS self_3, '<invPrefix>' AS invPrefix_tag, '<subject>' AS subject_tag, '<invNumber>' AS invNumber_tag, CASE WHEN (parent.IsCodeNumIndex = 1) THEN parent.Code || '-' || fc.Number || ' ' || fc.title ELSE fc.Code || '-' || fc.Number || ' ' || fc.title END AS fc_subject, CASE WHEN (parent.IsCodeNumIndex = 1) THEN parent.Code || '-' || fc.Number ELSE fc.Code || '-' END AS fileCardNumber FROM FD_FileCard fc LEFT JOIN SO_Parent parent ON parent.id = fc.soobject JOIN ss_module ON ss_module.id=fc.module JOIN so_parent_ph ON fc.soobject = so_parent_ph.id JOIN so_posthead ph on ph.id = so_parent_ph.owner JOIN so_appointmenthead apph on apph.post = ph.id AND apph.accessredirect is NULL JOIN so_appointment app on app.id = apph.id JOIN so_beard b on b.id = app.beard ) s WHERE 1=1 ::where-clause ]]> </prototype> <counting-prototype> <![CDATA[ SELECT COUNT(1) FROM ( SELECT CASE WHEN b.cmjunid IS NULL THEN substring(u.migrationid, 0, 33) ELSE substring(b.cmjunid, 0, 33) END AS fc_depId, fc.id AS id, fc.module as Module, complect, ss_module.title as moduleName, fc.created_date, fc.title as subject, fc.Code as numberWOTags, fc.Number as invNumber, '<id>' AS self_1, ':' AS self_2, '</>' AS self_3, '<invPrefix>' AS invPrefix_tag, '<subject>' AS subject_tag, '<invNumber>' AS invNumber_tag, CASE WHEN (parent.IsCodeNumIndex = 1) THEN parent.Code || '-' || fc.Number || ' ' || fc.title ELSE fc.Code || '-' || fc.Number || ' ' || fc.title END AS fc_subject, CASE WHEN (parent.IsCodeNumIndex = 1) THEN parent.Code || '-' || fc.Number ELSE fc.Code || '-' END AS fileCardNumber FROM FD_FileCard fc LEFT JOIN SO_Parent parent ON parent.id = fc.soobject JOIN ss_module ON ss_module.id=fc.module JOIN so_parent_su ON fc.soobject = so_parent_su.id JOIN so_structureunit su on su.id = so_parent_su.owner JOIN so_unit u on u.id = su.id JOIN so_beard b on b.id = su.beard UNION SELECT substring(b.cmjunid, 0, 33) as fc_depId, fc.id AS id, fc.module as Module, complect, ss_module.title as moduleName, fc.created_date, fc.title as subject, fc.Code as numberWOTags, fc.Number as invNumber, '<id>' AS self_1, ':' AS self_2, '</>' AS self_3, '<invPrefix>' AS invPrefix_tag, '<subject>' AS subject_tag, '<invNumber>' AS invNumber_tag, CASE WHEN (parent.IsCodeNumIndex = 1) THEN parent.Code || '-' || fc.Number || ' ' || fc.title ELSE fc.Code || '-' || fc.Number || ' ' || fc.title END AS fc_subject, CASE WHEN (parent.IsCodeNumIndex = 1) THEN parent.Code || '-' || fc.Number ELSE fc.Code || '-' END AS fileCardNumber FROM FD_FileCard fc LEFT JOIN SO_Parent parent ON parent.id = fc.soobject JOIN ss_module ON ss_module.id=fc.module JOIN so_parent_ph ON fc.soobject = so_parent_ph.id JOIN so_posthead ph on ph.id = so_parent_ph.owner JOIN so_appointmenthead apph on apph.post = ph.id AND apph.accessredirect is NULL JOIN so_appointment app on app.id = apph.id JOIN so_beard b on b.id = app.beard ) s WHERE 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="description"> <criteria placeholder="where-clause"> <![CDATA[ description = {0} ]]> </criteria> </filter> <filter name="description_partial"> <criteria placeholder="where-clause"> <![CDATA[ description iLIKE ('%'||{0}||'%') ]]> </criteria> </filter> <filter name="subject"> <criteria placeholder="where-clause"> <![CDATA[ subject = {0} ]]> </criteria> </filter> <filter name="subject_partial"> <criteria placeholder="where-clause"> <![CDATA[ subject iLIKE ('%'||{0}||'%') ]]> </criteria> </filter> <filter name="fc_subject"> <criteria placeholder="where-clause"> <![CDATA[ fc_subject ilike '%'||{0}||'%' ]]> </criteria> </filter> <filter name="fc_subject_partial"> <criteria placeholder="where-clause"> <![CDATA[ fc_subject ilike '%'||{0}||'%' ]]> </criteria> </filter> <filter name="fc_depId"> <criteria placeholder="where-clause"> <![CDATA[ fc_depId ilike '%'||{0}||'%' ]]> </criteria> </filter> <filter name="fc_depId_partial"> <criteria placeholder="where-clause"> <![CDATA[ fc_depId ilike '%'||{0}||'%' ]]> </criteria> </filter> <filter name="moduleName"> <criteria placeholder="where-clause"> <![CDATA[ moduleName LIKE {0} ]]> </criteria> </filter> <filter name="CQSEARCH"> <criteria placeholder="where-clause"> <![CDATA[(lower(fc_subject) like ('%' || lower({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="Inventory_(vw_cmj_all_case)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> <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.Field" p:name="fc_subject" p:filter="fc_subject" p:sortOrder="ASCENDING"> <property name="virtualField"> <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.BuildVirtualField" p:name="fc_subject"> <property name="realFields"> <list> <value>fc_subject</value> </list> </property> </bean> </property> </bean> <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.Field" p:name="MODULE" p:sortOrder="ASCENDING" p:filter="MODULE"/> <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.Field" p:name="inventory_obj"> <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> <value>invPrefix_tag</value> <value>invPrefix</value> <value>self_3</value> <value>subject_tag</value> <value>subject</value> <value>self_3</value> <value>invNumber_tag</value> <value>invNumber</value> <value>self_3</value> </list> </property> <property name="separator" value="" /> <property name="emptySeparator" value="true" /> </bean> </property> </bean> <bean class="ru.intertrust.cm_sochi.srv.connector.sochi.collections.Field" p:name="fc_depId" p:filter="fc_depId" p:sortOrder="ASCENDING" p:categorized="true" p:sortPriority="0" /> </list> </constructor-arg> </bean> </beans>
Создать описатель коллекции для UI-интерфейса
<?xml version='1.0' encoding='UTF-8'?> <catalog xmlns="http://www.intertrust.ru/schema/palette/cat-ui"> <custom-descriptor ident="Inventory" view="(vw_cmj_all_case)" id="inventory-all-case" name="Список дел для диалога" style="default"> <help id="99778660" /> <builder name="ru.intertrust.cmj.af.collections.impl.BuilderDominoViewCQSearch" /> <table> <columns> <column-ref ref="fc_subject" filter="true"/> <column-ref ref="inventory_obj" /> <column-ref ref="self" /> <column-ref ref="fc_depId" category="true" /> </columns> </table> </custom-descriptor> </catalog>
<?xml version='1.0' encoding='UTF-8'?> <catalog xmlns="http://www.intertrust.ru/schema/palette/cat-ui"> <column name="invPrefix" subject="${catalog.column.invPrefix.subject:Префикс}" extends="string"> <meta> <documentation>Префикс дела</documentation> </meta> </column> <column name="invNumber" subject="${catalog.column.invPrefix.subject:Номер}" extends="string"> <meta> <documentation>Номер дела</documentation> </meta> </column> <complex-column extends="object" subject="${catalog.complex-column.inventory_obj.subject:Объект дела}" name="inventory_obj" schema-ref="InventoryDoc"> <meta> <documentation>Объект документа</documentation> </meta> <column-ref ref="invPrefix" /> <column-ref ref="subject" /> <column-ref ref="id" /> <column-ref ref="invNumber"/> </complex-column> </catalog>
<?xml version='1.0' encoding='UTF-8'?> <catalog xmlns="http://www.intertrust.ru/schema/palette/cat-ui"> <view parent-ref="ProgrammedNavigator" id="inventory-all-case" name="${catalog.view.inventory_all_case.name:Список номенклатурных дел}" position="10011"> <descriptor-ref ref="inventory-all-case"/> <source> <module ident="Inventory"/> </source> </view> </catalog>
Подключить коллекцию дел к справочнику
<?xml version='1.0' encoding='UTF-8'?> <ui xmlns="http://www.intertrust.ru/schema/palette/tn-ui"> <directories> <custom-collection name="${ui.directories.custom-collection.inventory-dictionary.name: Номенклатура дел}" id="inventory-all-case"> <view-ref ref="inventory-all-case"/> </custom-collection> </directories> </ui>
Подключить справочник Дел к полю
<?xml version='1.0' encoding='UTF-8'?> <ui xmlns="http://www.intertrust.ru/schema/palette/tn-ui"> <!--form--> <section> <component> <field attribute-ref="case" name="${ui.form.RkkResourceInputForm.field.case.name:Дело:}"> <!-- Визуализация --> <appearance importance="normal" multiline="true" open-form="newTab"> <label-style> <style id="tunBorderedField"/> </label-style> </appearance> <!--Подключение справочника--> <directories relation="inventory-all-case" limit-livesearch="sys-current"> <directory-category-custom-coll attribute-ref="regPlaceID" ref="inventory-all-case"/> </directories> </field> </component> </section> <!--form--> </ui>
- Нет меток