====DVALUES==== ===Parameters=== ^Order^Name^Type^Desc^ |1|assets|[[asset list|asset list]]|A list of assets| |2|properties|[[property list|property list]]|A list of properties| ===Returns=== Places a [[point list|list of points]] onto the stack, searching //downstream// into sub-assets if no match can be found on the assets in the list. ===Description=== Returns a [[point list|list of points]] given both a [[asset list|list of assets]] and a [[property list|list of properties]]. The properties returned from this function will **not** contain live values or history - these are usually loaded when needed by later functions, or when the values are returned. This avoids needless data loading, as requesting live data can be expensive for large numbers of points. Note that only valid points are returned - if you ask for a property on an asset that doesn't contain that property, nothing will be returned. **All** assets in each list will be compared to one-another. So you will have points for //any// asset in the asset list that has //any// property in the property list. ===Example=== **'TE101' ASSET 'Temperature' PROPERTY DVALUES** This function will return a point for Temperature on asset TE101, if such a point exists. If none can be found, it will search the //children// of that asset until either... * An asset with a //Temperature// property is located, or * No more assets remain This is useful when you aren't sure about the structure of your assets. Note that if this function has to search down-stream assets, it will only return a //single match per asset//. If there are two or more assets down-stream with the same property, one of them will be chosen based on asset ID.