|  12.08.2019, 17:07 | #21 | 
| Участник | Цитата: 
		
			Сообщение от fed
			   Ну я не вполне понимаю, что считается исходной задачей, но я бы попробовал создать calculated field, которое бы конкатенировало значения аналитик из упомянутых мною таблиц, без использования каких-либо дополнительных view. Ну и вообще - хотелось просто Mazzy указать, что его представления о финансовой аналитике - несколько устаревшие, мы не знаем заранее, что именно будем выбирать - это делает пользователь, выбирая нужную ему иерархию из атрибутов. по твоему подходу два вопроса: - как вообще можно сделать выборку значений из всей таблицы, зная только recId выбранных атрибутов? я не понимаю, как увязать на уровней связей таблиц имя поля значений с конкретной колонкой в той "всеобъемлющей" таблице (подозреваю хитрый ход на уровне прямого запроса в сикеле?) - как это будет масштабироваться для тех атрибутов, которых ещё нет? 
				__________________ Felix nihil admirari | 
|  | 
|  12.08.2019, 17:09 | #22 | 
| Moderator | Цитата: 
		
			Сообщение от wojzeh
			   а что именно непонятно в постановке задачи? мы не знаем заранее, что именно будем выбирать - это делает пользователь, выбирая нужную ему иерархию из атрибутов. по твоему подходу два вопроса: - как вообще можно сделать выборку значений из всей таблицы, зная только recId выбранных атрибутов? я не понимаю, как увязать на уровней связей таблиц имя поля значений с конкретной колонкой в той "всеобъемлющей" таблице (подозреваю хитрый ход на уровне прямого запроса в сикеле?) - как это будет масштабироваться для тех атрибутов, которых ещё нет? | 
|  | 
|  12.08.2019, 17:21 | #23 | 
| Участник | Цитата: допустим, конкатенация - это специфика именно моей задачи, можем и опустить эту часть в рамках более широкого исследования. хотя я не понимаю, как ты собираешься делать динамическую выборку колонок для группировки в аггрегации. 
				__________________ Felix nihil admirari | 
|  | 
|  12.08.2019, 17:30 | #24 | 
| Участник | Цитата: 2. другими словами, они и этот пункт начали делать и выкинули? госпади... что за люди. а остальные хитровыделанные таблицы и поля финансовой аналитики остались? и это хитро-кастомное поле для ввода фин.аналитики тоже осталось? а поиск со стороны пользователя то есть? о-о-очень неохота возобновлять виртуальную машину в ажуре и открывать среду разработки. | 
|  | 
|  12.08.2019, 17:34 | #25 | 
| Участник | 
				__________________ Felix nihil admirari | 
|  | 
|  12.08.2019, 17:41 | #26 | 
| Участник | 
			
			по финансовой аналитике насколько я помню не было. по inventDim - был. | 
|  | 
|  12.08.2019, 17:48 | #27 | 
| Участник | 
			
			Ну, не дави из меня слезу, Мань. Про маму твою ничего не скажу. Не знаю. А папашку твоего героицкого видеть приходилось. На фронте он, правда, не воевал, но шнифер был знаменитый. Громил сейфы, будто косточки из компота.
		 
				__________________ Felix nihil admirari | 
|  | |
| За это сообщение автора поблагодарили: mazzy (2). | |
|  12.08.2019, 17:49 | #28 | 
| Moderator | Цитата: 
		
			Сообщение от wojzeh
			   нормальная реакция на уровне рефлексов. покажешь вариант? вот у нас есть только DimensionHierarchy, которую выбрал юзер. дальше как? допустим, конкатенация - это специфика именно моей задачи, можем и опустить эту часть в рамках более широкого исследования. хотя я не понимаю, как ты собираешься делать динамическую выборку колонок для группировки в аггрегации. 
 | 
|  | 
|  12.08.2019, 17:55 | #29 | 
| Moderator | Цитата: 
		
			Сообщение от fed
			   
 | 
|  | |
| За это сообщение автора поблагодарили: mazzy (2). | |
|  12.08.2019, 18:03 | #30 | 
| Участник | 
			
			очень вдохновляют. так-то можно вообще что угодно закодить. интересно, как быстро это будет работать (вариант с 100500 колонок до неба мне сразу не нравится) кстати, пустые значения нам тоже нужны. 
				__________________ Felix nihil admirari | 
|  | 
|  12.08.2019, 18:04 | #31 | 
| Участник | 
			
			а кто вообще говорил про какие-то формы? хотим через data entity всё показывать наружу, например
		 
				__________________ Felix nihil admirari | 
|  | 
|  25.09.2019, 16:33 | #32 | 
| Участник | Цитата: X++: /// Each enterprise can expose different dimension attributes. Therefore, we have determine what dimension attributes /// columns are exposed, then concatenate the fields separated by the account delimiter. /// Example: dimensionField1 - + dimensionField2 - + dimensionField3 ... /// </remarks> private static server str displayValue() { str displayValueSql; str accountDelimiterSql; str dimensionValueColumns; str accountDelimiterEscapedSql; SysDictEnum delimiterDictEnum = new SysDictEnum(enumnum(DimensionSegmentDelimiter)); int enumValue = delimiterDictEnum.firstValue(); for (int i = 1; i <= delimiterDictEnum.values(); i++) { str enumLabel = delimiterDictEnum.index2Label(enumValue); accountDelimiterSql += strfmt( "WHEN %1 THEN '%2'\n", delimiterDictEnum.index2Value(enumValue), enumLabel); accountDelimiterEscapedSql += strfmt( "WHEN %1 THEN '%2'\n", delimiterDictEnum.index2Value(enumValue), DimensionSetEntity::generateEscapedDelimiter(enumLabel)); enumValue = delimiterDictEnum.nextValue(enumValue); } // Get the list of all dimension attributes that have metadata columns dimensionValueColumns = DimensionSchemaAndDataSynchronizationUtility::getSynchronizedDimensionValueColumnNames( tablestr(DimensionAttributeValueSet)); if (strLen(dimensionValueColumns) == 0) { // No table extension columns. displayValueSql = SysComputedColumn::returnLiteral(''); } else { str errorMessage = strReplace("@Dimension:DimensionEntitiesDimensionStructureNotCreated", "'", "''"); LanguageId systemLanguageId = SystemParameters::find().SystemLanguageId; // Determine the error message based on system language if (systemLanguageId != '') { errorMessage = strReplace(SysLabel::labelId2String2("@Dimension:DimensionEntitiesDimensionStructureNotCreated", systemLanguageId), "'", "''");; } //Create view sql displayValueSql = strfmt( @" SELECT ( SELECT CASE WHEN NonNullDisplayValue IS NOT NULL THEN NonNullDisplayValue ELSE '%4' END FROM ( -- Remove initial delimiter SELECT STUFF( (SELECT -- Prepend with delimiter and escape internal delimiters DIMENSIONSEGMENTDELIMITER + COALESCE( REPLACE(REPLACE(DIMLIST.DISPLAYVALUE, '\', '\\'), DIMENSIONSEGMENTDELIMITER, DIMENSIONSEGMENTDELIMITERESCAPED), '') FROM (SELECT TOP (1) DH.RECID FROM DIMENSIONHIERARCHY DH JOIN DIMENSIONHIERARCHYINTEGRATION DHI ON DHI.DIMENSIONHIERARCHY = DH.RECID AND DHI.ISDEFAULT = 1 AND DHI.PARTITION = T1.PARTITION WHERE DH.PARTITION = T1.PARTITION AND DH.STRUCTURETYPE = %2 ) AS DH JOIN DIMENSIONHIERARCHYLEVEL DHL ON DHL.DIMENSIONHIERARCHY = DH.RECID AND DHL.PARTITION = T1.PARTITION JOIN DIMENSIONATTRIBUTE DA ON DA.RECID = DHL.DIMENSIONATTRIBUTE AND DA.PARTITION = T1.PARTITION LEFT JOIN (SELECT DIMENSIONATTRIBUTE, DISPLAYVALUE FROM (SELECT * FROM DIMENSIONATTRIBUTEVALUESET DAVS WHERE DAVS.PARTITION = T1.PARTITION AND DAVS.RECID = T1.RECID) P UNPIVOT (DISPLAYVALUE for DIMENSIONATTRIBUTE IN (%3)) AS DIMENSIONVALUECOLUMNNAME ) AS DIMLIST ON DIMLIST.DIMENSIONATTRIBUTE = REPLACE(DA.DIMENSIONVALUECOLUMNNAME COLLATE Database_Default, '.', '$') ORDER BY DHL.DIMENSIONHIERARCHY, DHL.LEVEL_ FOR XML PATH(''), TYPE ).value('(./text())[1]', 'NVARCHAR(MAX)'), 1, LEN(DIMENSIONSEGMENTDELIMITER), '') AS NonNullDisplayValue) AS DisplayValueFormat) FROM (SELECT TOP(1) --Determine the account delimiter CASE DIMENSIONSEGMENTDELIMITER %1 END AS DIMENSIONSEGMENTDELIMITER, --Determine the account delimiter escaped CASE DIMENSIONSEGMENTDELIMITER %5 END AS DIMENSIONSEGMENTDELIMITERESCAPED FROM DIMENSIONPARAMETERS WHERE DIMENSIONPARAMETERS.PARTITION = T1.PARTITION ) AS DIMENSIONPARAMETERS ", accountDelimiterSql, enum2int(DimensionHierarchyType::DataEntityDefaultDimensionFormat), dimensionValueColumns, errorMessage, accountDelimiterEscapedSql); } return displayValueSql; } 
				__________________ Felix nihil admirari | 
|  | 
|  | 
| 
 |