Администрирование
02
Сен
0

Получение метаданных CRM с помощью SQL сервера

Рассмотрим два способа, как с помощью SQL сервера получить метаданные CRM:

SQL-запрос

Первый способ – небольшой SQL-запрос (можете добавить или удалить столбцы по своему желанию):

SELECT
	EntityView.Name AS EntityName,
	LocalizedLabelView_1.Label AS EntityDisplayName,
	AttributeView.Name AS AttributeName,
	LocalizedLabelView_2.Label AS AttributeDisplayName,
	AttributeTypes.Description as Type,
	AttributeTypes.XmlType,
	AttributeView.Length,
	Accuracy,
	IsCustomEntity,
	IsMappable,
	EntityView.IsCustomizable,
	EntityView.IsRenameable,
	IsActivity,
	AttributeView.IsCustomField 
FROM
	LocalizedLabelView AS LocalizedLabelView_2
		INNER JOIN  AttributeView 
			ON LocalizedLabelView_2.ObjectId = AttributeView.AttributeId
		RIGHT OUTER JOIN  EntityView
		INNER JOIN LocalizedLabelView AS LocalizedLabelView_1
			ON EntityView.EntityId = LocalizedLabelView_1.ObjectId 
			ON AttributeView.EntityId = EntityView.EntityId
		INNER JOIN attributetypes 
			ON AttributeView.AttributeTypeId = AttributeTypes.AttributeTypeId
WHERE
	1=1
	AND LocalizedLabelView_1.ObjectColumnName = 'LocalizedName' 
	AND LocalizedLabelView_2.ObjectColumnName = 'DisplayName'
	AND LocalizedLabelView_1.LanguageId = '1049' 
	AND LocalizedLabelView_2.LanguageId = '1049'
ORDER BY EntityDisplayName, AttributeName


XQuery

Использование XQuery для парсинга XML разметки, выгружаемой при экспорте Решения, и получение всех видимых поле, включенных в Решение:

  • Выгрузите из CRM Решение содержащее один или несколько необходимых объектов;
  • Из архива выгрузите на локальный диск файл customizations.xml;
  • Откройте SQL Server Managment Studio и запустите такой скрип:
    -- declare XML variable
    DECLARE @xml XML
    
    -- import file from disk
    SELECT @xml = CAST(x AS XML)
    FROM OPENROWSET(BULK 'C:\customizations.xml', SINGLE_BLOB) AS T(x)
    
    SELECT
    	ent.vals.value('@OriginalName', 'varchar(max)') AS Entity, 
    	ent.vals.value('@datafieldname', 'varchar(max)') FieldName
    FROM @xml.nodes('for $en in //Entity
    	return ($en/Name,(for $q in ($en/FormXml/forms/systemform/form/tabs/tab/columns/column/sections/section/rows/row/cell)
    	where (empty($q/@showlabel) or ($q/@showlabel="true"))
    	return $q/control)) ') ent(vals)
    

В результатах вы увидите два столбца: название объекта и список его видимых его полей.


Комментарии (0)

*

code