Choose From Record dialog handler:
set subRecord to chooseFromRecord({Person:"KniazidisR", City:"Athens", Phone:"+3 698 00000000", Company:false})
on chooseFromRecord(aRecord as record)
-- get all existing keys as list
set oldCliboard to the clipboard
set the clipboard to aRecord
set aRecordAsList to the clipboard as list
set {theKeys, theValues} to {{}, {}}
repeat with i from 1 to count aRecordAsList by 2
set end of theKeys to item i of aRecordAsList
set end of theValues to item (i + 1) of aRecordAsList
end repeat
set the clipboard to oldCliboard
-- select some keys set from all keys
set newKeys to choose from list theKeys with multiple selections allowed
if newKeys is false then return
-- get corresponding values list
set newValues to {}
repeat with i from 1 to count theKeys
set thisKey to item i of theKeys
if newKeys contains thisKey then set end of newValues to item i of theValues
end repeat
-- Create a list containing keys subsequently followed by it's associated value
set rawList to a reference to {}
repeat with i from 1 to count newKeys
tell rawList to set {end, end} to {item i of newKeys, item i of newValues}
end repeat
-- Create a record who is similar to records containing only user defined keys in AppleEvents
set rawRecord to «class seld» of (record {«class usrf»:rawList} as record)
end chooseFromRecord
.
.
NOTE: I know, getting sub record without user interacting is simpler. But requires the explicit indicating for key-value pairs. I the sub record to get in the result is big, it will be somewhat problematic:
set sourceRecord to {Person:"KniazidisR", City:"Athens", Phone:"+3 698 00000000", Company:false}
tell sourceRecord to set subRecord to {Person:its Person, Phone:its Phone}