Для того, чтобы на основе какой-либо сущности сделать экспорт объекта этой сущности в SQL-скрипт (для быстрого переноса элемента в другую БД), в Витакарте предусмотрен следующий механизм:

Заходим в «Администрирование»-«Дополнительные команды пользовательского интерфейса», добавляем новую команду. В поле «Наименование» вводим название вновь создаваемого действия, оно будет выводиться в меню на той сущности, для которой создаётся действие. В поле «Команда» выбираем «Действие». В поле «Отображать на сущности» выбираем TEMPLATE_FIELD. В поле хранимая процедура прописываем spx_TEMPLATE_FIELD_ExportToSql. Затем добавляем два параметра. Все данные для заполнения видны на скриншотах:

Добавляем первый параметр

 

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="http://mycompany.com/mynamespace" xmlns:js="urn:the-xml-files:xslt-csharp" xmlns:ntd="http://www.ntd.ru/ntd/" version="1.0">
	<xsl:output method="text"/>
	<xsl:template match="root">
		<xsl:for-each select="TEMPLATE_FIELD">
    declare @TemplateFieldId uniqueidentifier
    set @TemplateFieldId = '<xsl:value-of select="TemplateFieldID"/>'
    if not exists(select * from VCLib.T_TEMPLATE_FIELD where Entity = '<xsl:value-of select="Entity"/>' and AttrPath = '<xsl:value-of select="AttrPath"/>')
    insert into VCLib.T_TEMPLATE_FIELD(TemplateFieldID, Entity, AttrPath, UsersValuesOnly, CopyAttributes)
    values
    (
    @TemplateFieldId,
    '<xsl:value-of select="Entity"/>',
    '<xsl:value-of select="AttrPath"/>',
			<xsl:choose>
				<xsl:when test="string(UsersValuesOnly)">
					<xsl:value-of select="UsersValuesOnly"/>
				</xsl:when>
				<xsl:otherwise>NULL</xsl:otherwise>
			</xsl:choose>,
			<xsl:choose>
				<xsl:when test="string(CopyAttributes)">'<xsl:value-of select="CopyAttributes"/>'</xsl:when>
				<xsl:otherwise>NULL</xsl:otherwise>
			</xsl:choose>
    )
    else
    select @TemplateFieldID = TemplateFieldID from VCLib.T_TEMPLATE_FIELD where Entity = '<xsl:value-of select="Entity"/>' and AttrPath = '<xsl:value-of select="AttrPath"/>'

			<xsl:for-each select="TEMPLATE_FIELD_VALUE">
        if not exists(select * from VCLib.T_TEMPLATE_FIELD_VALUE where TemplateFieldValueID = '<xsl:value-of select="TemplateFieldValueID"/>')
        insert into VCLib.T_TEMPLATE_FIELD_VALUE(TemplateFieldValueID, TemplateField, TemplateString, Name, Category, TextValueType, TextFontSize)
        values
        (
          '<xsl:value-of select="TemplateFieldValueID"/>',
          @TemplateFieldId,
          '<xsl:value-of select="TemplateString"/>',
          '<xsl:value-of select="Name"/>',
				<xsl:choose>
					<xsl:when test="string(Category)">'<xsl:value-of select="Category"/>',</xsl:when>
					<xsl:otherwise>NULL,</xsl:otherwise>
				</xsl:choose>
          '<xsl:value-of select="TextValueType"/>',
				<xsl:choose>
					<xsl:when test="string(TextFontSize)">'<xsl:value-of select="TextFontSize"/>'</xsl:when>
					<xsl:otherwise>NULL</xsl:otherwise>
				</xsl:choose>
        )
			</xsl:for-each>
    GO
		</xsl:for-each>
	</xsl:template>
</xsl:stylesheet>

Скачать TemplatesToSQL.xslt в виде файла

 

Добавляем второй параметр

 

Добавляем в БД хранимую процедуру:

USE [AKUZDB]
GO
/****** Object:  StoredProcedure [dbo].[spx_TEMPLATE_FIELD_ExportToSql]    Script Date: 04.02.2018 18:03:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[spx_TEMPLATE_FIELD_ExportToSql]
 @TemplateFieldID uniqueidentifier,
 @xml varchar(max) out
AS
BEGIN
	set @xml = 
	(
		select 
			t.[TemplateFieldID]
		,	t.[Entity]
		,	t.[AttrPath]
		,	t.[UsersValuesOnly]
		,	t.[CopyAttributes]
		,	(
				select 
					tv.[TemplateFieldValueID]
				,	tv.[TemplateField]
				,	tv.[TemplateString]
				,	tv.[Users]
				,	tv.[Name]
				,	tv.[Category]
				,	tv.[UsersGroup] 
				,	tv.[TextValueType]
				,	tv.[TextFontSize]
				from [VCLib].T_TEMPLATE_FIELD_VALUE tv
				where tv.TemplateField = t.TemplateFieldID
				for xml path('TEMPLATE_FIELD_VALUE'), TYPE
			)
		from [VCLib].T_TEMPLATE_FIELD t
		where t.TemplateFieldID = @TemplateFieldID
		for xml path('TEMPLATE_FIELD'), root('root')
	)
END

Скачать TemplatesToSQL.sql в виде файла

 

После этих действий, на форме сущности «TEMPLATE_FIELD» должен появится пункт меню «Действие», а в этом пункте наше, вновь созданное, действие «Экспорт в SQL».

Также пункт меню «Действие» можно найти в контекстном меню, вызванном на объекте этой сущности.

 

На основе описанного механизма можно сконструировать много других полезных выгрузок.