Дерево страниц
Skip to end of metadata
Go to start of metadata

Постановка задачи

Подключить выбор дела на форму РКК

Инструмент: Палитра 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>

Создать описатели колонок

Элементы коллекции
<?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>

Создать дескриптор

Создать описатель коллекции для 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">
	<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>