odata дополнительные реквизиты

1. triviumfan 94 21.05.21 18:00 Сейчас в теме
Доброго дня, коллеги.

Потребовалось в powerBI получить данные из УТ11.
Опубликовали, настроили передаваемые данные, сопоставили поля в powerBI...
И тут понадобилось некое поле - дополнительный реквизит.
Не понимаю, почему
odata/standard.odata/Catalog_Номенклатура?$format=json&$select=Ref_Key,Description,Code,ДополнительныеРеквизиты

выводит данные + коллекцию доп реквизитов, а
odata/standard.odata/Catalog_Партнеры?$format=json&$select=Ref_Key,Description,Code,ДополнительныеРеквизиты

всегда пусто? В настройках в составе передачи, разумеется выбраны все необходимые метаданные (пвх допсвойства, номенклатура, партнеры и почти все связанные справочники).

И ещё: можно ли через odata получить значение доп реквизита как отдельное поле (json)?
Т.е. из такого ответа:
{
	"odata.metadata": ".../odata/standard.odata/$metadata#Catalog_Номенклатура",
	"value": [
		{
			"Ref_Key": "8eb50f3a-ea45-11e7-94e3-00155d000d00",
			"Description": " Atlas Copco фильтр воздушный 1631043590 Filter element 00-01-01867",
			"Code": "00-01-01867",
			"ДополнительныеРеквизиты": [
				{
					"Ref_Key": "8eb50f3a-ea45-11e7-94e3-00155d000d00",
					"LineNumber": "1",
					"Свойство_Key": "863f65c6-aadf-11e4-80be-00155d006306",
					"Значение": "8dbea7b9-aadf-11e4-80be-00155d006306",
					"Значение_Type": "StandardODATA.Catalog_ЗначенияСвойствОбъектов",
					"ТекстоваяСтрока": ""
				},
				{
					"Ref_Key": "8eb50f3a-ea45-11e7-94e3-00155d000d00",
					"LineNumber": "2",
					"Свойство_Key": "eb322a2c-c727-11e4-942f-00155d000d00",
					"Значение": "Filter element ",
					"Значение_Type": "Edm.String",
					"ТекстоваяСтрока": ""
				},
				{
					"Ref_Key": "8eb50f3a-ea45-11e7-94e3-00155d000d00",
					"LineNumber": "3",
					"Свойство_Key": "c057220b-34f3-11e5-943b-00155d000d00",
					"Значение": "497f0896-34f4-11e5-943b-00155d000d00",
					"Значение_Type": "StandardODATA.Catalog_ЗначенияСвойствОбъектов",
					"ТекстоваяСтрока": ""
				},
				{
					"Ref_Key": "8eb50f3a-ea45-11e7-94e3-00155d000d00",
					"LineNumber": "4",
					"Свойство_Key": "57636227-7b36-11ea-8984-00155d000400",
					"Значение": "true",
					"Значение_Type": "Edm.Boolean",
					"ТекстоваяСтрока": ""
				}
			]
		}
	]
}
Показать

Получить что-то вроде
{
	"odata.metadata": ".../odata/standard.odata/$metadata#Catalog_Номенклатура",
	"value": [
		{
			"Ref_Key": "8eb50f3a-ea45-11e7-94e3-00155d000d00",
			"Description": " Atlas Copco фильтр воздушный 1631043590 Filter element 00-01-01867",
			"Code": "00-01-01867",
			"ДопРеквизит": "Значение" 
		}
	]
}
Показать

Где "ДопРеквизит" - это конкретный реквизит таблицы... т.е. нужен $select='Значение' из коллекции "ДополнительныеРеквизиты" где $filter="Свойство_Key" eq '8dbea7b9-aadf-11e4-80be-00155d006306'
Вроде есть оператор items, только я не пойму как им пользоваться.
По теме из базы знаний
Найденные решения
2. triviumfan 94 24.05.21 16:45 Сейчас в теме
odata - зло.
Решил с помощью sql получить данные.
SEL ECT
	dbo.sp_getid(Партнеры._IDRRef) AS GUID, 
	--Партнеры._IDRRef,
	Партнеры._Description AS Наименование,
	ДополнительныеРеквизитыИСведения._Description AS Свойство,
	CASE ДополнительныеРеквизиты._Fld3927_TYPE 
		WHEN 0x02 THEN CONVERT(nvarchar(100), ДополнительныеРеквизиты._Fld3927_L, 1)
		WHEN 0x03 THEN CONVERT(nvarchar(100), ДополнительныеРеквизиты._Fld3927_N)
		WHEN 0x04 THEN CONVERT(nvarchar(100), ДополнительныеРеквизиты._Fld3927_T, 120)
		WHEN 0x05 THEN ДополнительныеРеквизиты._Fld3927_S
		WHEN 0x08 THEN 
			CASE ДополнительныеРеквизиты._Fld3927_RTRef
				WHEN 0x00000069 THEN ЗначенияСвойствОбъектов._Description 
				ELSE '' 
				END 
		ELSE NULL
	END AS Значение
FR OM  _Reference157 AS Партнеры 
			LEFT OUTER JOIN _Reference157_VT3924 AS ДополнительныеРеквизиты
				LEFT OUTER JOIN _Chrc697 AS ДополнительныеРеквизитыИСведения
					ON ДополнительныеРеквизитыИСведения._IDRRef = ДополнительныеРеквизиты._Fld3926RRef
				ON Партнеры._IDRRef = ДополнительныеРеквизиты._Reference157_IDRRef 				
			LEFT OUTER JOIN _Reference105 AS ЗначенияСвойствОбъектов 
				ON ЗначенияСвойствОбъектов._IDRRef = ДополнительныеРеквизиты._Fld3927_RRRef
Показать
nnnnnndfge; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. triviumfan 94 24.05.21 16:45 Сейчас в теме
odata - зло.
Решил с помощью sql получить данные.
SEL ECT
	dbo.sp_getid(Партнеры._IDRRef) AS GUID, 
	--Партнеры._IDRRef,
	Партнеры._Description AS Наименование,
	ДополнительныеРеквизитыИСведения._Description AS Свойство,
	CASE ДополнительныеРеквизиты._Fld3927_TYPE 
		WHEN 0x02 THEN CONVERT(nvarchar(100), ДополнительныеРеквизиты._Fld3927_L, 1)
		WHEN 0x03 THEN CONVERT(nvarchar(100), ДополнительныеРеквизиты._Fld3927_N)
		WHEN 0x04 THEN CONVERT(nvarchar(100), ДополнительныеРеквизиты._Fld3927_T, 120)
		WHEN 0x05 THEN ДополнительныеРеквизиты._Fld3927_S
		WHEN 0x08 THEN 
			CASE ДополнительныеРеквизиты._Fld3927_RTRef
				WHEN 0x00000069 THEN ЗначенияСвойствОбъектов._Description 
				ELSE '' 
				END 
		ELSE NULL
	END AS Значение
FR OM  _Reference157 AS Партнеры 
			LEFT OUTER JOIN _Reference157_VT3924 AS ДополнительныеРеквизиты
				LEFT OUTER JOIN _Chrc697 AS ДополнительныеРеквизитыИСведения
					ON ДополнительныеРеквизитыИСведения._IDRRef = ДополнительныеРеквизиты._Fld3926RRef
				ON Партнеры._IDRRef = ДополнительныеРеквизиты._Reference157_IDRRef 				
			LEFT OUTER JOIN _Reference105 AS ЗначенияСвойствОбъектов 
				ON ЗначенияСвойствОбъектов._IDRRef = ДополнительныеРеквизиты._Fld3927_RRRef
Показать
nnnnnndfge; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот